SDV Test Framework

Bu belgede, SDV test çerçevesine 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 çerçevesini kullanın. Bu araç Mobly'yi temel alır ve testleri Python'da yazarsınız.

Ortamı ayarlama

Bu belgede, iş istasyonunuzu SDV için ayarladığınız varsayılmaktadır. Framework testlerini çalıştırmak için virtualenv 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'ı 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:

  • mobly
  • absl-py Testlerde parametrelendirme kullanmak için gereklidir.
  • pexpect Etkileşimli komut işlevi için gereklidir.
  • ptyprocess Etkileşimli komut işlevi için gereklidir.

Teste özel bağımlılıkları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 süreli yürütme dönemleri için tasarlanmıştır.
  • Performans testleri: perfetto kitaplığını kullanın.
  • Donanım testleri: Cuttlefish'te (CF) değil, yalnızca fiziksel bir cihazda yürütülecek şekilde 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.

Test yapılandırma

Tüm testleri hem atest hem de CATBox kullanılarak çalışacak şekilde yapılandırın.

Atest'i yapılandırma

Çerçeve, bir, iki ve üç sanal makine (VM) 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. Zorlayıcı bir neden olmadığı sürece özel yapılandırmalar oluşturmaktan kaçının.

Varsayılan zaman aşımını güncelleme

Varsayılan zaman aşımı, testlerin yerel olarak yürütülmesi için yeterli olmalıdır.

Testiniz yerel olarak zaman aşımı nedeniyle başarısız olursa testi farklı testlere bölmeyi deneyin. Çok sayıda test durumu içeren uzun testler, yürütmede performansta soruna neden olabilir.

Varsayılan değerden daha yüksek bir zaman aşımı 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 desteklemez. Bu nedenle, daha uzun bir zaman aşımı sunan şablonları kullanın.

Bir sanal makine uzun testi

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 şablonun kullanım amacını net bir şekilde belirten ve ek sürenin neden gerekli olduğunu açıklayan bir yorum ekleyin (ör. test, belirli bir süre gerektiren bir yapının indirilmesini gerektiriyorsa).

Dosyaları cihaza aktarma

Aşağıdaki adımlarda, atest yapılandırmaları için dosyaların cihaza nasıl gönderileceği açıklanmaktadır.

Dosyaları cihaza aktarma

Çerçeve, atest yürütme için şablonun genişletilmesini desteklemez. 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.

  1. Şablonun içeriğini kopyalayın:

    • sdv-one-device.xml
    • sdv-two-devices.xml
    • sdv-three-devices.xml
  2. {MODULE} yerine testinizin modül adını girin.

  3. com.android.tradefed.targetprep.PushFilePreparer adlı ç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 paket olarak çalıştırmak için CATBox yapılandırması gerekir.

  1. libraries/sdv/sdv_catbox/res/config/ içinde yeni bir yapılandırma dosyası oluşturun ve şu adlandırma kurallarını uygulayın:

    • Örnek test: sdv-sample-<NAME>-test.xml
    • Uçtan uca test: sdv-e2e-<NAME>-test.xml
    • Uzun süren test: sdv-long-running-<NAME>-test.xml
    • Performans testi: sdv-performance-<NAME>-test.xml
    • Donanım testi: sdv-hw-<NAME>-test.xml
  2. Test türüne göre ilgili bilgileri ekleyin:

Tek sanal makine testi 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ı

<!-- Copyright 2025 Google LLC -->
<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. Zorlayıcı bir neden olmadığı sürece özel yapılandırmalar oluşturmaktan kaçının.

Varsayılan zaman aşımını güncelleme

Varsayılan zaman aşımı testiniz için yeterli değilse bu değeri 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 testlerde maksimum zaman aşımı 10 dakika olmalıdır.

  <!-- Long Test - 10 minutes timeout: <REASON> -->
  <option name="mobly-host:mobly-test-timeout" value="600000" />

Dosyaları cihaza aktarma

Aşağıdaki bölümde, CATBox'ı yapılandırırken dosya gönderme işlemi açıklanmaktadır.

Dosyaları cihaza aktarma

Dosyaları ilgili cihaza göndermek 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>

Dosyaların her cihazda bulunmasını istiyorsanız her cihaz için yapılandırma ekleyin (örneğin, name=device1, name=device2).

Test yürütme işlemi

Bu talimatlarda, çalışan bir SDV ortamı kurulumunu tamamladığınız varsayılır.

Ortamı ayarlama

Çerçeve, Cloud Virtual Device (CVD) örneklerini başlatmaz. Bu nedenle, testleri çalıştırmadan önce bunları başlatmanız gerekir.

  1. Ortamı ayarlayın ve SDV hedefini başlatın:

    . build/envsetup.sh
    lunch <TARGET>
    
  2. İlk Cloud Virtual Device (CVD) örneğini başlatın:

    cvd create --config=sdv_core_instance1
    
  3. İkinci Cloud Virtual Device (CVD) örneğini başlatın (çoklu sanal makine testleri için):

    cvd create --config=sdv_core_instance2
    
  4. Üçüncü Cloud Virtual Device (CVD) örneğini başlatın (çoklu sanal makine testleri için):

    cvd create --config=sdv_core_instance3
    

Koşu

atest <TestModuleName>

CATBox'ı çalıştırma

Bu komutlarda, deponun kök dizininde olduğunuz varsayılır.

  1. CATBox'ı oluşturun: m catbox
  2. (İsteğe bağlı) CATBox'ta kullanılabilen 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 testi ç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 testi ç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