バッチビルドで並列テストを実行する - AWS CodeBuild

バッチビルドで並列テストを実行する

AWS CodeBuild を使用すると、バッチビルドで並列テストを実行できます。並列テスト実行は、複数のテストケースを順番に実行するのではなく、異なる環境、マシン、またはブラウザ間で同時に実行するテストアプローチです。このアプローチにより、全体的なテスト実行時間を大幅に短縮し、テスト効率を向上させることができます。CodeBuild では、テストを複数の環境に分割し、同時に実行できます。

並列テスト実行の主な利点は次のとおりです。

  1. 実行時間の短縮 - 数時間かかるテストを数分で完了できます。

  2. リソース使用率の向上 - 利用可能なコンピューティングリソースを効率的に使用できます。

  3. 早期のフィードバック - テストの完了が早いほど、開発者にすばやくフィードバックできます。

  4. 費用対効果 - 時間とコンピューティングコストの両方を長期的に節約できます。

並列テスト実行を実装する場合、2 つの主なアプローチとして、一般的に個別の環境とマルチスレッドを検討できます。どちらの方法も同時テストの実行を目指していますが、その実装と有効性は大きく異なります。個別の環境では、各テストスイートが個別に実行される独立したインスタンスが作成され、マルチスレッドでは、複数のテストが異なるスレッドを使用して同じプロセススペース内で同時に実行されます。

マルチスレッドと比較した場合、個別の環境の主な利点な次のとおりです。

  1. 分離 - 各テストは完全に分離された環境で実行されるため、テスト間の干渉がなくなります。

  2. リソースの競合 - マルチスレッドでは頻繁に発生する共有リソースとの競合がありません。

  3. 安定性 - 競合状態や同期の問題が発生しにくくなります。

  4. デバッグが容易 - 各環境が独立しているため、テストが失敗した場合でも原因を容易に特定できます。

  5. 状態管理 - マルチスレッドテストの弱点である共有状態の問題を簡単に管理できます。

  6. スケーラビリティの向上 - 複雑な操作なしで環境を簡単に追加できます。

AWS CodeBuild でのサポート

AWS CodeBuild は、個別の環境実行を活用するように特別に設計されたバッチビルド機能を通じて、並列テスト実行を強力にサポートします。この実装により、分離されたテスト環境の利点がすべて実現します。

テストディストリビューションを使用したバッチビルド

CodeBuild のバッチビルド機能を使用すると、同時に実行される複数のビルド環境を作成できます。各環境は、独自のコンピューティングリソース、ランタイム環境、依存関係を持つ完全に分離したユニットとして動作します。バッチビルド設定を使用して、必要な並列環境の数と、それらの環境間にテストを分散する方法を指定できます。

テストシャーディング CLI

CodeBuild には、CLI ツールである codebuild-tests-run を通じてテスト分散メカニズムが組み込まれており、テストが異なる環境に自動的に分割されます。

レポートの集約

CodeBuild の実装の主な強みの 1 つは、テスト結果の集約をシームレスに処理できることです。テストが個別の環境で実行されている間、CodeBuild は各環境からテストレポートを自動的に収集し、バッチビルドレベルで統合テストレポートに結合します。この統合により、並列実行の効率上の利点を維持しながら、テスト結果を包括的に把握できます。

以下は、AWS CodeBuild での並列テスト実行の詳細な概念を示す図です。

並列テスト実行の概念図。