Использовать набор повторно

Как правило, набор тестов включает в себя несколько модулей и может достигать довольно большого размера тестового корпуса. Например, набор тестов на совместимость с 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 для подготовки к вызову повторной попытки.