Siapkan Suite

Suite di Tradefed mengacu pada penyiapan di mana beberapa pengujian dijalankan di bawah runner pengujian umum yang mendorong keseluruhan eksekusi.

Di Tradefed, suite didorong melalui kelas ITestSuite , yang memungkinkan pengujian ditambahkan dan dihapus secara independen dari cara pengujian tersebut dijalankan.

definisi

  • Suite: Kumpulan modul pengujian yang dikonfigurasi untuk berjalan di bawah pengaturan tingkat atas yang serupa untuk melaporkan hasilnya dalam satu permintaan.
  • Penyiapan tingkat atas: Penyiapan diterapkan ke perangkat sebelum menjalankan modul uji mana pun.
  • Konfigurasi utama: Konfigurasi XML Tradefed tingkat suite yang menjelaskan modul mana yang harus dijalankan dan pengaturan tingkat atas mana yang harus digunakan.
  • Pengaturan tingkat modul: Pengaturan diterapkan ke perangkat tepat sebelum menjalankan modul. Ini juga dikenal sebagai penyiapan khusus modul .
  • Konfigurasi modul: Mengacu pada konfigurasi AndroidTest.xml Tradefed XML yang menjelaskan modul dan penyiapan tingkat modul mana yang harus dilakukan.
  • Modul: Unit uji terdiri dari langkah penyiapan ( penyiapan tingkat modul ), langkah pelaksanaan pengujian, dan langkah pembongkaran.

  • Percobaan ulang intra-modul: Percobaan ulang otomatis dilakukan oleh harness di dalam modul.

  • Coba lagi suite: Jalankan ulang penuh dari pengujian suite yang sebelumnya gagal.

Struktur ITestSuite

ITestSuite di Tradefed mengacu pada kelas dasar umum yang mendorong eksekusi suite. Ini dibagikan oleh semua suite pengujian utama, khususnya Android Compatibility Test Suite (CTS) dan Android Vendor Test Suite (VTS) , dan memastikan pengalaman eksekusi yang konsisten di semua suite.

Kami terkadang menyebut ITestSuite sebagai suite runner .

Pelari suite mengikuti langkah-langkah ini saat menjalankan:

  1. Muat konfigurasi modul dan tentukan set mana yang harus dijalankan.
  2. Jalankan setiap modul: a. Jalankan pengaturan tingkat modul b. Menjalankan pengujian modul c. Jalankan pembongkaran tingkat modul
  3. Laporkan hasilnya

Pengaturan tingkat atas

Dari sudut pandang Tradefed, ITestSuite hanyalah tes lain. Ini adalah salah satu yang kompleks tetapi masih hanya sebuah tes seperti IRemoteTest lainnya. Jadi ketika menentukan runner suite dalam konfigurasi Tradefed, Tradefed akan mengikuti pola konfigurasi yang biasa: menjalankan build_provider , target_preparer , test (suite kami dalam kasus ini), dan target_cleaner .

Urutan ini dalam konfigurasi Tradefed yang berisi ITestSuite adalah pengaturan tingkat atas.

Contoh:

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

Metadata modul

Kami menyebut Modul Metadata informasi tambahan yang ditentukan dalam modul pengujian AndroidTest.xml . Mereka memungkinkan Anda untuk menentukan informasi tambahan mengenai modul, dan modul dapat difilter menggunakan metadata.

Contoh metadata:

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

Contoh filter pada metadata:

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

Di atas akan menjalankan semua modul dengan kerangka kerja sebagai metadata komponen .

Contoh AndroidTest.xml lengkap:

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

Modul berparameter

Jenis metadata khusus adalah parameter .

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

Metadata ini menetapkan bahwa modul perlu dijalankan dalam mode yang berbeda , misalnya sebagai aplikasi instan, bukan mode aplikasi standar.

Semua mode atau parameter yang mungkin dijelaskan oleh ModuleParameters dan memiliki penangan terkait di ModuleParametersHelper yang memungkinkan Anda mengubah pengaturan modul untuk dijalankan dalam mode tertentu.

Misalnya, mode aplikasi instan akan memaksa penginstalan APK sebagai mode instan.

Agar parameterisasi terjadi, baris perintah harus mengaktifkannya melalui:

--enable-parameterized-modules

Dimungkinkan juga untuk menjalankan satu mode yang diberikan melalui:

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

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

Saat versi modul yang diparameterisasi berjalan, ia akan melaporkan hasilnya di bawah nama modul berparameter, misalnya CtsGestureTestCases[instan] vs. CtsGestureTestCases dasar.