読者です 読者をやめる 読者になる 読者になる

ささいなことですが。

Windowsアプリテスト自動化ライブラリFriendly開発者の日記です。

Friendly ハンズオン 12 TestAssistant(キャプチャリプレイもできますw)

今回はTestAssistantというツールを使ってみます。
タイトルは若干釣りです。
キャプチャリプレイ好きな人もいるのでw

TestAssistantとは

Friendlyとその上位ライブラリを使ったテストの作成の効率を上げるためのツールです。

何ができるの?

意外と多機能なのです。

  • 画面の解析
  • タイプの解析
  • メッセージ解析
  • キャプチャリプレイ
  • スクリプトの実行

C#とFriendlyについての理解が必要です。

「そんな便利なものあるなら先に言ってくれればいいのに」って思うかもしれませんね。でもこれも順番があるのですよ。C#はもちろんFrienldyについての理解が無ければ逆に誤解を与えるのです。ていうか、使いこなせませんしね。最初のころは、このツールもまとめて説明していたので、混乱させてましたね。人によってはこのツールのことをFriendlyって思ったようです。
もちろんそうではなくて、このツールはオマケで、メインはFrienldyというライブラリなのです。(それも基本部分と上位ライブラリに分かれるのですけどね Frienldy いまさら概要と学習計画 - ささいなことですが。)

ハンズオン

操作対象

まずは、WinFormsアプリに使ってみましょう。ハンズオン7で操作したアプリを操作してみます。
ダウンロードはこちらから。
Ishikawa-Tatsuya/HandsOn7 · GitHub
こんなアプリですね。
f:id:ishikawa-tatsuya:20141229145723p:plain

TestAssistantダウンロード

こちらからダウンロードしてください。
ダウンロード - 株式会社Codeer (コーディア)
Zip解凍→自己解凍で使えます。
実はフォルダコピーで使えるものです。自己解凍にしているのは、「ブロック解除」を忘れないためだけです。

起動

解凍フォルダはこんな感じです。
Start_AnyCpu.vbsとStart_x86.vbsがありますね。操作対象のアプリにあった方を実行してください。これ実は単なるショートカットです。TestAssistantフォルダ内にexeが複数入っていて選択するのが面倒なので外に作っただけです。
今回はStart_x86.vbsを実行してください。
f:id:ishikawa-tatsuya:20150110225202p:plain
こんな感じの画面になります。
f:id:ishikawa-tatsuya:20150110225229p:plain

アタッチ

では、アタッチしてみます。
まず、左上のボタンを押してください。そうするとテストプロセス選択ダイアログが表示されますので、TargetFormを選択してください。
f:id:ishikawa-tatsuya:20150110230748p:plain

スクリプト実行

C#スクリプトを実行する機能があります。1関数のみです。実行すると、この関数が呼び出されます。引数に接続されているアプリにアタッチしたWindwsAppFriendが渡ってきますので、それを使って操作します。
ここで簡単に試して、実際のテストコードに持って行くのが一般的な使い方です。一回やってみましょう。このコードを張り付けてください。

WindowControl mainForm = WindowControl.FromZTop(app);
FormsComboBox _comboBox = new FormsComboBox(mainForm.Dynamic()._comboBox);
_comboBox.EmulateChangeSelect(3);

で、実行してみましょう。
f:id:ishikawa-tatsuya:20150111121805p:plain
コンボボックスの選択がかわりましたね。

画面解析

ここからは動画で説明していきます。細かいので、可能ならフルスクリーンで見てください。

TestAssistant 画面解析デモ - YouTube

操作キャプチャ


TestAssistant キャプチャリプレイデモ - YouTube
はい。キャプチャリプレイ'的な'機能です。
これは、あくまで参考程度にとどめておいてください。「このコントロールどう操作するのかなー」って時にやってみて、「あーこのラッパークラス使えばいいのね」って感じです。
それから、知っているラッパークラスの操作をキャプチャでします。そのため、「マウスクリック」とかの低レベルなAPIではなく、「選択変更」のようなリッチなインターフェイスが出力されるのですね。
あと、一画面づつしかキャプチャできません。

不具合解析なんかにも使えます。

内部状態を取得できたり、簡単に内部的な操作を呼び出せるので、ちょっと工夫するとデバッグにも非常に便利に使用できます。実際僕もデバッグにこれを使ったりしています。

次回はアプリケーションドライバについてです。