UI操作を伴うテスト
自動UIテストでは、さまざまな種類のアプリケーションをテスト対象にすることができます。今回は手順を覚えることを主眼に置くため、簡単なアプリケーションとして、Windowsに標準搭載の電卓を例に操作を行っていきます。
操作手順
今回のUI操作のシナリオは以下のとおりです。
- [Windows]キー + [R]で[ファイル名を指定して実行]を表示
- キーボードで「calc.exe」と入力して電卓を実行
- マウスで[123]、[+]、[456]、[=]と順番に入力
- 計算結果が[579]であることを確認
- 電卓を終了
では、VS 2010を起動して、テストプロジェクトを準備します(本稿に付属の事前のサンプルファイルはこの状態となっています)。次にソリューションエクスプローラーで、テストプロジェクトのコンテキストメニューから[追加]-[コード化されたUIテスト]を選択します。すぐに図1のように自動UIテストの作成方法を問うダイアログが表示されます。ここでは[操作の記録、UIマップの編集、またはアサーションの追加]を選択して、[OK]をクリックします。
VS 2010が最小化され、しばらく待つとデスクトップ右下に図2のようなツールバーが表示されます。
これは、テストビルダーと呼ばれるもので、このツールを利用してUI操作の記録を行い、操作記録をC#などのソースコードとして出力する作業を行います。このツールは左のボタンから順に記録の開始、記録されたステップの表示、アサーションの追加、コードの生成を行うためのボタンとなっています。ここでは、[記録の開始]をクリックして操作を開始します。[記録の開始]をクリックするとテストビルダーの表示が図3のようになります。
一番左のアイコンが変更され、この状態が操作の記録中であることを示しています。記録を一時停止する場合は[記録の一時停止]ボタンを押すことで中断することができます。
では、テストビルダーが図3の状態になっていることを確認し、冒頭に示した手順を実行します。手順3まで実施したら一度、[記録の一時停止]を押して作業を一時中止します。このときはテストビルダーの[記録されたステップの表示]をクリックすると図4のように記録された操作の一覧を確認することができます。
この一覧は操作の記録中でも表示することができ、もし操作を間違えてしまった場合は記録された一覧から対象行を選択して、[Delete]キーを押せば記録を削除することができます。
次に、電卓の計算結果が[579]になっていることを確認するために検証処理(自動UIテストではアサーションと呼びます)を追加します。アサーションを追加するためには今までに記録した操作を一度コード化する必要があるため、まずはテストビルダーで[コードの生成]をクリックし、図5の画面でメソッド名を決め、[追加と生成]ボタンをクリックします。
コード化を行うと、テストビルダー右から2番目の[アサーションの追加]を利用できるようになります。[アサーションの追加]ではこのボタンをマウスでドラッグして、電卓の計算結果部分にドロップします。青い太枠がナビゲートしてくれるので適切なポイントでドロップするようにしてください。この操作がうまくいくと、図6のようにUIコントロールマップに読み取った情報が表示されます。
今回は表示状態が[579]であることを確認するので、DisplayTextプロパティが579になっていることを確認し、[アサーションの追加]をクリックします。図7のようにアサーションに関する設定が表示されるので、そのまま[OK]をクリックします。
アサーションの追加を行った後は、再度コードの生成を行って、今の操作に関するコードを生成しておきます。最後に[記録の再開]をクリックして、表示中の電卓を閉じる操作を行った後で、記録の一時停止、コードの生成を行うと一連の作業は終了となります。この時点でテストビルダーは閉じてしまって構いません。VS 2010に戻ると図8のように「CodedUITest1.cs」ファイルにCodedUITestMethod1メソッドがあり、メソッド内には3行のメソッド呼び出しが定義されています。
これは、通常の単体テストメソッドと同じ扱いをすることができ、同じように実行することができます。試しに実行してみると図9のような結果を得ることができます。
本稿に付属の「作業後のサンプルファイル(CodeZine-Test-06_after.zip)」は、図8までの作業を行い、テストを実行する直前の状態で保存したものとなっています。このサンプルはWindows 7を利用して作成しており、異なるOSでは動作しない可能性がありますのでご了承ください。



