kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Visual Studio Team Services CI/CDアドベントカレンダー:ビルド時のユニットテストと品質履歴を参照する(19日目)

はじめに

これはVisual Studio Team Serviceアドベントカレンダー19日目の記事です。

qiita.com

今まであまり触れてきませんでしたが、VSTSで単体テストを実施するとテストの成功率やカバレッジの記録が採取できます。これを履歴で見るとカバー率の履歴が分かります。どんな感じで表示されるのか、紹介します。

.NETでやっていますが、JavaであってもJaCoCoのコードカバレッジ形式に対応しているので、ほぼ同じことができるはずです。

テストタスクを構成する

Visual Studio Testというタスクがあるので追加します。設定できるところは非常に多いのですが、重要なポイントだけ解説します。

f:id:kkamegawa:20171219210210p:plain

vstestが認識するテスト結果のフォーマットを指定します。JUnit, NUnit, VSTest, XUnitが選択できます。

f:id:kkamegawa:20171219210208p:plain

テストアダプターのバージョンが特定のものでないといけない場合に指定します。通常はlatestで構いません。

setting fileはテストの実行時フィルタリングや明示的に設定を与えたい場合に指定します。通常、.runsettingsというファイルです。フォーマットはこちらを見てください。

.runsettings ファイルを使用して単体テストを構成する | Microsoft Docs

f:id:kkamegawa:20171219210209p:plain

テストを並列や複数のマシンで実行する設定です。ここはマルチフェーズビルドを実施する際に指定します。通常はチェックなしで構いません。

Run test in isolationはテスト実行時の分離モードを指定します。テストによっては指定しないと警告が出ますが、遅くなることがあります。

Code coverage enabledはコードカバレッジを取得します。ユニットテストであれば指定することをお勧めします。ただし、.NET Coreではまだコードカバレッジを採取する仕組みがないはずなので、実行しても無視されます(山のようにリクエストは出ています)。

f:id:kkamegawa:20171219210217p:plain

Select test usingにはTest assemblies, Test plan, Test runが選択できます。ユニットテストではTest assembliesを選択すれば自動的に対象の名前(Testsに一致するプロジェクトが生成するアセンブリ)をユニットテストと認識して実行します。

Test planはいわゆる自動テストです。Testハブからテスト計画を作ってテスト対象プログラムを自動実行します。

Test Runはテスト実行らしいのですが…どうも、テストの実行IDを指定して履歴を見るような感じなんでしょうか。まだ使ったことがないのですが、こちらを見てください。

Run automated tests from test plans in the Test hub VSTS and TFS | Microsoft Docs

テストは実行するだけでは品質データとして蓄積されません。Publish Test Resultsタスクを使ってVSTSに発行します。

f:id:kkamegawa:20171219210211p:plain

テスト計画を作る

Test Planを選択した時、TestハブでPlanを作ります。Planの名前とArea Path, Iterationを指定します。

f:id:kkamegawa:20171219210212p:plain

Planを作った後はテストケースを構築します。テストのシナリオを作り、具体的なステップを書いていきます。CI/CDアドベントカレンダーからははずれるので、深入りしませんが、ドキュメントを参考にどうぞ。

docs.microsoft.com

ビルドと品質レポート

ビルド時にカバレッジとテスト結果を発行していると、TestタブにUnitTestの結果が表示されます。このときはテストケースが一つだったので、Test数が1で100%成功ですね。

f:id:kkamegawa:20171219210213p:plain

Summaryにはコードカバレッジの結果も出ています。ブロックで50%、ソースコード行数で58%カバーしています。

f:id:kkamegawa:20171219210216p:plain

テストケースを一つ増やして2にすると、ブロックが57.89%, ソースコード行数が64.71%に向上しました。赤枠で囲んでいるところでカバレッジが上がったことが分かります。

f:id:kkamegawa:20171219210215p:plain

Download codecoverageをクリックすると、Visual Studioで開けるコードカバレッジ結果ファイルがダウンロードされます。

f:id:kkamegawa:20171219210218p:plain

未カバー率が100%のところがあるので、ダブルクリックすると、Visual Studioで該当ソースコードが開きます。

f:id:kkamegawa:20171219210219p:plain

赤で塗られているところが未カバー範囲で、薄い水色がテストでカバーされているところになります。