Configura le suite

Una suite in Tradefed è una configurazione in cui vengono eseguiti diversi test in una test runner comune che guida l'esecuzione complessiva.

In Tradefed, le suite sono guidate attraverso ITestSuite che consente di aggiungere e rimuovere i test indipendentemente da come vengono vengono eseguiti tutti i test delle unità.

Definizioni

  • Suite: insieme di moduli di test configurati per l'esecuzione in un livello di primo livello simile configurazione per segnalare i risultati in un'unica chiamata.
  • Configurazione di primo livello: la configurazione viene applicata ai dispositivi prima di eseguire qualsiasi moduli di test.
  • Configurazione principale: la configurazione XML Tradefed a livello di suite che descrive quali moduli eseguire e quale configurazione di primo livello deve essere eseguita. in uso.
  • Configurazione a livello di modulo: la configurazione viene applicata ai dispositivi subito prima di eseguire l' in maggior dettaglio più avanti in questo modulo. Queste sono anche note come configurazioni specifiche del modulo.
  • Configurazione del modulo: fa riferimento al file XML scambiato AndroidTest.xml configurazione che descriva i moduli e la configurazione a livello di modulo dovrebbe essere completato.
  • Modulo: unità di test composta da un passaggio di configurazione (configurazione a livello di modulo), una una fase di esecuzione e una fase di eliminazione.
  • Nuovo tentativo all'interno del modulo: nuovo tentativo automatico eseguito dal cablaggio all'interno del modulo.
  • Nuovo tentativo di Suite: nuova esecuzione completa dei test della suite non riusciti in precedenza.

Struttura di ITestSuite

ITestSuite in Tradefed si riferisce alla classe base comune che conduce l'esecuzione di una suite. È condivisi da tutte le principali suite di test, in particolare il Test di compatibilità Android (CTS) e Test Suite per fornitori Android (VTS) e garantisce un'esperienza di esecuzione coerente in tutte le suite.

A volte facciamo riferimento a ITestSuite come suite runner.

Il runner della suite segue questi passaggi durante l'esecuzione:

  1. Carica la configurazione del modulo e determina quale set eseguire.
  2. Esegui ciascun modulo:

    1. Esegui la configurazione a livello di modulo.
    2. Esegui i test dei moduli.
    3. Esegui l'eliminazione a livello di modulo.
  3. Segnala i risultati.

Configurazione di primo livello

Da un punto di vista di Tradefed, ITestSuite è solo un altro test. È un processo complesso uno, ma è comunque un test come qualsiasi altro IRemoteTest. Pertanto, quando specifichi la suite runner in una configurazione Tradefed segue il solito pattern della configurazione: esecuzione di build_provider, target_preparer, test (in questo caso la nostra suite) e target_cleaner.

Questa sequenza nella configurazione Tradefed contenente ITestSuite è la configurazione di primo livello.

Esempio:

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

Metadati del modulo

Chiamiamo i metadati del modulo informazioni aggiuntive specificate nel modulo di test. AndroidTest.xml. Questi metadati ti consentono di specificare ulteriori informazioni il modulo e i moduli possono essere filtrati usando i metadati.

Metadati di esempio:

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

Esempio di filtro sui metadati:

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

In questo caso, tutti i moduli vengono eseguiti con un framework come metadati del componente.

Esempio completo di 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>

Modulo con parametri

Un tipo di metadati speciale è parameter.

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

Questi metadati specificano che il modulo deve essere eseguito in un mode, ad esempio come app istantanea, anziché come modalità app standard.

Tutte le modalità o i parametri possibili sono descritti da ModuleParameters e avere un gestore associato ModuleParametersHelper che ti consente di modificare la configurazione del modulo in modo che venga eseguito nella modalità specifica.

Ad esempio, la modalità app istantanea forza l'installazione dell'APK come istantanea. .

Affinché la parametrizzazione venga eseguita, la riga di comando deve abilitarla con:

--enable-parameterized-modules

È anche possibile eseguire una singola modalità specifica con:

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

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

Quando viene eseguita una versione con parametri di un modulo, i risultati vengono riportati in un nome di modulo con parametri, ad esempio CtsGestureTestCases[instant] rispetto a base CtsGestureTestCases.