Suite di Tradefed mengacu pada penyiapan tempat beberapa pengujian berjalan di bawah runner pengujian umum yang mendorong eksekusi secara keseluruhan.
Di Tradefed, paket didorong melalui class
ITestSuite
, yang memungkinkan pengujian ditambahkan dan dihapus secara independen dari cara pengujian dijalankan.
Definisi
- Suite: Kumpulan modul pengujian yang dikonfigurasi untuk dijalankan dengan penyiapan tingkat teratas serupa untuk melaporkan hasilnya dalam satu pemanggilan.
- Penyiapan tingkat teratas: Penyiapan yang diterapkan ke perangkat sebelum menjalankan salah satu modul pengujian.
- Konfigurasi utama: Konfigurasi XML Tradefed tingkat rangkaian pengujian yang menjelaskan modul mana yang harus dijalankan dan penyiapan tingkat teratas mana yang harus digunakan.
- Penyiapan tingkat modul: Penyiapan diterapkan ke perangkat tepat sebelum menjalankan modul. Hal ini juga dikenal sebagai penyiapan khusus modul.
- Konfigurasi modul: Merujuk pada konfigurasi XML Tradefed
AndroidTest.xml
yang menjelaskan modul dan penyiapan tingkat modul yang harus dilakukan. - Modul: Unit pengujian yang terdiri dari langkah penyiapan (penyiapan tingkat modul), langkah eksekusi pengujian, dan langkah penghapusan.
- Coba lagi dalam modul: Coba lagi otomatis yang dilakukan oleh harness di dalam modul.
- Coba lagi suite: Menjalankan ulang sepenuhnya pengujian suite yang sebelumnya gagal.
Struktur ITestSuite
ITestSuite
di Tradefed mengacu pada class dasar umum yang mendorong eksekusi rangkaian pengujian. File ini
dibagikan oleh semua test suite utama, khususnya Android Compatibility Test
Suite (CTS) dan Android Vendor Test Suite
(VTS), serta memastikan pengalaman eksekusi yang konsisten
di semua suite.
Terkadang kita menyebut ITestSuite sebagai pelaksana rangkaian pengujian.
Runner rangkaian pengujian mengikuti langkah-langkah berikut saat dieksekusi:
- Memuat konfigurasi modul dan menentukan set mana yang harus dijalankan.
Jalankan setiap modul:
- Jalankan penyiapan tingkat modul.
- Jalankan pengujian modul.
- Jalankan penghapusan tingkat modul.
Laporkan hasilnya.
Penyiapan tingkat teratas
Dari sudut pandang Tradefed, ITestSuite
hanyalah pengujian lain. Ini adalah pengujian yang kompleks, tetapi tetap hanya pengujian seperti IRemoteTest
lainnya. Jadi, saat menentukan
peluncur rangkaian pengujian dalam konfigurasi Tradefed, Tradefed mengikuti
pola konfigurasi biasa: menjalankan build_provider
, target_preparer
, pengujian
(rangkaian pengujian kita dalam kasus ini), dan target_cleaner
.
Urutan ini dalam konfigurasi Tradefed yang berisi ITestSuite
adalah penyiapan 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
Kita menyebut metadata modul sebagai informasi tambahan 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 framework sebagai metadata component.
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 menentukan bahwa modul perlu dieksekusi dalam mode yang berbeda, misalnya sebagai aplikasi instan, bukan mode aplikasi standar.
Semua kemungkinan mode atau parameter dijelaskan oleh
ModuleParameters
dan memiliki handler terkait di
ModuleParametersHelper
yang memungkinkan Anda mengubah penyiapan modul untuk dieksekusi dalam mode tertentu.
Misalnya, mode aplikasi instan memaksa penginstalan APK sebagai mode instan.
Agar parameterisasi terjadi, command line perlu mengaktifkannya dengan:
--enable-parameterized-modules
Anda juga dapat menjalankan satu mode tertentu dengan:
--enable-parameterized-modules --module-parameter <Mode>
--enable-parameterized-modules --module-parameter INSTANT_APP
Saat versi modul berparameter berjalan, modul tersebut melaporkan hasilnya dengan
nama modul berparameter, misalnya CtsGestureTestCases[instant]
versus
CtsGestureTestCases
dasar.