Configurar suítes

Um pacote no Tradefed se refere a uma configuração em que vários testes são executados em um um executor de testes comum que orienta a execução geral.

No Tradefed, as suítes são conduzidas ITestSuite , o que permite adicionar e remover testes independentemente de como eles são correr.

Definições

  • Pacote: conjunto de módulos de teste configurados para execução em um nível superior semelhante configuração para relatar os resultados em uma única invocação.
  • Configuração de nível superior: a configuração é aplicada aos dispositivos antes de executar qualquer módulos de teste.
  • Configuração principal: a configuração XML do Tradefed no nível do pacote que descreve quais módulos devem ser executados e quais configurações de nível superior devem ser executadas usados.
  • Configuração no nível do módulo: a configuração é aplicada aos dispositivos logo antes da execução do mais tarde neste módulo. Essas configurações também são conhecidas como configurações específicas do módulo.
  • Configuração do módulo: referente ao XML AndroidTest.xml do Tradefed. configuração que descreve os módulos e qual configuração de nível de módulo o que precisa ser feito.
  • Módulo: unidade de teste composta por uma etapa de configuração (configuração de nível de módulo), um de execução e uma etapa de eliminação.
  • Nova tentativa intramódulo: nova tentativa automática feita pelo arcabouço dentro do módulo.
  • Nova tentativa do conjunto: nova execução completa dos testes que apresentaram falha anteriormente.

Estrutura do ITestSuite

ITestSuite no Tradefed se refere à classe de base comum que controla a execução de um pacote. Está compartilhadas por todos os principais conjuntos de testes, especificamente o Teste de compatibilidade do Android Suite (CTS) e conjunto de testes de fornecedores do Android (VTS) e garante uma experiência de execução consistente. em todas as suítes.

Às vezes, nos referimos ao ITestSuite como o executor do pacote.

O executor do pacote segue estas etapas durante a execução:

  1. Carregue a configuração do módulo e determine qual conjunto deve ser executado.
  2. Execute cada módulo:

    1. Executar configuração no nível do módulo.
    2. Executar testes de módulo.
    3. Executar a eliminação de nível do módulo.
  3. Informar os resultados.

Configuração de nível superior

Do ponto de vista do Tradefed, o ITestSuite é apenas mais um teste. É um conjunto um, mas ainda é apenas um teste como qualquer outro IRemoteTest. Portanto, ao especificar o executor do pacote em uma configuração do Tradefed, o Tradefed segue o da configuração: executando build_provider, target_preparer, teste (nosso pacote neste caso) e target_cleaner.

Essa sequência na configuração do Tradefed que contém o ITestSuite é o configuração de nível superior.

Exemplo:

<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>

Metadados do módulo

Chamamos as informações extras dos metadados do módulo especificadas no módulo de teste AndroidTest.xml Esses metadados permitem especificar informações adicionais sobre módulo, e os módulos podem ser filtrados usando os metadados.

Exemplo de metadados:

<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />

Exemplo de filtro em metadados:

--module-metadata-include-filter component=framework

O exemplo acima executaria todos os módulos com um framework como metadados de componente.

Exemplo completo de 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>

Módulo parametrizado

Um tipo de metadados especial é parameter.

<option name="config-descriptor:metadata" key="parameter" value="instant_app" />

Esses metadados especificam que o módulo precisa ser executado em um mode, por exemplo, como um app instantâneo, em vez de um modo de app padrão.

Todos os modos ou parâmetros possíveis são descritos por ModuleParameters e ter um gerenciador associado ModuleParametersHelper que permite mudar a configuração do módulo para execução no modo específico.

Por exemplo, o modo de app instantâneo força a instalação do APK como instantânea. modo

Para que a parametrização ocorra, a linha de comando precisa ativá-la por:

--enable-parameterized-modules

Também é possível executar um único modo com:

--enable-parameterized-modules --module-parameter <Mode>

--enable-parameterized-modules --module-parameter INSTANT_APP

Quando uma versão parametrizada de um módulo é executada, ela informa os resultados em um nome de módulo parametrizado, por exemplo, CtsGestureTestCases[instant] versus base CtsGestureTestCases.