Tradefed'de paket, genel yürütmeyi yönlendiren ortak bir test çalıştırıcı altında çeşitli testlerin çalıştırıldığı bir kurulumu ifade eder.
Tradefed'de paketler, ITestSuite
sınıfı aracılığıyla çalıştırılır. Bu sınıf, testlerin çalıştırılma biçimlerinden bağımsız olarak eklenmesine ve kaldırılmasına olanak tanır.
Tanımlar
- Paket: Benzer bir üst düzey düzey altında çalışacak şekilde yapılandırılmış test modülleri ayarlarını tek bir çağrı altında raporlamak için kullanır.
- Üst düzey kurulum: test modüllerini de kullanabilirsiniz.
- Ana yapılandırma: Hangi modüllerin çalıştırılması ve hangi üst düzey kurulumun kullanılması gerektiğini açıklayan paket düzeyinde Tradefed XML yapılandırması.
- Modül düzeyinde kurulum: Kurulum, modülünü kullanabilirsiniz. Bunlara modüle özgü ayarlar da denir.
- Modül yapılandırması:
AndroidTest.xml
Tradefed XML anlamına gelir ve hangi modül düzeyinde kurulumu açıklayan bir yapılandırma yapılması gerekir. - Modül: Bir kurulum adımı (modül düzeyinde kurulum), bir test yürütme adımı ve bir sökme adımından oluşan test birimi.
- Modül içi yeniden deneme: Modül içindeki donanım kullanılarak otomatik yeniden deneme yapılır.
- Paketi yeniden dene: Paketin daha önce başarısız olan testlerinin tamamının yeniden çalıştırılması.
ITestSuite yapısı
Tradefed'deki ITestSuite
, bir paket yürütmesini sağlayan ortak temel sınıfı ifade eder. İnsanların
Başta Android Uyumluluk Testi olmak üzere tüm büyük test paketleri tarafından paylaşılmıştır
Suite (CTS) ve Android Vendor Test Suite
(VTS) sunar ve tutarlı bir yürütme deneyimi sağlar.
yer alır.
ITestSuite'ten bazen test grubu çalıştırıcı olarak da bahsedilir.
Paket çalıştırıcı, yürütürken şu adımları izler:
- Modülün yapılandırmasını yükleyin ve hangi kümenin çalışması gerektiğini belirleyin.
Her modülü çalıştırın:
- Modül düzeyinde kurulum çalıştırın.
- Modül testlerini çalıştırın.
- Modül düzeyinde inceleme yapın.
Sonuçları bildirin.
Üst düzey kurulum
Tradefed açısından ITestSuite
, başka bir testten ibarettir. Bu karmaşık bir
diğeri IRemoteTest
gibi hâlâ yalnızca bir testtir. Bu nedenle, Tradefed yapılandırmasında paket çalıştırıcıyı belirtirken Tradefed, yapılandırmanın normal kalıbını izler: build_provider
, target_preparer
, test (bu durumda paketimiz) ve target_cleaner
çalıştırma.
Tradefed yapılandırmasında ITestSuite
içeren bu sıra, üst düzey kurulumdur.
Örnek:
<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>
Modül meta verileri
Test modülünde belirtilen modül meta verilerine ek bilgiler adını veriyoruz.
AndroidTest.xml
. Bu meta veriler, modülle ilgili ek bilgiler belirtmenize olanak tanır ve modüller meta veriler kullanılarak filtrelenebilir.
Örnek meta veri:
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
Meta veri için örnek filtre:
--module-metadata-include-filter component=framework
Yukarıdaki komut, tüm modülleri bileşen meta verisi olarak çerçeve ile çalıştırır.
Tam AndroidTest.xml
örneği:
<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>
Parametreli modül
Özel bir meta veri türü parameter
'tür.
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
Bu meta veri, modülün farklı bir mod olarak değiştirildi.
Olası tüm modlar veya parametreler ModuleParameters
tarafından açıklanır ve ModuleParametersHelper
içinde, modül kurulumunu belirli bir modda çalıştıracak şekilde değiştirmenize olanak tanıyan ilişkili bir işleyiciye sahiptir.
Örneğin, hazır uygulama modu, APK'nın hazır uygulama olarak yüklenmesini zorunlu kılar yatırım yapmanız önemlidir.
Parametrelendirmenin gerçekleşmesi için komut satırının aşağıdakilerle etkinleştirilmesi gerekir:
--enable-parameterized-modules
Belirli bir modu aşağıdakilerle de çalıştırabilirsiniz:
--enable-parameterized-modules --module-parameter <Mode>
--enable-parameterized-modules --module-parameter INSTANT_APP
Bir modülün parametreleştirilmiş bir sürümü çalıştığında, sonuçlarını
parametreleştirilmiş bir modül adı (örneğin, CtsGestureTestCases[instant]
veya
CtsGestureTestCases
temel.