Использовать Suite Retry

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

Это применимо к большинству из люксов , которые расширяют его, например , СДС ).

Он будет вызываться через:

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

Чтобы повторная попытка сработала, предыдущие результаты необходимо экспортировать в формате прототипа. Необходимо добавить следующее:

<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />

Это должно быть добавлено к конфигурации XML основной команды, и это приведет к test-record.pb файла , который будет создан в папке результата.

CTS повторных попыток , то загружает данные из комбинации test-record.pb и существующий test_result.xml для подготовки повторных попыток вызова.