テスト分割について
AWS CodeBuild のテスト分割機能を使用すると、複数のコンピューティングインスタンス間でテストスイートの実行を並列化できるため、全体的なテスト実行時間を短縮できます。この機能は、CodeBuild プロジェクト設定のバッチ設定と buildspec ファイルの codebuild-tests-run ユーティリティを通じて有効になります。
テストは、指定されたシャーディング戦略に基づいて分割されます。CodeBuild には、以下に示すように 2 つのシャーディング戦略が用意されています。
- 均等分散
-
equal-distributionシャーディング戦略では、テストファイル名のアルファベット順で、並列ビルド間にテストが分割されます。このアプローチでは、まずテストファイルがソートされ、次にチャンクベースの方法を使用してファイルが分散されます。これにより、類似したファイルがテストのためにグループ化されます。このアプローチは、比較的小さいテストファイルセットを扱う場合に推奨されます。この方法は、各シャードにほぼ等しい数のファイルを割り当てることを目的としていますが (最大差は 1)、安定性は保証されません。以降のビルドでテストファイルが追加または削除されると、既存のファイルの分散が変更され、シャード間に再割り当てされる可能性があります。 - 安定性
-
stabilityシャーディング戦略では、一貫したハッシュアルゴリズムを使用してテストがシャード間に分割されます。これにより、ファイルの分散が安定します。新しいファイルが追加または削除されても、このアプローチでは、ファイルからシャードへの既存の割り当てはほとんど変更されません。大規模なテストスイートでは、安定性オプションを使用してテストをシャード間に均等に分散することをお勧めします。このメカニズムは、ほぼ均等な分散を行うことにより、各シャードにほぼ同数のファイルを割り当て、相違を最小限に抑えることを目的としています。安定性戦略では、理想的な均等分散は保証されませんが、ファイルが追加または削除された場合でもほぼ均等に分散され、ビルド間でファイル割り当ての一貫性が維持されます。
テスト分割を有効にするには、CodeBuild プロジェクト設定でバッチセクションを設定し、必要な parallelism レベルやその他の関連パラメータを指定する必要があります。さらに、buildspec ファイルに codebuild-tests-run ユーティリティと、適切なテストコマンドおよび分割方法を含める必要があります。