Konfigurowanie sal

Zestaw w Tradefed to konfiguracja, w której kilka testów jest uruchamianych w ramach wspólnego narzędzia do uruchamiania testów, które steruje ogólnym wykonaniem.

W Tradefed pakiety są obsługiwane przez klasę ITestSuite, która umożliwia dodawanie i usuwanie testów niezależnie od sposobu ich uruchamiania.

Definicje

  • Zestaw: zbiór modułów testowych skonfigurowanych do działania w podobnej konfiguracji najwyższego poziomu, aby raportować wyniki w ramach jednego wywołania.
  • Konfiguracja najwyższego poziomu: konfiguracja stosowana na urządzeniach przed uruchomieniem dowolnego modułu testowego.
  • Główna konfiguracja: plik konfiguracji XML Tradefed na poziomie pakietu, który opisuje, które moduły mają być uruchamiane i która konfiguracja najwyższego poziomu ma być używana.
  • Konfiguracja na poziomie modułu: konfiguracja stosowana na urządzeniach tuż przed uruchomieniem modułu. Są one też nazywane konfiguracjami konkretnych modułów.
  • Konfiguracja modułu: odnosi się do AndroidTest.xmlkonfiguracji XML Tradefed, która opisuje moduły i określa, jakie ustawienia na poziomie modułu należy zastosować.
  • Moduł: jednostka testowa składająca się z etapu konfiguracji (konfiguracja na poziomie modułu), etapu wykonania testu i etapu wyłączenia.
  • Ponawianie w ramach modułu: automatyczne ponawianie wykonywane przez platformę w modułach.
  • Ponowne uruchomienie zestawu: pełne ponowne uruchomienie testów, które wcześniej zakończyły się niepowodzeniem.

Struktura ITestSuite

ITestSuite w Tradefed odnosi się do wspólnej klasy bazowej, która steruje wykonywaniem pakietu. Jest on wspólny dla wszystkich głównych zestawów testów, w szczególności pakietu testów zgodności Androida (CTS)pakietu testów dostawcy Androida (VTS), i zapewnia spójne działanie wszystkich pakietów.

Interfejs ITestSuite nazywamy czasami uruchamiaczem zestawu.

Podczas wykonywania narzędzie do uruchamiania pakietu wykonuje te czynności:

  1. Załaduj konfigurację modułu i określ, który zestaw ma zostać uruchomiony.
  2. Uruchom każdy moduł:

    1. Uruchom konfigurację na poziomie modułu.
    2. Uruchom testy modułów.
    3. Przeprowadź analizę na poziomie modułu.
  3. Zgłoś wyniki.

Konfiguracja najwyższego poziomu

Z punktu widzenia Tradefed ITestSuite to po prostu kolejny test. To złożony test, ale nadal jest to tylko test jak każdy inny IRemoteTest. Dlatego podczas określania narzędzia do uruchamiania pakietu w konfiguracji Tradefed narzędzie to postępuje zgodnie ze zwykłym wzorcem konfiguracji: uruchamia build_provider, target_preparer, test (w tym przypadku nasz pakiet) i target_cleaner.

Ta sekwencja w konfiguracji Tradefed zawierająca znak ITestSuite to konfiguracja najwyższego poziomu.

Przykład:

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

Metadane modułu

Metadane modułu to dodatkowe informacje określone w module testowymAndroidTest.xml. Te metadane pozwalają określić dodatkowe informacje o module, a moduły można filtrować za pomocą metadanych.

Przykładowe metadane:

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

Przykładowy filtr metadanych:

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

Powyższe polecenie uruchomi wszystkie moduły z metadanymi framework jako component.

Pełny przykład 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>

Moduł z parametrami

Specjalny typ metadanych to parameter.

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

Te metadane określają, że moduł musi być wykonywany w innym trybie, np. jako aplikacja natychmiastowa, a nie w standardowym trybie aplikacji.

Wszystkie możliwe tryby lub parametry są opisane w pliku ModuleParameters i mają powiązany moduł obsługi w pliku ModuleParametersHelper , który umożliwia zmianę konfiguracji modułu w celu wykonania go w określonym trybie.

Na przykład tryb aplikacji błyskawicznej wymusza instalację pliku APK w trybie aplikacji błyskawicznej.

Aby doszło do parametryzacji, wiersz poleceń musi ją włączyć za pomocą tego polecenia:

--enable-parameterized-modules

Możesz też uruchomić pojedynczy tryb za pomocą:

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

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

Gdy uruchamiana jest sparametryzowana wersja modułu, raportuje ona wyniki pod sparametryzowaną nazwą modułu, np. CtsGestureTestCases[instant] w porównaniu z podstawową nazwą CtsGestureTestCases.