テストシャーディング
Bitriseは、プロジェクトの種類や、Bitriseにシャーディング最適化計算を提供してほしいかどうかによって、すぐに使用できる使いやすいテストシャーディング最適化機能を提供します。
テストシャーディングとは、大量の自動テストを小さな断片 (シャード) に分割し、異なるランナーで並行して実行できるようにするプロセスです。これにより、開発者に変更に関するフィードバックを提供するのにかかる時間が大幅に短縮され、開発者は集中力を維持して迅速に反復できるようになります
Bitriseは、プロジェクトの種類や、Bitriseにシャーディング最適化の計算を任せたいかどうかに応じて、すぐに使用できる使いやすいテストシャーディング最適化機能を提供しています。
独自のテスト分割計算によるシャーディング
シャーディングに最適なテストスプリットを計算する手段がすでにある場合は、以下を使用してテストシャーディングを設定できます。 並列処理 パイプラインの機能。
Parellelismは同じワークフローを別々の仮想マシンで並行して実行します。必要なコピー数は、以下を設定して手動で設定します parallel
ワークフローのプロパティ:
... workflows: test-without-building: depends_on: [build-for-testing] parallel: 5 ...
各コピーには、次の 2 つの新しい環境変数が割り当てられます。
-
$BITRISE_IO_PARALLEL_INDEX
: ワークフローの各コピーの 0 から始まるインデックス。 -
$BITRISE_IO_PARALLEL_TOTAL
: コピーの合計数。
これらの環境変数を活用してテストシャーディングを実行できます。たとえば、Jest
jest --shard=$((BITRISE_IO_PARALLEL_INDEX + 1))/$BITRISE_IO_PARALLEL_TOTAL
または糸を使って:
yarn test --ci --silent --shard=$((BITRISE_IO_PARALLEL_INDEX + 1))/$BITRISE_IO_PARALLEL_TOTAL
並列処理の設定方法の詳細については、以下のガイドをご覧ください。 パイプラインの並列処理。
テストスプリットを計算するBitriseステップによるシャーディング
Bitriseが提供する最適化アルゴリズムに基づいてテストを自動的にシャードするパイプラインを作成できます。これは iOS プロジェクトと Android プロジェクトの両方でサポートされています
次のことを行う必要があります。
-
アプリのビルドとテストの両方を行うパイプラインを作成します。
-
シャード計算を実行するステップを、アプリを構築するワークフローに追加します。 Xcode テストシャード計算 iOS プロジェクトのステップと グラドルランナー Android プロジェクト用のステップ。
-
テストワークフローの複数のコピーが並行して実行されるように並列処理を設定します。
iOS
アンドロイド
共有テストバンドル
この例では、アプリを一度ビルドし、共有テストバンドルを使用してテストワークフローでテストを実行するという設定があることを前提としています。の使用をお勧めします Xcode テスト (ビルドなし) テストを実行する手順。このような設定には、以下のワークフローレシピが参考になります。 (iOS) 複数のシミュレータでテストを並行して実行する。
iOS の場合は、 Xcode テストシャード計算 テストを指定された数のシャードに分割する手順は、 Bitrise.io にデプロイしてください シャーディングの結果をパイプラインの他のワークフローと共有し、並列処理を設定する手順:
-
作成 環境変数 これには必要な数のシャードが含まれます。例えば、
NUMBER_OF_SHARDS
。 -
を追加 Xcode テストシャード計算 Xcode アプリを構築するワークフローにステップアップします。
-
ステップをクリックしてオプションメニューを開き、 [構成] タブ。
-
の中に プロダクトパス 入力、新しい環境変数を追加します。
-
を追加 Bitrise.io にデプロイしてください 同じワークフローにステップアップ。
-
見つけて パイプライン:中間ファイル共有 入力グループ。
-
の中に パイプラインステージ間で共有するファイル 入力して、2 つの環境変数を追加します。
-
BITRISE_TEST_SHARDS_PATH
-
BITRISE_TEST_BUNDLE_PATH
これらは自動的に生成された出力変数です。
-
-
[開く] パイプライン パイプラインで、テストを実行するワークフローを見つけ、歯車アイコンをクリックしてワークフローの編集メニューを開きます。
-
で [構成] タブを開き、 パイプライン条件 セクション。
-
を追加
NUMBER_OF_SHARDS
への環境変数 パラレルコピー 入力。並列処理の設定方法の詳細については、以下を参照してください。 並列処理の設定。
Android の場合、Gradle ではシャーディング計算をそのまま使用できます。これは以下と連携して機能します。 並列処理。
-
パイプラインを開き、 パイプラインの状態 セクションで、必要なシャードの数を追加してください パラレルコピー 入力。
並列処理の設定方法の詳細については、以下を参照してください。 並列処理の設定。
-
を追加 グラドルランナー ワークフローへのステップ。
-
ステップオプションを開き、 [構成] タブ。
-
の中に コンフィグ 入力グループ、検索 実行する Gradle タスク 次のタスクを入力して追加します。
connectedAndroidTest \ -Pandroid.testInstrumentationRunnerArguments.numShards=$BITRISE_IO_PARALLEL_TOTAL \ -Pandroid.testInstrumentationRunnerArguments.shardIndex=$BITRISE_IO_PARALLEL_INDEX
ザル
$BITRISE_IO_PARALLEL_TOTAL
と$BITRISE_IO_PARALLEL_INDEX
環境変数は、各シャードに適用するテストを Gradle に指示します。