補足や注意事項
以上で自動UIテストを利用して、Windowsアプリケーションのテストを実行するところまでを見てきましたが、何点か補足と注意事項を確認しておきましょう。
まずは、記録されたテストの中身を確認しておきます。図8でCodedUITestMethod1メソッドを見ると3行の呼び出しメソッドがあります。これはテストビルダーでコードの生成をクリックした回数とちょうど一致しています。このようにコードの生成をクリックするためにそこまでの記録が1つのメソッドとしてまとめて定義されるという形になっています。いずれのメソッドもUIMapプロパティを経由して呼び出されていますが、このUIMapが実際に記録された操作の情報を保持しているクラスとなっています。ソリューションエクスプローラー上で「UIMap.uitest」ファイルを開くと図10のようなxmlによる定義情報が表示されます。
例えば、図10で44行目~49行目を見てみると、SendKeyActionとしてWindowsキーとRキーを押したことを示す情報が記述されています。このファイルを1つ1つ見ていくとすべての操作の記録を確認することが可能です。また、「UIMap.uitest」ファイルに記録された情報から「UIMap.Designer.cs」ファイルが作成されていて、ここには例えばRecordedMethod1メソッドなどがあり、記録された操作をコード化したものを確認することもできます。
次に、今回は自動UIテストの利用方法を簡単に確認するため、既存のアプリケーションに対してテストを作成、実行しましたがもちろん本来は自身で作成したアプリケーションをテストするために利用します。基本的にはほとんどのアプリケーションをテスト対象にすることができますが、自動UIテストでサポートされる主な構成は表1のとおりです。
種類 | 状況 | 備考 |
OS | Windows XP SP3 | Windows Serverを利用する場合はIEのセキュリティ強化をオフにする必要あり |
Windows Vista SP1以降 | ||
Windows 7 | ||
Windows Server 2003 SP1以降 | ||
Windows Server 2008 | ||
Windows Server 2008 R2 | ||
アーキテクチャ | x86, x64 | |
.NET | 2.0, 3.0, 3.5, 4 | |
IE | IE7, IE8, IE9 | IE9のサポートにはVS 2010 SP1が必要 |
Silverlight | Silverlight 4のみ | VS 2010 Feature Pack 2が必要 |
Winアプリ | Windows Form 2.0以降 | |
WPF 3.5以降 |
ここに表記のないバージョン、テクノロジー、ブラウザなどの場合は一部動作する可能性があるか、サポートがないかのいずれかとなります。また、サポートを得るためにVS 2010の他に追加のインストールが必要となる場合もあるので注意してください。なお、より詳しい内容についてはMSDNライブラリのコード化されたUIテストと操作の記録でサポートされている構成とプラットフォームを参照してください。
次に自動UIテストを実行する際ですが、自動UIテストでは、キーボード操作やマウス操作を人に変わって実際に動かしてテストを行います。このため、テスト中に人によるキーボード操作やマウス操作が行われてしまうとテストが正しく行われなくなってしまうという問題があります。テスト中はPCを操作しないように気を付けてください。
マウス操作のエミュレーションについてはもう一つ注意事項があります。マウスでクリックする場所の記録は対象となったウィンドウ(デスクトップ上で表示されていた対象のアプリケーションの画面)の左上からの相対パスで位置を記録しています。このため、同じOSでWindows Aeroスタイルとクラシックスタイルなどとテーマが異なっていたり、Windows XPとWindows 7でのテーマの違いなどにより、位置がずれてしまいうまくクリックが行えないという事象が発生することがあります。コード化されたテストを修正したり、独自のロジックを利用することで位置を微調整することは可能ですが、可能な限り操作の記録を行った時と同じOS同じテーマを利用してテストを行うようにした方が簡単に実行することができます。
まとめ
今回は、自動UIテストを利用して、Windowsアプリケーションをテストする方法について取り上げました。使い方に多少のくせがありますが、うまく活用することでイベントハンドラをテストするための単体テストを記述する量を減らしたり、アプリケーションの回帰テストの効率を上げたりすることができますので、自分なりの方法を検討してみてください。
本稿をもって、Visual Studioで作る単体テストの連載は終了となります。もっとも基本的な単体テストの作成方法からデータベースやWindowsアプリなど込み入ったものをテストする方法までさまざまな方法を見てきましたが、これらを利用することで単体テストレベルではほとんどのシナリオをカバーすることは可能ではないでしょうか。テストを自動化するのは難しい作業である場合もありますが、VS 2010にはその作業を軽減するための仕組みが多数用意されていました。少しずつでも単体テストの数を増やしていけるようにぜひチャレンジしてみてください。