Visual Studio テスト プラットフォームの進化 – パート 2

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。 【元記事】 Evolving the Visual Studio Test Platform – Part 2 2016/8/5

 

前回の記事 (英語) でお約束したとおり、この記事では現在までに Visual Studio 2015 に実装され、提供されたすべてのテスト関連機能をまとめてご紹介いたします。これらの機能はそれぞれテスト ライフサイクルの異なるステージに関連するものですが、これらの機能が目標とするところは、「効率性の向上」という 1 点となります。このことは、ライフサイクルの図に重ねてみるとわかりやすくなります。

InvestmentsShipped

では、各機能の特長についてご説明していきましょう。

  • NuGet で公開されているサード パーティ製のテスト フレームワークおよびアダプター (1) のリストに “MSTest V2 (英語)(4) が加わり、待望の新機能が追加されました。これにより、独自のサイクルでリリース、更新することが可能になるほか、テスト対象のコードの依存関係として MSTest V2 を簡単に検索、インストール、アンインストール、更新できるようになります。
  • 単体テストの作成 (英語) (2) ウィザードにより、テスト プロジェクトやプロジェクトに含まれるテスト クラスおよびテスト メソッド スタブを簡単に構成し、コード作成フローの最中にテストのブートストラップをすばやく行うことができます。
  • ただし、テスト対象のコードのロジックをもれなく実行して検証する一連の単体テストを作成することは容易ではありません。基盤となるテスト対象のコードが頻繁に変更される場合にはなおさら困難です。IntelliTest (3) はこの課題を解決するために使える機能で、一連のテストを自動的に生成し、自動的に最新の状態を維持します。
  • 増分検証 (英語) (5) では、Red (失敗)、Green (成功)、Refactor (リファクタリング) という “開発の内部ループ” をさらに短期間で実施できるように、対象のビルドで利用されたテスト コンテナー内のテストのみを選択します。[Test Explorer] ウィンドウの [Run Test After Build] コントロールをクリックすると、選択されたテストのみが実行されます。
  • Visual Studio 2015 Update 3 では、並列実行を利用しない場合でもテストの実行が高速化 (9) され、テストの検出および実施時の両方でメモリ消費量が低下 (6) しています。これらの改良は、多数のテスト コンテナーに別れた何千、何万というテストを含んでいる大規模なソリューションで特に重要になります。
  • アセンブリの解決 (8) により、テストの実行時に依存関係を読み込む場所を簡単に設定できます。この機能は、ラボ環境でインストールした製品に対してテストを実行する場合 (依存関係の DLL とテスト用の DLL を同じ場所に配置することが困難な場合) に特に便利です。
  • テストの並列実行 (英語) (10) は、すべてのテスト アダプターでサポートされています。並列処理の単位としてテスト コンテナー (実行するテストを含むファイル) を使用し、分離の単位としてプロセスを使用します。各コンテナー内では、対応するテスト フレームワークのセマンティクスに従ってテストが実行されます。この機能は、[Test Explorer] ウィンドウから直接有効化できますが、.runsettings ファイルを使用して、並列処理のレベルを追加で設定 (7) することもできます。

Visual Studio “15” Preview

これまでに、Test Explorer に関するフィードバック (英語) が多数寄せられています。これらのフィードバックについては、Visual Studio “15” Preview 2 以降で対応してまいります。

  • 名前空間別のグループ化 (英語) (11) が実装され、Test Explorer で利用可能なグループ化の種類が補完されました。
  • ビルドの失敗時に、以前のビルドからテストを実行するオプション (英語) (12) が追加されました。このオプションを変更するには、[Tools]、[Options]、[Project and Solutions]、[Build and Run] の順に選択します。
  • テストの実行時に Test Explorer が自動的に表示 (英語) (13) され、実行中のテストを簡単に確認できるようになりました。
  • テストの継続時間を正確に表すために、新しい h:mm:ss:sss 形式が使用されるようになりました (14)
  • [Summary] ウィンドウ、[Output] ウィンドウ、[Continuous Integration] ウィンドウのテスト レポートで各テストの継続時間の表示が統一されました (15)
  • さらに、継続時間別にグループ化した場合、時間のかかるテストが隠れることなく上部に表示されるように各グループのテストの並べ替えが可能になりました (16)

GroupingAndDuration

出力ログ ファイルを確認していると、ログが途中で終了し、「!!LOG TRUNCATED!! To get a complete log select “Copy All” and paste into some text editor like Notepad (!! ログが切り詰められました !! 完全なログを取得するには、[すべてコピー] を選択し、メモ帳などのテキスト エディターに貼り付けます)」というメッセージが表示される場合があります。Test Window では選択およびコピー操作がサポートされていなかったため、コードに含まれる例外メッセージなどをすばやく検索することは困難でした。Visual Studio “15” では、この問題が修正されています。

CopyFromOutputWindow

まとめ

ここでご紹介した 18 の機能は、テストの概念化からビジネス上の意思決定に利用するレポートの生成まで、ライフサイクル全体にわたって効率性を向上するという共通の目的を果たすものです。

機能ごとに 1 本ずつ記事を書き上げることもできますが、それはまた別の機会にします。その間、皆様からご意見をお聞かせいただければ幸いです。

次回予告 : vstest プラットフォームの今後の展望

次回の記事では、テスト プラットフォームの今後の方向性と、具体的な取り組みについてご説明します。

どうぞご期待ください。