SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Visual Studio 単体テスト機能大全

Visual Studioで作る単体テスト、UI操作の自動実行

Visual Studio 単体テスト機能大全(6)

  • X ポスト
  • このエントリーをはてなブックマークに追加

補足や注意事項

 以上で自動UIテストを利用して、Windowsアプリケーションのテストを実行するところまでを見てきましたが、何点か補足と注意事項を確認しておきましょう。

 まずは、記録されたテストの中身を確認しておきます。図8でCodedUITestMethod1メソッドを見ると3行の呼び出しメソッドがあります。これはテストビルダーでコードの生成をクリックした回数とちょうど一致しています。このようにコードの生成をクリックするためにそこまでの記録が1つのメソッドとしてまとめて定義されるという形になっています。いずれのメソッドもUIMapプロパティを経由して呼び出されていますが、このUIMapが実際に記録された操作の情報を保持しているクラスとなっています。ソリューションエクスプローラー上で「UIMap.uitest」ファイルを開くと図10のようなxmlによる定義情報が表示されます。

図10:UIMapの中身
図10:UIMapの中身

 例えば、図10で44行目~49行目を見てみると、SendKeyActionとしてWindowsキーとRキーを押したことを示す情報が記述されています。このファイルを1つ1つ見ていくとすべての操作の記録を確認することが可能です。また、「UIMap.uitest」ファイルに記録された情報から「UIMap.Designer.cs」ファイルが作成されていて、ここには例えばRecordedMethod1メソッドなどがあり、記録された操作をコード化したものを確認することもできます。

 次に、今回は自動UIテストの利用方法を簡単に確認するため、既存のアプリケーションに対してテストを作成、実行しましたがもちろん本来は自身で作成したアプリケーションをテストするために利用します。基本的にはほとんどのアプリケーションをテスト対象にすることができますが、自動UIテストでサポートされる主な構成は表1のとおりです。

表1:自動UIテストでサポートされる構成
種類 状況 備考
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にはその作業を軽減するための仕組みが多数用意されていました。少しずつでも単体テストの数を増やしていけるようにぜひチャレンジしてみてください。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Visual Studio 単体テスト機能大全連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト りばてぃ(リバティ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6273 2011/11/21 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング