Modül yapılandırmasının genel yapısı, normal Tradefed XML yapılandırmasına benzer bir kalıba sahiptir ancak bir paketin parçası olarak çalışması nedeniyle bazı kısıtlamalar vardır.
İzin verilen etiketlerin listesi
AndroidTest.xml
veya daha geniş anlamda modül yapılandırması yalnızca şu XML etiketlerini içerebilir: target_preparer
, multi_target_preparer
, test
ve metrics_collector
.
Bu liste kısıtlayıcı görünse de test modülü kurulum ihtiyaçlarını ve çalıştırılacak testi hassas bir şekilde tanımlamanıza olanak tanır.
NOT: Farklı etiketler hakkında bilgi edinmek için Tradefed XML yapılandırması başlıklı makaleyi inceleyin.
build_provider
veya result_reporter
gibi nesneler, bir modül yapılandırmasının içinden çalıştırılmaya çalışıldığında ConfigurationException
hatasına neden olur. Bunun amacı, bu nesnelerin bir modül içinde gerçekten bir görev gerçekleştirmesi beklentisini önlemektir.
Örnek modül yapılandırması
<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>
Bu yapılandırma, CtsGestureTestCases.apk
uygulamasının yüklenmesini gerektiren ve android.gesture.cts
paketine karşı bir enstrümantasyon çalıştıracak bir testi tanımlar.
Dahil etme etiketleri <include>
ve <template-include>
Modül yapılandırmalarında <include>
ve <template-include>
kullanılması önerilmez. Bu işlevlerin beklendiği gibi çalışacağı garanti edilmez.
metrics_collector etiketi için özel durum
metrics_collector
izin verilir ancak modül için çekilecek ve günlüğe kaydedilecek belirli bir dosya veya dizini belirtmek üzere FilePullerLogCollector
sınıfıyla sınırlıdır. Bu özellik, belirli bir konumda günlükler bırakıyorsanız ve bunları otomatik olarak kurtarmak istiyorsanız kullanışlıdır.
Örnek yapılandırma:
<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>
Derleme bilgileri veya indirmeler hakkında ne söylenebilir?
İzin verilen etiketlerin tanımı, bir modülün derleme bilgisi almayacağı gibi yanlış bir izlenim verebilir. Bu doğru değildir.
Derleme bilgileri paketin kurulumundan sağlanır ve paketin tüm modülleri tarafından paylaşılır. Bu sayede, paketin tüm modüllerini çalıştırmak için pakette tek bir üst düzey kurulum yapılabilir.
Örneğin, her bir Compatibility Test Suite (CTS) modülünün cihaz bilgilerini, türlerini vb. ayrı ayrı sorgulaması yerine CTS paketi düzeyinde kurulum (cts.xml
) bunu bir kez yapar ve her modül, talep etmesi durumunda bu bilgileri alır.
Bir modüldeki nesnelerin derleme bilgilerini alabilmesi için normal Tradefed yapılandırmasında olduğu gibi IBuildReceiver
arayüzünü uygulayarak IBuildInfo
alması gerekir. Daha fazla bilgi için
cihazla test etme
sayfasını inceleyin.
Meta veri alanları
Çok sayıda test modülü, her biri benzersiz bir hedefe sahip olan bazı metadata
spesifikasyonlar içerir.
Örnek:
<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" />
Bileşen
component
meta verileri, modülün test etmeyi amaçladığı genel Android bileşenini açıklar. Test yürütme üzerinde doğrudan bir etkisi yoktur. Daha çok organizasyonel amaçlarla kullanılır.
CTS için izin verilen bileşenlerin güncel listesi CtsConfigLoadingTest'te yer alır. Bu test, CTS modülüne mevcut olmayan bir bileşen eklenirse gönderme öncesinde başarısız olur.
module-metadata-include-filter
ve module-metadata-exclude-filter
kullanarak bir paket çalıştırmasını bileşenlere göre filtreleyebilirsiniz.
Örnek:
--module-metadata-include-filter component framework
Bu örnekte yalnızca framework
bileşeniyle açıklama eklenmiş test modülü çalıştırılır.
Parametre
parameter
üst verileri bilgilendiricidir ve test yürütmesini etkiler. Test modülünün hangi Android modunda geçerli olduğunu belirtir.
Bu durumda modlar, instant apps
, secondary users
veya different abis
gibi üst düzey Android modlarıyla sınırlıdır.
Paket çalıştırma sırasında, mod test için geçerliyse moda göre test modülünün çeşitli varyasyonları oluşturulur. Her varyasyon benzer testler yürütür ancak farklı modlarda.
instant_app
: APK'ları hazır uygulama olarak yükleyen testlerin bir varyasyonunu oluşturun.multi_abi
: Cihaz tarafından desteklenen her ABI için testlerin bir varyasyonunu oluşturun.secondary_user
: APK'ları yükleyen ve testleri ikincil kullanıcı olarak çalıştıran testlerin bir varyasyonunu oluşturun.
Performans testi modülleri için metrik toplama ve sonradan işleme
Performans testi modüllerinde, performans testleri için gerekli olduklarından modül düzeyinde metrics_collector
ve metric_post_processor
izin verilir.
Modül düzeyindeki metrik toplayıcılar ve son işlemciler modüle özgü olabilir.
Son işlemcilerin hem üst düzeyde hem de modül düzeyinde belirtilmesi önerilmez.
Bir performans testi modülü yapılandırması, test-type
meta verilerini performance
değeriyle birlikte içermelidir. Örneğin:
xml
<option name="config-descriptor:metadata" key="test-type" value="performance" />
Bu olmadan, bir test yapılandırması FilePullerLogCollector
veya herhangi bir metric_post_processor
dışında metric_collector
içeriyorsa test, göndermeden önce başarısız olur.
Örnek performans testi modülü yapılandırması:
<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>