Karmaşık Test Yapılandırması

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Bazı test modülleri, test senaryosunun kendisinde gerçekleştirilemeyen özelleştirilmiş kurulum ve sökme adımları gerektirebilir. Tipik örnekler şunları içerebilir:

  • diğer apk'leri kurun (test apk'ye ek olarak)
  • bazı dosyaları cihaza itin
  • komutları çalıştırın (örneğin adb shell pm ...)

Geçmişte, bileşen ekipleri, Trade Federation kablo demetinin anlaşılmasını gerektiren ve tipik olarak bir test modülünün karmaşıklığını artıran bu tür görevleri gerçekleştirmek için genellikle bir ana bilgisayar yan testi yazmaya başvururlardı.

CTS'den ödünç alarak, bu tür görevleri desteklemek için test modülü konfigürasyonu kavramını tanıttık, yukarıdaki ortak görevler listesi sadece birkaç satır konfigürasyon ile elde edilebilir. Maksimum esneklik için, ITargetPreparer veya ITargetCleaner tarafından tanımlandığı şekilde kendi hedef hazırlayıcınızı bile uygulayabilir ve bunları kendi test modülü yapılandırmanızda kullanmak üzere yapılandırabilirsiniz.

Bir test modülü için bir test modülü yapılandırması, 'AndroidTest.xml' adlı üst düzey modül kaynak klasörüne eklenen gerekli bir XML dosyasıdır. XML, Trade Federation test otomasyonu koşum takımı tarafından kullanılan bir yapılandırma dosyasının biçimini takip eder. Şu anda test modülü yapılandırmaları aracılığıyla işlenen ana etiketler "target_preparer" ve "test" etiketleridir.

Hedef hazırlayıcılar

Adından da anlaşılacağı gibi bir "target_preparer" etiketi, test modülü test için çalıştırılmadan önce çağrılan bir kurulum yöntemi sunan bir hedef hazırlayıcıyı (bkz. ITargetPreparer ) tanımlar; ve "target_preparer" etiketinde başvurulan sınıf aynı zamanda ITargetCleaner'ı da uygularsa, test modülü bittikten sonra onun sökme yöntemi çağrılır.

Yerleşik ortak modül yapılandırmasını kullanmak için, test modülünüz için en üst düzey klasöre yeni bir 'AndroidTest.xml' dosyası ekleyin ve onu aşağıdaki içerikle doldurun:

<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>

Örnek olarak, aşağıdaki seçenek etiketlerini ekleyebiliriz (yukarıdaki "insert" yorumunda):

    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put secure accessibility_enabled 1" />
        <option name="teardown-command" value="settings put secure accessibility_enabled 0" />
    </target_preparer>

Seçenekler, test donanımını şu şekilde yapılandıracaktır:

  1. test modülü çağrılmadan önce, cihazda "ayarlar güvenli erişilebilirlik_enabled 1 koy" kabuk komutunu yürütün
  2. test modülü tamamlandıktan sonra, “ayarlar güvenli erişilebilirlik_enabled 0” kabuk komutunu yürütün

Bu özel örnekte, erişilebilirlik sırasıyla test modülünün yürütülmesinden önce/sonra etkinleştirilir/devre dışı bırakılır. Gösterilen basit bir örnekle, "seçenek" etiketinin nasıl kullanıldığına ilişkin daha fazla ayrıntıyı ele almak gerekir. Yukarıda gösterildiği gibi, etiketin iki özelliği olabilir: isim, değer. name niteliği seçeneğin adını belirtir ve ayrıca iki nokta üst üste ile ayrılan iki bölüme ayrılır: hazırlayan için kısa ad ve hazırlayan tarafından sunulan gerçek seçenek adı.

