使用套件重試

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