一個套件往往包含幾個測試模塊,並且可以達到相當大的測試語料庫大小。例如, 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
的組合中加載數據,以準備重試調用。