Struktur keseluruhan konfigurasi modul mengikuti pola yang mirip dengan konfigurasi XML Tradefed reguler, tetapi dengan beberapa batasan karena fakta bahwa konfigurasi tersebut berjalan sebagai bagian dari suite.
Daftar tag yang diizinkan
AndroidTest.xml
atau konfigurasi modul secara lebih luas hanya dapat berisi
tag XML berikut: target_preparer
, multi_target_preparer
, test
, dan
metrics_collector
.
Meskipun daftar tersebut terlihat ketat, daftar ini memungkinkan Anda menentukan kebutuhan penyiapan modul pengujian dan pengujian yang akan dijalankan dengan tepat.
CATATAN: Lihat Konfigurasi XML Tradefed jika Anda perlu mengulang materi tentang berbagai tag.
Objek seperti build_provider
atau result_reporter
akan memunculkan
ConfigurationException
jika dicoba untuk dijalankan dari dalam konfigurasi
modul. Hal ini dimaksudkan untuk menghindari ekspektasi objek
ini benar-benar melakukan beberapa tugas dari dalam modul.
Contoh konfigurasi modul
<configuration description="Config for CTS Gesture test cases">
<option name="test-suite-tag" value="cts" />
<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>
Konfigurasi ini menjelaskan pengujian yang memerlukan penginstalan CtsGestureTestCases.apk
dan akan menjalankan instrumentasi terhadap paket android.gesture.cts
.
Tag penyertaan <include>
dan <template-include>
Penggunaan <include>
dan <template-include>
dalam konfigurasi modul
tidak dianjurkan. Fitur ini tidak dijamin berfungsi seperti yang diharapkan.
Kasus khusus untuk tag metrics_collector
metrics_collector
diizinkan, tetapi terbatas pada
class
FilePullerLogCollector
untuk menentukan file atau direktori tertentu yang akan diambil dan dicatat ke dalam log untuk
modul. Hal ini berguna jika Anda menyimpan log di lokasi tertentu dan ingin memulihkannya secara otomatis.
Contoh konfigurasi:
<configuration description="Config for CTS UI Rendering test cases">
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
<option name="cleanup-apks" value="true" />
<option name="test-file-name" value="CtsUiRenderingTestCases.apk" />
</target_preparer>
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
<option name="package" value="android.uirendering.cts" />
<option name="runtime-hint" value="11m55s" />
<option name="runner" value="android.uirendering.cts.runner.UiRenderingRunner" />
<option name="isolated-storage" value="false" />
</test>
<!-- Collect the files in the dump directory for debugging -->
<metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
<option name="directory-keys" value="/sdcard/UiRenderingCaptures" />
<option name="collect-on-run-ended-only" value="true" />
</metrics_collector>
</configuration>
Bagaimana dengan info build atau download?
Definisi tag yang diizinkan mungkin memberikan kesan yang salah bahwa modul tidak akan mendapatkan informasi build apa pun. Hal ini tidak benar.
Informasi build disediakan dari penyiapan tingkat suite dan akan dibagikan oleh semua modul suite. Hal ini memungkinkan satu penyiapan tingkat teratas untuk suite guna menjalankan semua modul yang merupakan bagian dari suite.
Misalnya, setiap
modul Compatibility Test Suite (CTS)
tidak perlu mengkueri informasi, jenis, dll. perangkat satu per satu. Penyiapan
tingkat suite CTS (cts.xml
) melakukannya sekali dan setiap modul akan menerima
informasi tersebut jika memintanya.
Agar objek dalam modul dapat menerima informasi build, objek tersebut harus
melakukan hal yang sama seperti dalam konfigurasi Tradefed reguler: mengimplementasikan
antarmuka IBuildReceiver
untuk menerima IBuildInfo
. Lihat
pengujian dengan perangkat
untuk detail selengkapnya.
Kolom metadata
Sejumlah besar modul pengujian menyertakan beberapa spesifikasi metadata
,
yang masing-masing memiliki sasaran unik.
Contoh:
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
<option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
<option name="config-descriptor:metadata" key="parameter" value="secondary_user" />
Komponen
Metadata component
menjelaskan komponen Android umum yang ingin
diuji modul. Pengujian ini tidak memiliki dampak langsung pada eksekusi uji; utamanya digunakan untuk tujuan organisasi.
Daftar terbaru komponen yang diizinkan untuk CTS tersedia di CtsConfigLoadingTest. Pengujian ini gagal dalam pra-pengiriman jika komponen yang tidak ada ditambahkan ke modul CTS.
Anda dapat memfilter suite yang dijalankan berdasarkan komponen menggunakan
module-metadata-include-filter
dan module-metadata-exclude-filter
.
Contoh:
--module-metadata-include-filter component framework
Contoh ini hanya menjalankan modul pengujian yang dianotasi dengan komponen
framework
.
Parameter
Metadata parameter
bersifat informatif dan memengaruhi eksekusi
pengujian. Ini menentukan mode Android tempat modul pengujian diterapkan.
Dalam hal ini, mode dibatasi untuk mode Android tingkat tinggi, seperti
instant apps
, secondary users
, atau different abis
.
Selama suite berjalan, jika mode diterapkan pada pengujian, beberapa variasi modul pengujian akan dibuat berdasarkan mode tersebut. Setiap variasi menjalankan pengujian yang serupa, tetapi dalam mode yang berbeda.
instant_app
: Membuat variasi pengujian yang menginstal APK sebagai aplikasi instan.multi_abi
: Membuat variasi pengujian untuk setiap ABI yang didukung oleh perangkat.secondary_user
: Membuat variasi pengujian yang menginstal APK dan menjalankan pengujian sebagai pengguna sekunder.
Pengumpulan metrik dan pascapemrosesan untuk modul pengujian performa
Untuk modul pengujian performa, metrics_collector
dan
metric_post_processor
tingkat modul diizinkan karena keduanya penting untuk pengujian performa.
Pengumpul dan pasca-pemroses metrik tingkat modul dapat bersifat khusus modul.
Sebaiknya jangan tentukan post-processor di tingkat teratas dan
modul.
Konfigurasi modul pengujian performa harus menyertakan metadata test-type
dengan nilai performance
, seperti:
xml
<option name="config-descriptor:metadata" key="test-type" value="performance" />
Tanpanya, jika konfigurasi pengujian menyertakan metric_collector
selain
FilePullerLogCollector
atau metric_post_processor
apa pun, pengujian
akan gagal dalam prapengiriman.
Contoh konfigurasi modul pengujian performa:
<configuration description="Runs sample performance test.">
<!-- Declare as a performance test module -->
<option name="config-descriptor:metadata" key="test-type" value="performance" />
<option name="test-tag" value="hello-world-performance-test" />
<test class="com.android.tradefed.testtype.HostTest" >
<option name="class" value="android.test.example.helloworldperformance.HelloWorldPerformanceTest" />
</test>
<!-- Add module-level post processor MetricFilePostProcessor -->
<metric_post_processor class="com.android.tradefed.postprocessor.MetricFilePostProcessor">
<option name="aggregate-similar-tests" value="true" />
<option name="enable-per-test-log" value="false" />
</metric_post_processor>
</configuration>