ユニットテストの高速化

Incredibuild for Unit Tests を使えば、ローカルやクラウド ネットワーク上のマシンで待機中の CPU コアを活用して、ユニットテストを高速化できます。アセンブリ テスト (データベース、フレームワークなどを含む) を実行する場合、既存のソリューションでは専用マシンにテスト環境をいくつも用意する必要がありますが、Incredibuild for Unit Tests なら、環境内のマシンに Incredibuild Agent をインストールするだけで、テストのパフォーマンスを拡大し、テスト プロセスを大幅に高速化することができます。専用マシンや面倒なインストールなしでも、CI プロセスごとにテストをより多く、より速く実行することで、製品の質を向上させ、市場投入までの時間を短縮することができます。

Incredibuild for Unit Tests は NUnit、Google Test、XUnit、MSTest / VSTest などの主要なユニットテスト フレームワークに対応しています。

既存ソリューションのしくみ

ユニットテスト フレームワークの高速化オプションは次の通りです。

  • 1 台のマシンで並列実行: フレームワークの中には、同じマシン上の複数のコアを利用してプロセスを並列実行できるものがあります。この場合、例えば 120 件のテストがあれば、4 コアのマシン 1 台で 30 件のテストを並行して実行できますが、すべてのテスト フレームワークがこのオプションをサポートしているわけではなく、実行したいテストの種類によって様々な問題があります。
  • 複数のマシンで並列実行: 一般的にユニットテスト フレームワークは、複数のマシンでの高速化をサポートしていません。理論的には異なるマシンで別のアセンブリ (DLL) を実行することは可能ですが、そのためには、それぞれのマシンにテストの実行環境をインストールする必要があります。

Incredibuild for Unit Tests のしくみ

Incredibuild for Unit Tests ではローカルやリモートの CPU コアの数に関係なく、ユニットテストの並列実行が可能です。どんなマシンのアイドル CPU でも使用できるので、専用のマシンは不要です。また、処理に参加するマシンにテスト環境をインストールする必要もありません。

Incredibuild はテストを実行したマシンの環境をシミュレートしながら、ネットワーク上のリモートマシンに仮想プロセスを分散します。これにより、プロセスは開始マシン上で実行されているかのようにリモートマシン上で処理され、開発者が行うテストだけでなく、CI によって実行されるテストも高速に処理されます。Incredibuild によって何百ものコアを使えるようになったことで、開発者は修正を GIT にコミットする前にテスト スイート全体を実行することができます。部分的なテストで妥協する必要はありません。また、CI の失敗ビルドが劇的に減るので、担当者と開発者間の無駄なやり取りをなくすことができます。

このソリューションには次のコンポーネントが含まれています。

  • Initiator Agent: テスト フレームワークがインストールされています。実行を開始します。

  • Helper Agent: リモートマシンにインストールします (1 台または必要な数だけ)。Helper として使用するマシンには Incredibuild Agent 以外のソフトウェア(テスト フレームワークやその他のテスト環境リソース) をインストールする必要はありません。

  • Coordinator: どのマシンにもインストールできますが、可用性の高いマシンが推奨されます。任意で Backup Coordinator もインストールできます。