Visual Studio 2010を利用すると、UIテストを自動化することができます。
前回は複数回クリックを行う動作を自動化しました。今回は、クリック後の画面に出力された結果の判定を自動化します。
例として、5回クリックすると出力が間違ってしまうWebサイトを利用します。
今回利用するサイト
以下のようなサイトで5回"Button"をクリックすると、"クリックされました"となるべきところが"クリックされした"と表示されてしまうサイトを利用します。
*コードは後述しますが、Visual StudioのUIテストの自動化には、テストされる側のソースコードは必要ありません。
UIテストの自動化
1. Visual Studioを開き、新規作成→プロジェクトからテスト→テスト プロジェクトを選択します。
2. 今回はUI Testなので、UnitTest1.csを削除して"コード化されたUIテスト"を追加します。
3. 以下のようなダイアログが出てきます。
新規なので、"操作の記録、UIマップの差編集、またはアサーションの追加"を選択します。
4. デスクトップ右下に以下のようなものが表示されます。
5. 赤丸をクリックするとUIのステップが記録されます。
6. 赤丸が二重線に変わります。
7. 今回は"Button"を一回クリックします。
8. その後二重線を押して記録を終了します。
9. 一番右のボタンをクリックし、記録したものをプログラムで使用するためのメソッド名を記入し、"追加と作成"をクリックします。
10. 右から二番目のアイコンを、チェックしたい出力値(今回は"クリックされました"の部分)にドラッグアンドドロップします。
図のように青く囲まれるので、わかりやすいです。
11. 以下のような画面になるので、InnerTextをクリックの後"アサーションの追加"をクリックします。
12. 今回は、出力値が"クリックされました"と等しいのかを調べたいので、比較子を"AreEual"にし、比較対象値が"クリックされました"であることを確認し、その後OKを押してダイアログを終了します。
13. 一番右のアイコンをクリックし、メソッドを作成し、"追加と生成"をクリックします。
14. ×を押してレコーディングツールを終了します。
15. Visual Studioの画面に戻るので、CodedUITest.csに移動しCodedUITestMethod1()を修正します。
今回はButtonを10回押しても出力が問題ないテストを行うという以下のコードに修正します。
[TestMethod]
public void CodedUITestMethod1()
{
for (int i = 0; i < 10; i++)
{
this.UIMap.PushButton();
this.UIMap.CheckText();
}
}
補足
1. 今回のサンプルWebアプリを作成するには、Visual Studioを開き、新規作成→プロジェクトよりWeb→ASP.NET Webアプリケーションを作成し、デザインよりボタンとラベルを追加します。
ボタンをダブルクリックして以下のコードを記入します。
static int i = 0;
protected void Button1_Click(object sender, EventArgs e)
{
if (i < 5)
{
Label1.Text = "クリックされました";
i++;
}
else
{
Label1.Text = "クリックされした";
i = 0;
}
}