Bu sayfada, SDV Test Framework kitaplığına genel bir bakış sunulmakta ve testleri ayarlama, yapılandırma ve yürütme konusunda size yol gösterilmektedir. Uçtan uca test için SDV Test Framework'ü kullanın. Araç, Mobly'yi temel alır. Testleri Python'da yazarsınız.
Test yaklaşımı seçme
Test yazmadan önce doğrulama kapsamınıza uygun test çalıştırıcıyı seçin:
| Test kapsamı | Soong modül türü | Yürütme aracı | Ne zaman kullanılır? |
|---|---|---|---|
| Hizmet paketi birim testleri | rust_test, rust_test_host veya cc_test |
atest |
Ana makinede veya tek bir Cuttlefish sanal makinesinde (VM) izole Rust ya da C++ iş mantığını, veri dönüşümlerini veya yardımcı crate'leri doğrulayın. |
| Uçtan uca ve çoklu sanal makine sistem testleri | python_test_host (SDV Test Framework) |
atest veya CATBox |
Bir ila üç sanal makinede hizmet paketi yaşam döngüsü düzenlemesini, sanal makineler arası iletişimi, SOME/IP köprülemeyi veya donanım hedeflerini doğrulayın. |
Ortamı ayarlama
Bu sayfada, iş istasyonunuzu SDV için zaten ayarladığınız varsayılır. Framework testlerini çalıştırmak için virtualenv uygulamasını yükleyin.
Python bağımlılıkları
Android'de bağımlılıkları yönetmek için önerilen yaklaşım, derleme yapılandırmasını kullanarak testleri, Python'u ve bağımlılıklarını yürütülebilir bir dosya olarak paketlemektir. SDV test deposunda bu yaklaşımı izlemeniz gerekir.
SDV Test Framework kitaplığı, varsayılan olarak aşağıdaki bağımlılıkları sağlar:
moblyabsl-pyTestlerde parametreleştirme kullanmak için gereklidir.pexpectEtkileşimli komut işlevi için gereklidir.ptyprocessEtkileşimli komut işlevi için gereklidir.
Teste özel bağımlılıklara ihtiyacınız varsa bunları testin Android.bp dosyasına ekleyin:
python_test_host {
…
libs: [
"<DEPENDENCY1>",
"<DEPENDENCY2>",
…
],
…
}
Sistem testi türleri
SDV Test Framework'ü kullanarak sistem testleri oluşturursunuz. Çerçeve, aşağıdaki türler arasında ayrım yapar. Testleri doğru şekilde kategorize edin:
- Örnek testler: SDV örnek hizmetlerini çalıştırın ve sonucun beklenen çıkışla eşleştiğini doğrulayın.
- Uçtan uca testler: SDV örnek hizmetlerini kullanmayın.
- Uzun süreli testler: Uzun yürütme süreleri için tasarlanmıştır.
- Performans testleri:
perfettokitaplığını kullanın. - Donanım testleri: Cuttlefish (CF) yerine yalnızca fiziksel bir cihazda çalıştırılmak üzere tasarlanmıştır.
Test oluşturma
Çerçeve kullanılarak yazılan tüm testler, test deposunda bulunmalıdır. Testin tam konumu, türüne bağlıdır. Dizin yolları, Python test sınıfı şablonları, Android.bp kuralları ve Mobly kodlama yönergeleri için SDV sistem testi oluşturma başlıklı makaleyi inceleyin.
Test yapılandırma
Tüm testleri hem atest hem de CATBox kullanarak çalışacak şekilde yapılandırın.
atest'i yapılandırma
Çerçeve; bir, iki ve üç sanal makine testi için şablonlar sağlar. Android.bp dosyanıza aşağıdakileri ekleyin:
Bir sanal makine:
python_test_host { ... test_config_template: ":sdv_one_device", }İki sanal makine:
python_test_host { ... test_config_template: ":sdv_two_devices", }Üç sanal makine:
python_test_host { ... test_config_template: ":sdv_three_devices", }
Varsayılan şablon çoğu test için yeterlidir. Zorunlu bir neden olmadıkça özel yapılandırmalar oluşturmaktan kaçının.
Varsayılan zaman aşımını güncelleme
Varsayılan zaman aşımı, testleri yerel olarak yürütmek için yeterli olmalıdır.
Testiniz zaman aşımı nedeniyle yerel olarak başarısız olursa testi farklı testlere bölmeyi deneyin. Çok sayıda test durumu içeren çok uzun testler, yürütme sırasında darboğaza neden olabilir.
Varsayılandan daha yüksek bir zaman aşımı süresi ayarlamanız gerekiyorsa okumaya devam edin.
Varsayılan zaman aşımını geçersiz kılma
Çerçeve, atest yürütme için şablonun genişletilmesini desteklemiyor.
Bu nedenle, daha uzun zaman aşımı süresi sunan şablonları kullanın.
Tek sanal makineyle uzun test:
python_test_host { ... test_config_template: ":sdv_one_device_long_test", }İki sanal makineyle uzun test:
python_test_host { ... test_config_template: ":sdv_two_devices_long_test", }
Bu şablonu kullanma amacınızı açıkça belirten ve ek sürenin neden gerekli olduğunu açıklayan bir yorum ekleyin (örneğin, test belirli bir süre alan bir yapının indirilmesini gerektiriyorsa).
Dosyaları bir cihaza aktarma
Aşağıdaki adımlarda, atest yapılandırmaları için dosyaların bir cihaza nasıl aktarılacağı açıklanmaktadır.
Dosyaları bir cihaza aktarma
Çerçeve, atest yürütme için şablonun genişletilmesini desteklemiyor.
Bu nedenle, varsayılan şablonun yerini tamamen alan ve cihazlar için ilgili target_preparer seçeneklerini içeren bir AndroidTest.xml dosyası oluşturmanız gerekir.
Şablonun içeriğini kopyalayın:
sdv-one-device.xmlsdv-two-devices.xmlsdv-three-devices.xml
{MODULE}yer tutucusunu testinizin modül adıyla güncelleyin.com.android.tradefed.targetprep.PushFilePrepareradlı çocuğu her cihaza ekleyin.
<device name="device1">
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
<option name="cleanup" value="true" />
<option name="push-file" key="<FILE_NAME>" value="<REMOTE_FILE_PATH>" />
</target_preparer>
</device>
CATBox'ı yapılandırma
Testi bir paket olarak çalıştırmak için CATBox yapılandırması gerekir.
libraries/sdv/sdv_catbox/res/config/dizininde yeni bir yapılandırma dosyası oluşturun ve şu adlandırma kurallarına uyun:- Örnek test:
sdv-sample-<NAME>-test.xml - Uçtan uca test:
sdv-e2e-<NAME>-test.xml - Uzun süreli test:
sdv-long-running-<NAME>-test.xml - Performans testi:
sdv-performance-<NAME>-test.xml - Donanım testi:
sdv-hw-<NAME>-test.xml
- Örnek test:
Test türüne göre ilgili bilgileri ekleyin:
Tek sanal makine test yapılandırması:
<configuration description="SDV <NAME> Test"> <!-- Template for Device Configuration --> <template-include name="device-config" default="sdv-device-config/one-device" /> <!-- Plan. Use the same name as the file name --> <option name="plan" value="<CONFIG_FILE_NAME>"/> <!-- Test: mobly-par-file-name should match the module name --> <option name="mobly-host:mobly-par-file-name" value="<ModuleName>" /> </configuration>İki sanal makine test yapılandırması:
<configuration description="SDV <NAME> Test"> <!-- Template for Device Configuration --> <template-include name="device-config" default="sdv-device-config/two-devices" /> <!-- Plan. Use the same name as the file name --> <option name="plan" value="<CONFIG_FILE_NAME>"/> <!-- Test: mobly-par-file-name should match the module name --> <option name="mobly-host:mobly-par-file-name" value="<ModuleName>" /> </configuration>Üç sanal makine test yapılandırması:
<configuration description="SDV <NAME> Test"> <!-- Template for Device Configuration --> <template-include name="device-config" default="sdv-device-config/three-devices" /> <!-- Plan. Use the same name as the file name --> <option name="plan" value="<CONFIG_FILE_NAME>"/> <!-- Test: mobly-par-file-name should match the module name --> <option name="mobly-host:mobly-par-file-name" value="<ModuleName>" /> </configuration>
Varsayılan şablon çoğu test için yeterlidir. Zorunlu bir neden olmadıkça özel yapılandırmalar oluşturmaktan kaçının.
Varsayılan zaman aşımını güncelleme
Varsayılan zaman aşımı süresi testiniz için yeterli değilse bu süreyi geçersiz kılabilirsiniz.
Varsayılan zaman aşımını geçersiz kılma
Varsayılan zaman aşımını geçersiz kılmak için yapılandırma dosyanızın sonuna aşağıdakileri ekleyin. Uzun testlerin zaman aşımı süresi en fazla 10 dakika olmalıdır.
<!-- Long Test - 10 minutes timeout: <REASON> -->
<option name="mobly-host:mobly-test-timeout" value="600000" />
Dosyaları bir cihaza aktarma
Aşağıdaki bölümde, CATBox'ı yapılandırırken dosyaların bir cihaza nasıl aktarılacağı açıklanmaktadır.
Dosyaları bir cihaza aktarma
Dosyaları ilgili cihaza aktarmak için plan seçeneğinden sonra aşağıdaki yapılandırmayı ekleyin:
<!-- Automatically pushes config file to device-->
<device name="device1">
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
<option name="cleanup" value="true" />
<option name="push-file"
key="<FILE_NAME>"
value="<REMOTE_FILE_PATH>"
/>
</target_preparer>
</device>
Dosyalara her cihazda ihtiyacınız varsa her cihaz için yapılandırmayı ekleyin (ör. name=device1, name=device2).
Test yürütme işlemi
Bu talimatlarda, çalışan bir SDV ortamı oluşturma işlemini tamamladığınız varsayılır.
Ortamı ayarlama
Çerçeve, Cloud Virtual Device (CVD) sanal cihaz örneklerini başlatmaz. Bu nedenle, testleri çalıştırmadan önce bunları başlatmanız gerekir.
Ortamı ayarlama ve SDV hedefini başlatma:
. build/envsetup.sh lunch <TARGET>İlk CVD örneğini başlatın:
cvd create --config=sdv_core_instance1İkinci CVD örneğini başlatın (çoklu sanal makine testleri için):
cvd create --config=sdv_core_instance2Üçüncü CVD örneğini başlatın (çoklu sanal makine testleri için):
cvd create --config=sdv_core_instance3
Atest'i çalıştırma
atest <TestModuleName>
CATBox'ı çalıştırma
Bu komutlar, deponun kök dizininde olduğunuzu varsayar.
- CATBox'ı derleme:
m catbox - (İsteğe bağlı) CATBox'taki tüm SDV test planlarını görüntüleyin:
out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed l p | grep sdv-
Test çalıştırma:
Bir sanal makine testi çalıştırma:
NOTIFY_AS_NATIVE=0.0.0.0:6520 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520İki sanal makine testini çalıştırma:
NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521Üç sanal makine testini çalıştırma:
NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521,0.0.0.0:6522 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521 --{device3}serial 0.0.0.0:6522