windowsアプリテスト自動化 [friendly+delphi]

21
Friendly+Delphi Windowsアプリテスト自動化

Upload: tatsuya-ishikawa

Post on 22-Jul-2015

336 views

Category:

Software


1 download

TRANSCRIPT

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

Friendly+Delphi

Windowsアプリテスト自動化

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

石川達也

Microsoft MVP for C#

株式会社Codeer代表取締役

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

自己紹介

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

Friendly とは?

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

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

目的

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

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

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

Field、Property、MethodNative

DLL公開関数

②DLLインジェクション

基本機能

Only One!

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

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

Win32(TXXにも使える)

WinForms WPF

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

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

Codeer で検索

eが一個多い

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

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

デモやります。

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

うちDelphiなんだけど?

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

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

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

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

デグレ厳禁!

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

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

Field、Property、MethodNative

DLL公開関数

・DLLインジェクション

Delphiアプリに使える機能

結構、いける!

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

でも・・・

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

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

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

Page 14: Windowsアプリテスト自動化 [Friendly+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”);

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

DLLインジェクション

FriendlyDelphi.dll

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

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

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

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

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

FriendlyDelphi.dll

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

DLL公開関数呼び出し

FriendlyDelphi.dll

実行関数名、引数を渡す

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

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

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

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

FriendlyDelphi.dll

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

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

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

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

・Codeer.Friendly.Windows.NativeStandardControls

・Ong.Friendly.FormsStandardControls

・RM.Friendly.WPFStandardControls

・VSHTC.Frienldy.PinInterface

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

join us !

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