私たちは、Windows 8 でオペレーティング システム プラットフォームの刷新を進めながら、Visual Studio で利用できるツールセットの拡張にも取り組み、Windows 8 アプリをテストする際の生産性の向上に努めました。この新しい現代的な OS 環境で、綿密なデザインと十分なテストを通じてアプリの品質を高めれば、皆さんのアプリはより大きな成功を収めることができるでしょう。以前のブログ記事「Windows 8 で Metro スタイル アプリをテストする」では、高品質な Windows 8 アプリを作成するうえで考慮する必要のある主な分野について取り上げました。今回の記事では、アプリのテストと検証を支援する Visual Studio 2012 の機能をいくつか紹介します。

Windows 8 デバイスでのアプリの外観

アプリの成功はその主要機能にかかっていると言えますが、エンド ユーザーに気に入ってもらうためには、Windows 8 デザイン ガイドラインに従って洗練された外観を提供することも重要です。アプリのユーザー エクスペリエンスを検証する際の物理デバイスへの依存度を軽減するため、Visual Studio 2012 にはシミュレーターが搭載されています。したがって、開発中にずっとタブレット デバイスに接続している必要はありません。シミュレーターを利用すれば、あらゆるフォーム ファクターの物理デバイスをテストのために用意しなくても済む可能性が高くなります。シミュレーターは次のような分野のテストに役立ち、数回クリックするだけでアプリの外観をすばやく簡単に検証することができます。

Visual Studio のシミュレーターで Windows 8 のスタート画面を表示したところ図 1. Visual Studio のシミュレーターで Windows 8 のスタート画面を表示したところ。

Windows 8 アプリは、さまざまなフォーム ファクターのデバイスで動作します。画面サイズと解像度を変えてアプリの動作をテストできるように、Visual Studio のシミュレーターでは、これら 2 つの要素について最もよく使われる 7 とおりの組み合わせを用意しており、サポートされる最小解像度から 27 インチのデスクトップ モニターまでをカバーしています。図 1 は、シミュレーターに表示された Windows 8 のスタート画面の例を示しています。ここでは、既定の 1366x768 の解像度と 10.6 インチの画面サイズが使われています。最初に検証するべき点の 1 つは、低解像度でもアプリのレイアウトが常に画面内に収まり、縦方向にも横方向にも配置が崩れないことを確かめることです。その一方で、解像度が高い場合に空白領域が多くなりすぎるのも望ましくありません。アプリのレイアウトが画面よりも大きい場合、ユーザーがマウスでアプリを操作しているときは、スクロール バーを適切に表示する必要があります。ここで例として取り上げた検証は、シミュレーターでシミュレートされる解像度を動的に変更し、アプリの動作を自身の目で確認することで簡単に達成できます。

固定レイアウトを使うアプリでは、大きいサイズの画面に合わせてアプリが正しく拡大表示され、すべての視覚要素が適切にサイズ変更されることを確認する必要があります。アダプティブ レイアウトのアプリでは、シミュレーターを使用して、画面サイズや解像度の変更時にアプリの視覚要素が期待どおりに動的に再配置されることをすばやく検証できます。

シミュレーターを回転または逆回転させると、ユーザーが画面の向きを変えたときのアプリの動作を確認できます。この機能は、アプリが縦向きにも横向きにも正しく対応しているかどうかをテストする必要がある場合に役立ちます。シミュレーターでは加速度が影響する機能 (傾きなど) をすべてシミュレートすることはできないので、物理デバイス上でアプリを詳しく検証する必要がなくなるわけではありません。それでもこの機能により、表示デバイスの向きが変わったときのアプリの反応に関して、潜在的な問題を見つけるための時間が大幅に短縮されます。

Windows 8 デバイスでのタッチ操作に対するアプリの反応

シミュレーターでは、マウスやシミュレートされたタッチ操作によって、アプリを開発用コンピューターで対話的に操作できます。後者の方法は特に、テスト用のタッチ対応デバイスがない場合に便利です。スワイプ、ピンチ、ズーム、回転のジェスチャがすべてサポートされています。

通常は、Visual Studio からデバッグ アクションを使うことで、シミュレーター内で直接アプリを起動します。アプリの起動後もシミュレーターは動いているので、デバッグ コンテキストを離れてアプリを試すこともできます。たとえば、ユーザーがアプリのタイルをタップしたときのアクティベーション動作や、画面を上から下へスワイプしたときの終了動作を確認できます。このようなアクションを実行したり、タッチ関連のさまざまなテストと検証を行ったりするには、シミュレーターに用意されているタッチ ジェスチャを利用できます。「Windows 8 で Metro スタイル アプリをテストする」では、タッチに関連するテスト上の考慮事項を一覧形式で詳しく説明しています。このブログ記事の「タッチ」セクションを参照してください。タッチ エミュレーションの使い方など、Visual Studio シミュレーターについてより詳しく知りたい場合は、「シミュレーターでの Windows Metro スタイル アプリの実行」をご覧ください。

Windows 8 アプリの単体テスト

