Menyiapkan suite

Suite di Tradefed mengacu pada penyiapan tempat beberapa pengujian berjalan dengan {i>test runner<i} umum yang mendorong eksekusi secara keseluruhan.

Di Tradefed, suite dikelola melalui ITestSuite , yang memungkinkan pengujian ditambahkan dan dihapus secara terpisah dari caranya akan dijalankan.

Definisi

  • Suite: Rangkaian modul pengujian yang dikonfigurasikan untuk berjalan pada level teratas yang serupa penyiapan untuk melaporkan hasilnya dalam satu panggilan.
  • Penyiapan tingkat teratas: Penyiapan diterapkan ke perangkat sebelum menjalankan modul pengujian.
  • Konfigurasi utama: Konfigurasi XML Tradefed tingkat suite yang menjelaskan modul mana yang harus dijalankan dan penyiapan tingkat atas mana yang harus data
  • Penyiapan tingkat modul: Penyiapan diterapkan ke perangkat tepat sebelum menjalankan ruang lingkup modul ini. Penyiapan ini juga dikenal sebagai penyiapan khusus modul.
  • Konfigurasi modul: Mengacu pada XML Tradefed AndroidTest.xml konfigurasi yang menjelaskan modul dan penyiapan level modul yang harus dilakukan.
  • Modul: Unit pengujian yang terdiri dari langkah penyiapan (penyiapan tingkat modul), pengujian langkah eksekusi dan langkah pembongkaran.
  • Percobaan ulang intra-modul: Percobaan ulang otomatis yang dilakukan oleh harness di dalam modul.
  • Percobaan ulang suite: Jalankan ulang sepenuhnya pengujian suite yang sebelumnya gagal.

Struktur ITestSuite

ITestSuite di Tradefed mengacu pada class dasar umum yang mendorong eksekusi suite. Penting dibagikan oleh semua rangkaian pengujian utama, khususnya Pengujian Kompatibilitas Android Suite (CTS) dan Android Vendor Test Suite (VTS), serta memastikan pengalaman eksekusi yang konsisten di semua suite.

Terkadang kami menyebut ITestSuite sebagai suite runner.

Suite runner mengikuti langkah-langkah berikut saat mengeksekusi:

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

    1. Menjalankan penyiapan tingkat modul.
    2. Menjalankan pengujian modul.
    3. Menjalankan pembongkaran tingkat modul.
  3. Laporkan hasilnya.

Penyiapan tingkat teratas

Dari sudut pandang Tradefed, ITestSuite hanyalah pengujian lain. Hal yang kompleks satu, tetapi masih merupakan pengujian seperti IRemoteTest lainnya. Jadi ketika menentukan suite runner dalam konfigurasi Tradefed, Tradefed mengikuti pola konfigurasi: menjalankan build_provider, target_preparer, uji (suite kita dalam kasus ini), dan target_cleaner.

Urutan dalam konfigurasi Tradefed yang berisi ITestSuite ini 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. {i>Metadata<i} 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 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 dieksekusi dalam lingkungan mode, misalnya sebagai aplikasi instan, bukan mode aplikasi standar.

Semua kemungkinan mode atau parameter 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 secara mode.

Agar parameterisasi terjadi, baris perintah harus 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

Ketika versi modul yang diparameterisasi berjalan, versi tersebut melaporkan hasilnya berdasarkan nama modul berparameter, misalnya CtsGestureTestCases[instant] versus basis CtsGestureTestCases.