Siapkan suite

Rangkaian di Tradefed mengacu pada pengaturan di mana beberapa pengujian dijalankan di bawah test runner umum yang mendorong eksekusi keseluruhan.

Di Tradefed, suite dijalankan melalui kelas ITestSuite , yang memungkinkan pengujian ditambahkan dan dihapus secara independen, apa pun cara pengujiannya dijalankan.

Definisi

  • Suite: Kumpulan modul pengujian yang dikonfigurasi untuk dijalankan di bawah pengaturan tingkat atas yang serupa untuk melaporkan hasilnya dalam satu pemanggilan.
  • Penyiapan tingkat atas: Penyiapan diterapkan ke perangkat sebelum menjalankan modul pengujian apa pun.
  • Konfigurasi utama: Konfigurasi XML Tradefed tingkat suite yang menjelaskan modul mana yang harus dijalankan dan pengaturan tingkat atas mana yang harus digunakan.
  • Penyiapan tingkat modul: Penyiapan diterapkan ke perangkat tepat sebelum menjalankan modul. Ini juga dikenal sebagai pengaturan khusus modul .
  • Konfigurasi modul: Mengacu pada konfigurasi XML Tradefed AndroidTest.xml yang menjelaskan modul dan penyiapan tingkat modul mana yang harus dilakukan.
  • Modul: Unit pengujian 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.
  • Percobaan ulang suite: Pengulangan penuh pengujian suite yang sebelumnya gagal.

Struktur ITestSuite

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

Terkadang kami menyebut ITestSuite sebagai suite runner .

Suite runner mengikuti langkah-langkah berikut saat menjalankan:

  1. Muat konfigurasi modul dan tentukan set mana yang harus dijalankan.
  2. Jalankan setiap modul:

    1. Jalankan pengaturan tingkat modul.
    2. Jalankan tes modul.
    3. Jalankan pembongkaran tingkat modul.
  3. Laporkan hasilnya.

Pengaturan tingkat atas

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

Urutan 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 memanggil informasi tambahan metadata modul yang ditentukan dalam modul pengujian AndroidTest.xml . Metadata ini memungkinkan Anda menentukan informasi tambahan tentang 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 lengkap 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>

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 pengendali terkait di ModuleParametersHelper yang memungkinkan Anda mengubah pengaturan modul untuk dieksekusi dalam mode tertentu.

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

Agar parameterisasi terjadi, baris perintah harus mengaktifkannya dengan:

--enable-parameterized-modules

Dimungkinkan juga untuk menjalankan satu mode tertentu dengan:

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

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

Ketika versi modul yang diparameterisasi berjalan, ia melaporkan hasilnya dengan nama modul yang diparameterisasi, misalnya CtsGestureTestCases[instant] versus basis CtsGestureTestCases .