コードの単体テストは、開発サイクルのどの時点においても重要な工程の 1 つです。単体テストのサポートは、これまでにも Visual Studio のいくつかのリリースに含まれていました。Visual Studio 2012 では、新しい単体テスト エクスプローラーによってユーザー エクスペリエンスが効率化されます。また、基盤のテスト フレームワークとは独立した拡張可能なテスト ランナーが搭載され、NUnit、XUnit、MbUnit などの選択した単体テスト フレームワークを組み込むことも、従来どおり MSTest を使うこともできるようになりました。

Visual Studio 2012 の [New Project] (新しいプロジェクト) ダイアログ  図 2. Visual Studio 2012 の [New Project] (新しいプロジェクト) ダイアログに、C# で記述されたアプリ用の
[Unit Test Library] (単体テスト ライブラリ) プロジェクトが表示されているところ。

C#、VB.net、C++ で記述された Windows 8 アプリでは、デスクトップ アプリの開発時と同じワークフローに従う単体テスト ライブラリ プロジェクトを利用できるようになりました (図 2 を参照)。強化された機能と多くの使い慣れた機能に満足していただけると思います。内部的に、テストの実行は単体テスト サポートによってアプリ コンテナー モデル内で行われ、複雑な処理はすべて抽象化されます。単体テスト プロジェクトには独自の appxmanifest ファイルがあります。これは非常に役立ちます。テストを動作させるためには、図 3 のようにマニフェスト ファイルを編集して、各アプリの要件に対応する機能を指定しなければならない場合が多いからです。例として、テスト対象のコードが位置情報サービスやインターネット アクセスを処理している場合が挙げられます。テストするコード パスの一部でいずれかの機能が不要になる場合は、同様のテスト ケースを別の単体テスト プロジェクトにまとめて不要な機能を除外すると、コードのモジュール化を進めることができます。

パッケージ マニフェスト図 3. マニフェスト デザイナーで単体テスト プロジェクトの Package.appxmanifest ファイルを開いたところ。 

求められる品質を達成する取り組みの中で、私たちは、Visual Studio 2012 Express for Windows 8 を含む Visual Studio 2012 のすべての SKU に改良を加え、新機能を追加しました。Windows 8 アプリの単体テストを効果的に実行する方法について詳しくは、「Windows Metro スタイル アプリでの単体テストの作成と実行」と、//BUILD カンファレンスでの単体テストに関する講演 (英語) をご覧ください。

Windows 8 アプリの探索的テスト

Windows 8 アプリは、個人ユーザーにも企業ユーザーにもアピールするように設計されています。企業環境でアプリの作成に取り組んでいて、より組織的な開発工程とテスト工程が求められる場合のために、Visual Studio 2012 には手動テスト ツールである Microsoft Test Manager (英語) が用意されています。これを Visual Studio リモート ツールと組み合わせることで、あらゆる種類の Windows 8 デバイスで、アプリの機能の探索的テストや構造化された手動テストを実施できます。Microsoft Test Manager は、Visual Studio PremiumUltimate SKU、および Test Professional SKU に含まれています。Visual Studio 2012 の手動テスト ツールは TFS (英語) とシームレスに統合されるため、バグの入力やテスト ケースの管理も簡単です。さらに、リモート デバイスでのアプリのテストも行いやすくなります。テスト プロセスの実行中、アプリにバグを見つけた場合は、このツールでリモート デバイスからのスクリーン ショット、アクション ログ (英語)、イベント ログを取得できます。このツールは、メイン ワークステーションと接続されたデバイスとの間で双方向の通信を確立し、ターゲット デバイスへのアプリ パッケージの展開手順、デバイスでの開発者用ライセンスの取得、そしてテスト ステップの実行を支援します。

手動テスト ツールを TFS と統合することで、アプリのテストと開発を結ぶ途切れのないワークフローをチーム環境に構築できます。たとえば、探索中に収集された情報はバグの再現に役立ち、バグの性質をより深く理解するために使用できます。バグ修正や機能強化を含む新しいアプリ パッケージが利用可能になった場合は、手動テスト ツール内から簡単に入手して同じ Windows 8 テスト デバイスに展開し、検証を続けることができます。

詳細については、「Visual Studio 11 Beta: Windows Metro スタイル アプリの手動テスト」(英語) を参照してください。「Windows 8 Metro スタイル アプリケーションの手動テスト」(英語) では、詳しいチュートリアルをご覧いただけます。

まとめ

Windows 8 は、開発者にとってもユーザーにとっても魅力的なプラットフォームです。Visual Studio 2012 に付属するツールを紹介したこの記事が皆さんのお役に立てばさいわいです。これらのツールは、開発中の Windows 8 アプリをテストするためにすぐにお使いいただけます。今後もテスト工程の助けになる情報を提供していきたいと考えております。ご意見やご感想をお寄せください。この記事へのコメントはもちろん、皆さんがアプリのテストを通じて得たヒント、アイデア、個人的な経験などもお待ちしております。

-- Visual Studio 主任テスト マネージャー、Rui Sun

-- Visual Studio SDET、Andre Hamilton

今回の記事の作成にあたっては、Ashwin Needamangala 氏、Mete Goktepe 氏、Jake Sabulsky 氏、Jason Olson 氏、Art Becker 氏、Raul Gonzalez Tovar 氏、Peter Provost 氏、Mathew Aniyan 氏、Anutthara Bharadwaj 氏にご協力いただきました。ありがとうございました。