Windowsアプリテスト自動化 [Friendly+delphi]

Preview:

Citation preview

Friendly+Delphi

Windowsアプリテスト自動化

石川達也

Microsoft MVP for C#

株式会社Codeer代表取締役

C, C++, C#, Java, Delphi(1W)

自己紹介

Friendly とは?

Windowsアプリのテストを自動化するためのライブラリです。

目的

どちらかというと、システムテスト

①内部メソッドの呼び出し.Net

Field、Property、MethodNative

DLL公開関数

②DLLインジェクション

基本機能

Only One!

基本内部メソッド操作、DLLインジェクション

Win32(TXXにも使える)

WinForms WPF

GUI操作も簡単かつ確実にできる上位ライブラリも

Codeer で検索

eが一個多い

Nugetで無料で入手できます!

デモやります。

うちDelphiなんだけど?

話を聞くと、結構あります。

Windows系のDelphiアプリは、歴史あるアプリが多いようです。しかも、今もバージョンアップし続けています。

それらにこそ、自動化された回帰検査が必要!

デグレ厳禁!

・内部メソッドの呼び出し.Net

Field、Property、MethodNative

DLL公開関数

・DLLインジェクション

Delphiアプリに使える機能

結構、いける!

でも・・・

Delphiの内部メソッドも呼び出せるかも?

それができたら、超便利!

Type Target = class;public

class function Instance : Target; static;function Func(value : string ) : Int32;

end;

//ここは普通var app = new WindowsAppFriend(process);

//拡張メソッドで実現。//staticなメソッド呼び出し。dynamic obj = app.Delphi("Target").Instance();

//インスタンスのメソッド呼び出し。Int ret = obj.Func(“123”);

DLLインジェクション

FriendlyDelphi.dll

function InvokeStatic(pInvokeInfo : InvokeInfo) : ReturnInfo ; stdcall ;begin

//リフレクションを使って、指定のstaticメソッドを実行!end

function InvokeInstance(obj : TObject, pInvokeInfo : InvokeInfo) : ReturnInfo ; stdcall ;begin

//リフレクションを使って、対象のオブジェクトのメソッドを実行!end

FriendlyDelphi.dll

DLL公開関数呼び出し

FriendlyDelphi.dll

実行関数名、引数を渡す

dynamic obj = app.Delphi("Target").Instance();

Int ret = obj.Func(“123”);

内部でリフレクション実行!

FriendlyDelphi.dll

一緒に作ってくれる人募集中!

実は、Friendlyを使ったライブラリはいくつか作ってもらっています!

・Codeer.Friendly.Windows.NativeStandardControls

・Ong.Friendly.FormsStandardControls

・RM.Friendly.WPFStandardControls

・VSHTC.Frienldy.PinInterface

join us !

ご清聴ありがとうございました。よろしくお願いします。

Recommended