Değer alanının tam amacı, hazırlayanın seçeneği nasıl tanımladığına bağlıdır: bir dize, sayı, boolean, hatta bir dosya yolu vb. olabilir. Yukarıdaki örnekte, "çalıştır-komut:çalıştır-komut" adı şu anlama gelir. kısa adı “run-command” olan bir hedef hazırlayıcı tarafından tanımlanan “run-command” seçeneği için değer ayarladığımızı; ve "run-command:teardown-command" adı, aynı hedef hazırlayıcı tarafından "run-command" kısa adıyla tanımlanan "teardown-command" seçeneği için değer ayarladığımız anlamına gelir. İşte üç yaygın hedef hazırlayıcının bir özeti:

  • sınıf adı: PushFilePreparer

    • kısa isim : push-file
    • işlev : test senaryosu klasörü altındaki rastgele dosyaları cihazdaki hedefe iter
    • notlar :
      • bu hazırlayıcı, klasörden klasöre veya dosyadan dosyaya itebilir; yani cihazdaki bir klasörün altına dosya gönderemezsiniz: o klasörün altında da hedef dosya adını belirtmelisiniz
    • seçenekler :
      • push-file: Yerel dosyayı aygıtta iletilmesi gereken yola belirten bir push-spec. Tekrarlanabilir. Aynı uzak yola gönderilmek üzere birden fazla dosya yapılandırılırsa, en sonuncusu gönderilir.
      • push: (kullanımdan kaldırıldı) ' /path/to/srcfile.txt->/path/to/destfile.txt ' veya ' /path/to/srcfile.txt->/path/to/destdir/ olarak biçimlendirilmiş bir push özelliği /path/to/srcfile.txt->/path/to/destdir/ '. Tekrarlanabilir. Bu yol, test modülü dizinine veya çıkış dizininin kendisine göre olabilir.
      • post-push: Tüm göndermeler denendikten sonra cihazda çalıştırılacak bir komut (` adb shell <your command> ` ile). Tipik kullanım durumu, izinler için chmod kullanmaktır
  • sınıf adı: InstallApkSetup

    • kısa isim: kurulum-apk
    • işlev: altındaki isteğe bağlı apk dosyalarını cihazdaki hedefe iter
    • seçenekler:
      • test-file-name: Cihaza kurulacak apk'nın adı.
      • install-arg: Öndeki tire dahil, pm install komutuna iletilecek ek argümanlar, örneğin “-d”. Tekrarlanabilir
  • sınıf adı: RunCommandTargetPreparer

    • kısa isim: çalıştırma komutu
    • işlev: test modülünün yürütülmesinden önce veya sonra isteğe bağlı kabuk komutlarını yürütür
    • seçenekler:
      • run-command: çalıştırmak için adb shell komutu. Tekrarlanabilir
      • yırtma komutu: yırtma aşamasında çalıştırılacak adb kabuk komutu. Tekrarlanabilir

Test sınıfı

Test sınıfı, testi yürütmek için kullanılacak Trade Federation sınıfıdır.

<test class="com.android.tradefed.testtype.AndroidJUnitTest">
  <option name="package" value="android.test.example.helloworld"/>
  <option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>

İşte üç yaygın test sınıfı:

  • sınıf adı: GTest

    • kısa isim: gtest
    • işlev: Belirli bir cihazda yerel bir test paketi çalıştıran bir Test.
    • seçenekler:
      • native-test-device-path: Cihazda yerel testlerin bulunduğu yol.
  • sınıf adı: InstrumentationTest

    • kısa isim: enstrümantasyon
    • işlev: Belirli bir cihazda bir enstrümantasyon test paketini çalıştıran bir Test
    • seçenekler:
      • paket: Çalıştırılacak Android test uygulamasının bildirim paketi adı.
      • class: Çalıştırılacak test sınıfı adı.
      • method: Çalıştırılacak test yöntemi adı.
  • sınıf adı: AndroidJUnitTest

    • işlev: android.support.test.runner.AndroidJUnitRunner kullanarak belirli bir cihazda bir enstrümantasyon test paketi çalıştıran bir Test Bu, bir enstrümantasyon testi yürütmenin ana yoludur.