Как использовать повтор набора

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

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