メインコンテンツまでスキップ

テストシャーディング

テストシャーディングとは、自動テストの大規模なスイートを小さな単位(シャード)に分割し、異なるランナー上で並列実行できるようにするプロセスです。これにより、変更に対するフィードバックを開発者に提供するまでの時間を大幅に短縮し、集中力を保ちながら素早く反復作業を行えるようになります。

Bitriseはプロジェクトの種類や、シャーディングの最適化計算をBitriseに行わせたいかどうかに応じて、すぐに使える簡単なテストシャーディング最適化機能を提供します。

Project typeSharding with your own shard optimization calculationSharding with shard optimization calculation provided by Bitrise
iOSParallelismParallelism + Xcode Test Shard Calculation Step
AndroidParallelismParallelism + Gradle Runner Step

独自のテスト分割計算によるシャーディングClick to copy link​

すでにシャーディング用の最適なテスト分割を計算する手段をお持ちの場合は、Pipelinesのparallelism機能を使ってテストシャーディングを設定できます。

Parallelismは、同じWorkflowを別々の仮想マシン上で並列実行します。必要なコピー数は、Workflowのparallelプロパティを設定することで手動で指定します。

...
workflows:
test-without-building:
depends_on: [build-for-testing]
parallel: 5
...

各コピーには、2つの新しいEnvironment Variablesが渡されます。

  • $BITRISE_IO_PARALLEL_INDEX: Workflowの各コピーに割り当てられる、0から始まるインデックスです。
  • $BITRISE_IO_PARALLEL_TOTAL: コピーの総数です。

これらのEnvironment Variablesを活用してテストシャーディングを実行できます。例えば、Jestの場合:

jest --shard=$((BITRISE_IO_PARALLEL_INDEX + 1))/$BITRISE_IO_PARALLEL_TOTAL

または、yarnの場合:

yarn test --ci --silent --shard=$((BITRISE_IO_PARALLEL_INDEX + 1))/$BITRISE_IO_PARALLEL_TOTAL

parallelismの設定方法について詳しくは、ガイドをご確認ください: Parallelism in Pipelines。

Bitrise Stepがテスト分割を計算するシャーディングClick to copy link​

Bitrise Stepsが提供する最適化アルゴリズムに基づいて自動的にテストをシャーディングするPipelineを用意できます。これはiOSとAndroidの両方のプロジェクトでサポートされています。

以下を行う必要があります:

  • アプリのビルドとテストの両方を行うPipelineを作成します。
  • シャード計算を行うStepsを、アプリをビルドするWorkflowに追加します。iOSプロジェクトの場合はXcode test shard calculation Step、Androidプロジェクトの場合はGradle Runner Stepです。
  • テスト用のWorkflowの複数のコピーが並列実行されるよう、parallelismを設定します。
  1. 必要なシャード数を格納する環境変数を作成します。例えばNUMBER_OF_SHARDSのようにします。

  2. アプリ(Xcode)をビルドするWorkflowに、Xcode test shard calculation Stepを追加します。

  3. Stepをクリックしてオプションメニューを開き、Configurationタブに移動します。

  4. Product path入力欄に、新しく作成した環境変数を追加します。

    shard-calculate-product-path.png

  5. 同じWorkflowにDeploy to Bitrise.ioStepを追加します。

  6. Pipeline Intermediate File Sharingの入力グループを見つけます。

  7. Files to share between Pipeline Workflows入力欄に、環境変数を2つ追加します。

    • BITRISE_TEST_SHARDS_PATH
    • BITRISE_TEST_BUNDLE_PATH

    これらは自動生成される出力変数です。

    shards-deploy-to-bitrise.png

  8. Pipelinesを開き、Pipeline内でテストを実行するWorkflowを見つけて、歯車アイコンをクリックしWorkflowの編集メニューを開きます。

  9. Configurationタブで、Pipeline Conditionsセクションを開きます。

  10. Parallel copies入力欄にNUMBER_OF_SHARDS環境変数を追加します。

    shards-pipeline.png

    parallelismの設定方法について詳しくは、Parallelism in Pipelinesをご覧ください。