スイートには複数のテスト モジュールが含まれる傾向があり、極めて大きなテストコーパス サイズに達する可能性があります。たとえば Android 互換性テストスイート(CTS)には、数百のモジュールと数十万のテストケースが含まれています。
分離が不十分な場合、またはデバイスが不良な状態になった場合、大量のテストが不合格になる可能性があります。
スイートの再試行機能は、そのようなケースに対応することを目的としています。脆弱性と不十分な分離を排除するために、スイート全体ではなく不合格になったもののみを再試行できます。テストが一貫して不合格になる場合は再試行も不合格になり、本当に問題があるということが明確にわかります。
スイートの再試行を実装する
結果の再試行には、前の結果の読み取りと、前の呼び出しの再実行が含まれます。
再試行を行う主なインターフェースは ITestSuiteResultLoader
であり、前の結果と前のコマンドラインを読み込めます。
次に RetryRescheduler
はこの情報を使用して前のコマンドを再作成し、前に不合格になったテストと実行されなかったテストのみを再実行するために、フィルタをいくつか設定します。
スイートの再試行の例: CTS
CTS での再試行の設定は次のとおりです。
<configuration description="Runs a retry of a previous CTS session.">
<object type="previous_loader" class="com.android.compatibility.common.tradefed.result.suite.PreviousResultLoader" />
<test class="com.android.tradefed.testtype.suite.retry.RetryRescheduler" />
<logger class="com.android.tradefed.log.FileLogger">
<option name="log-level-display" value="WARN" />
</logger>
</configuration>
これは、拡張するほとんどのスイート(VTS など)に適用できます。
次のようにして呼び出されます。
cts-tradefed run retry --retry <session>
セッションは、CTS コンソールで前の結果をリストすることで確認できます。
cts-tf > l r
Session Pass Fail Modules Complete Result Directory Test Plan Device serial(s) Build ID Product
0 2092 30 148 of 999 2018.10.29_14.12.57 cts [serial] P Pixel
元のコマンドとまったく同じコマンドが再度読み込まれ、追加のフィルタが設定された状態で再実行されます。つまり、元のコマンドにオプションがいくつか含まれている場合、再試行でも含まれることになります。
次に例を示します。
cts-tradefed run cts-dev -m CtsGestureTestCases
上記の再試行は常に CtsGestureTestCases
に限定されます。それのみを含むコマンドを再試行しているためです。
CTS スタイル スイートの再試行を設定する
再試行を機能させるには、前の結果を proto 形式でエクスポートする必要があります。次の行を追加します。
<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />
これはメインのコマンドの XML 設定に追加する必要があります。これにより、test-record.pb
ファイルが結果フォルダに作成されます。
次に CTS の再試行が test-record.pb
と既存の test_result.xml
の組み合わせからデータを読み込み、再試行の呼び出しを準備します。