Пакет в Tradefed относится к настройке, в которой несколько тестов выполняются под общим тестовым исполнителем, который управляет общим выполнением.
В Tradefed наборы управляются через класс ITestSuite , который позволяет добавлять и удалять тесты независимо от того, как они выполняются.
Определения
- Набор: набор тестовых модулей, сконфигурированных для запуска с аналогичной настройкой верхнего уровня, чтобы сообщать о своих результатах при одном вызове.
- Настройка верхнего уровня: настройка применяется к устройству (устройствам) перед запуском любого из тестовых модулей.
- Основная конфигурация: XML-конфигурация Tradefed на уровне комплекта, которая описывает, какие модули следует запускать и какую настройку верхнего уровня следует использовать.
- Настройка на уровне модуля: настройка применяется к устройству (устройствам) непосредственно перед запуском модуля. Они также известны как настройки, специфичные для модуля .
-  Конфигурация модуля: Относится к XML-конфигурации AndroidTest.xmlTradefed, в которой описываются модули и какая настройка на уровне модуля должна быть выполнена.
- Модуль: блок тестирования, состоящий из этапа настройки ( настройка на уровне модуля ), этапа выполнения теста и этапа демонтажа. 
- Повторная попытка внутри модуля: автоматический повтор, выполняемый жгутом внутри модуля. 
- Повторная попытка пакета: полный повторный запуск ранее неудавшихся тестов пакета. 
Структура ITestSuite
ITestSuite в Tradefed относится к общему базовому классу, управляющему выполнением пакета. Он используется всеми основными наборами тестов, в частности набором тестов совместимости с Android (CTS) и набором тестов Android Vendor Test Suite (VTS) , и обеспечивает согласованное выполнение во всех наборах.
Иногда мы будем называть ITestSuite средством запуска пакета .
Средство запуска пакета выполняет следующие шаги при выполнении:
- Загрузите конфигурацию модуля и определите, какой набор должен работать.
- Запустите каждый модуль: a. Запустите установку на уровне модуля b. Запустить модульные тесты c. Запустить демонтаж на уровне модуля
- Сообщить о результатах
Настройка верхнего уровня
 С точки зрения Tradefed, ITestSuite — это просто еще один тест. Это сложный, но все же просто тест, как и любой другой IRemoteTest . Таким образом, при указании запуска пакета в конфигурации Tradefed, Tradefed будет следовать обычному шаблону конфигурации: запуск build_provider , target_preparer , test (в данном случае наш набор) и target_cleaner .
Эта последовательность в конфигурации Tradefed, содержащей ITestSuite, является настройкой верхнего уровня.
Пример:
<configuration description="Common config for Compatibility suites">
    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
    <!-- Setup applied before the suite: so everything running in the suite will
    have this setup beforehand -->
    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put global package_verifier_enable 0" />
        <option name="teardown-command" value="settings put global package_verifier_enable 1"/>
    </target_preparer>
    <!-- Our ITestSuite implementation -->
    <test class="com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite" />
    <result_reporter class="com.android.compatibility.common.tradefed.result.ConsoleReporter" />
</configuration>
Метаданные модуля
 Мы называем Module Metadata дополнительной информацией, указанной в тестовом модуле AndroidTest.xml . Они позволяют указать дополнительную информацию о модуле, а модули можно фильтровать с помощью метаданных.
Пример метаданных:
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
Пример фильтра по метаданным:
--module-metadata-include-filter component=framework
Вышеприведенное запустит все модули с фреймворком в качестве метаданных компонента .
 Полный пример AndroidTest.xml :
<configuration description="Config for CTS Gesture test cases">
    <option name="test-suite-tag" value="cts" />
    <!-- Metadata -->
    <option name="config-descriptor:metadata" key="component" value="framework" />
    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
    <!-- End: metadata -->
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsGestureTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.gesture.cts" />
        <option name="runtime-hint" value="10m50s" />
    </test>
</configuration>
Модуль с параметрами
 Особым типом метаданных является parameter .
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
Эти метаданные указывают, что модуль необходимо будет выполнять в другом режиме , например, в качестве приложения с мгновенным запуском, а не в стандартном режиме приложения.
Все возможные режимы или параметры описываются ModuleParameters и имеют связанный обработчик в ModuleParametersHelper , который позволяет изменить настройку модуля для выполнения в конкретном режиме.
Например, мгновенный режим приложения принудительно установит APK в мгновенном режиме.
Чтобы параметризация произошла, командная строка должна включить ее через:
--enable-parameterized-modules
Также можно запустить один заданный режим через:
--enable-parameterized-modules --module-parameter <Mode>
--enable-parameterized-modules --module-parameter INSTANT_APP
Когда параметризованная версия модуля запускается, она сообщает о своих результатах под именем параметризованного модуля, например, CtsGestureTestCases[instant] по сравнению с базовым CtsGestureTestCases.
