Testler çalıştırın (Atest)

Atest, kullanıcıların derleme, yükleme ve çalıştırma işlemleri yapmasına olanak tanıyan bir komut satırı aracıdır Android'in yerel olarak test etmesi, testlerin tekrar tekrar çalıştırılmasını gerektirmeden Ticaret Federasyonu test kullanımı hakkında bilgi komut satırı seçenekleri. Bu sayfada, Android'i çalıştırmak için Atest'in nasıl kullanılacağı açıklanmaktadır. testler.

Android için test yazma hakkında genel bilgi edinmek istiyorsanız bkz. Android Platformu Testi.

Atest'in genel yapısı hakkında bilgi edinmek için Geliştirici Kılavuzu'nu test edin.

Atest aracılığıyla TEST_MAPPING dosyalarında test çalıştırma hakkında bilgi için bkz. TEST_MAPPING dosyalarında test çalıştırma.

Atest'e özellik eklemek için Geliştirici İş Akışını Onayla'yı seçin.

Ortamınızı ayarlama

Atest ortamınızı ayarlamak için Ortam oluşturma, Hedef seçme ve Kodu derleme bölümündeki talimatları uygulayın.

Temel kullanım

Atest komutları aşağıdaki biçimdedir:

atest test-to-run [optional-arguments]

İsteğe bağlı bağımsız değişkenler

Aşağıdaki tabloda en yaygın kullanılan bağımsız değişkenler listelenmiştir. Tam liste atest --help aracılığıyla kullanılabilir.

Option Uzun seçenek Açıklama
-b --build Test hedefleri oluşturur. (varsayılan)
-i --install Cihaza test yapılarını (APK) yükler. (varsayılan)
-t --test Testleri çalıştırır. (varsayılan)
-s --serial Testleri belirtilen cihazda çalıştırır. Aynı anda yalnızca bir cihaz test edilebilir.
-d --disable-teardown Testin sökümünü ve temizlemesini devre dışı bırakır.
--dry-run Kuru çalıştırma Testleri gerçekten derlemeden, yüklemeden veya çalıştırmadan test etme.
-m --rebuild-module-info module-info.json dosyasının yeniden oluşturulmasını zorunlu kılar.
-w --wait-for-debugger Yürütmeden önce hata ayıklayıcının bitmesini bekler.
-v --verbose HATA AYIKLAMA düzeyinde günlük kaydını gösterir.
--iterations Döngü, maksimum yinelemeye ulaşılana kadar testleri çalıştırır. (varsayılan olarak 10)
--rerun-until-failure [COUNT=10] Bir hata oluşana veya maksimum iterasyon değeri eşit olana kadar tüm testleri tekrar çalıştırır ulaştı. (varsayılan olarak 10)
--retry-any-failure [COUNT=10] Başarısız testler, geçilene veya maksimum iterasyon değerine ulaşılana kadar tekrar çalıştırılır. (10 varsayılan olarak)
--start-avd Otomatik olarak bir ortalama görüntüleme süresi oluşturur ve sanal cihazda testleri çalıştırır.
--acloud-create acloud komutunu kullanarak ortalama görüntüleme süresi oluşturur.
--[CUSTOM_ARGS] Test çalıştırıcıları için özel bağımsız değişkenleri belirtir.
-a --all-abi Mevcut tüm cihaz mimarileri için testleri çalıştırır.
--host Testi, cihaz olmadan ana makinede tamamen çalıştırır.
Not: --host yüklü bir cihaz gerektiren bir ana makine testi çalıştırılıyor başarısız olur.
--history Test sonuçlarını kronolojik sırada gösterir.
--latest-result En son test sonucunu yazdırır.

-b, -i ve -t hakkında daha fazla bilgi için Adımları belirtin: Derleme, yükleme veya çalıştırma bölümü.

Testleri belirtin

Testleri çalıştırmak için aşağıdakilerden birini kullanarak bir veya daha fazla test belirtin tanımlayıcılar:

  • Modül adı
  • Modül:Sınıf
  • Sınıf adı
  • Tradefed entegrasyon testi
  • Dosya yolu
  • Paket adı

Birden fazla teste yapılan referansları boşlukla ayırın. Örneğin:

atest test-identifier-1 test-identifier-2

Modül adı

Bir test modülünün tamamını çalıştırmak için modül adını kullanın. Adı göründüğü gibi girin söz konusu testin LOCAL_MODULE veya LOCAL_PACKAGE_NAME değişkenlerinde Android.mk veya Android.bp dosyası.

Örnekler:

atest FrameworksServicesTests
atest CtsVideoTestCases

Modül:Sınıf

Bir modül içinde tek bir sınıf çalıştırmak için Module:Class seçeneğini kullanın. Modül, Modül adı bölümünde açıklandığı şekildedir. Sınıf, sınıfın adıdır. .java dosyasında test sınıfıdır; tam sınıf adı veya temel ad.

Örnekler:

atest CtsVideoTestCases:VideoEncoderDecoderTest
atest FrameworksServicesTests:ScreenDecorWindowTests
atest FrameworksServicesTests:com.android.server.wm.ScreenDecorWindowTests

Sınıf adı

Modül adını açıkça belirtmeden tek bir sınıfı çalıştırmak için ilgili sınıfı kullanın. dokunun.

Örnekler:

atest ScreenDecorWindowTests
atest VideoEncoderDecoderTest

Tradefed entegrasyon testi

Doğrudan TradeFed'e (modül olmayanlar) entegre testler çalıştırmak için adını tradefed.sh list configs komutunun çıkışında göründüğü şekilde kullanın. Örneğin, örnek:

reboot.xml testi:

atest example/reboot

native-benchmark.xml testi:

atest native-benchmark

Dosya yolu

Atest, Google Analytics 4'e göre hem modül tabanlı test dosyasının veya dizininin yolunu uygun şekilde girerek. Aynı zamanda sınıfın Java dosyasının yolunu belirterek tek bir sınıfın çalıştırılmasını destekler. Hem göreli hem de mutlak yollar desteklenir.

Modül çalıştırma

Aşağıdaki örnekler, CtsVideoTestCases modülünü aşağıdakileri kullanarak çalıştırmanın iki yolunu gösterir: olabilir.

Android repo-root'ten çalıştırma:

atest cts/tests/video

Android repo-root/cts/tests/video sürümünden çalıştırma:

    atest .

Test sınıfı çalıştırma

Aşağıdaki örnekte, dosya yolu kullanılarak CtsVideoTestCases modülündeki belirli bir sınıfın nasıl çalıştırılacağı gösterilmektedir.

Android repo-root'den:

    atest cts/tests/video/src/android/video/cts/VideoEncoderDecoderTest.java

Entegrasyon testi çalıştırma

Aşağıdaki örnekte, Android repo-root'teki bir dosya yolu kullanılarak entegrasyon testinin nasıl çalıştırılacağı gösterilmektedir:

    atest tools/tradefederation/contrib/res/config/example/reboot.xml

Paket adı

Atest, paket adına göre testleri aramayı destekler.

Örnekler:

    atest com.android.server.wm
    atest com.android.uibench.janktests

Adımları belirtin: Derleme, yükleme veya çalıştırma

Uygulanacak adımları belirtmek için -b, -i ve -t seçeneklerini kullanın. Eğer bir seçenek belirtmezseniz tüm adımlar uygulanır.

  • Yalnızca hedefler oluşturun: atest -b test-to-run
  • Yalnızca testleri çalıştır: atest -t test-to-run
  • Apk'yi yükleyin ve testleri çalıştırın: atest -it test-to-run
  • Derleyin ve çalıştırın ancak yüklemeyin: atest -bt test-to-run

Atest, bir testi temizleme veya ayırma adımını atlamaya zorlayabilir. Örneğin, CTS, test çalıştırıldıktan sonra cihazı temizleyin. Bu nedenle testinizi tekrar çalıştırmaya çalışın -t ile başlayan kod, --disable-teardown parametresi olmadan başarısız olur. Test temizleme adımını atlamak ve iteratif olarak test etmek için -d önce -t kullanın.

atest -d test-to-run
atest -t test-to-run

Belirli yöntemleri çalıştırma

Atest, test sınıfında belirli yöntemlerin çalıştırılmasını destekler. Bütün modülünün geliştirilmesi gerekir, bu da testlerin yürütülmesi için gereken süreyi azaltır. Çalıştırmak için bir yöntem belirlemek için, desteklenen yöntemlerden herhangi birini kullanarak bir sınıf tanımlama (Modül:Sınıf, dosya yolu vb.) ve sınıfınızın adını yöntem:

atest reference-to-class#method1

Birden çok yöntem belirtirken yöntemleri virgülle ayırın:

atest reference-to-class#method1,method2,method3

Örnekler:

atest com.android.server.wm.ScreenDecorWindowTests#testMultipleDecors
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval

Aşağıdaki iki örnekte, tek bir yöntemi çalıştırmak için tercih edilen yöntemler gösterilmektedir: testFlagChange Bu örnekler, yalnızca sınıf adı kullanımına tercih edilir çünkü modülü veya Java dosya konumunu belirtmek, Atest'in çok daha hızlı test edebilir.

Modül:Sınıfı Kullanma:

atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange

Android repo-root'den:

atest frameworks/base/services/tests/wmtests/src/com/android/server/wm/ScreenDecorWindowTests.java#testFlagChange

Farklı sınıf ve modüllerde birden çok yöntem çalıştırılabilir:

atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval ScreenDecorWindowTests#testMultipleDecors

Birden fazla sınıfa katılın

Birden fazla sınıf yayınlamak için sınıfları koşuyla aynı şekilde boşluklarla ayırın. birden fazla teste tabi tutulur. Atest, sınıfları verimli şekilde oluşturur ve çalıştırır. Bu nedenle, bir modüldeki sınıfların alt kümesi bütünü çalıştırmaya kıyasla performansı artırır modülünü kullanabilirsiniz.

Aynı modülde iki sınıf çalıştırmak için:

atest FrameworksServicesTests:ScreenDecorWindowTests FrameworksServicesTests:DimmerTests

Farklı modüllerde iki sınıf çalıştırmak için:

atest FrameworksServicesTests:ScreenDecorWindowTests CtsVideoTestCases:VideoEncoderDecoderTest

GTest ikili programlarını çalıştırma

Atest, GTest ikili programlarını çalıştırabilir. Mevcut tüm testlerde bu testleri çalıştırmak için -a kullanın cihaz mimarilerini inceleyelim. Bu örnekte: armeabi-v7a (ARM 32 bit) ve arm64-v8a (ARM 64 bit).

Örnek giriş testi:

atest -a libinput_tests inputflinger_tests

Çalıştırılacak belirli bir GTest ikili programı seçmek için, testi belirtmek üzere iki nokta üst üste (:) kullanın adı ve bir hashtag (#) ekleyin.

Örneğin, aşağıdaki test tanımı için:

TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents)

Testin tamamını belirtmek için aşağıdaki komutu çalıştırın:

atest inputflinger_tests:InputDispatcherTest

Alternatif olarak, aşağıdakileri kullanarak bağımsız bir test de çalıştırabilirsiniz:

atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents

TEST_MAPPING testlerini çalıştırın

Atest, TEST_MAPPING dosyalarında test çalıştırabilir.

Gönderme öncesi testleri dolaylı olarak çalıştırma

Mevcut ve üst dizinlerdeki TEST_MAPPING dosyalarında göndermeden önce testleri çalıştırın:

atest

/path/to/project ve TEST_MAPPING dosyalarında gönderme öncesi testleri çalıştırın ve aşağıdaki dizinlere bakabilirsiniz:

atest --test-mapping /path/to/project

Belirli bir test grubunu çalıştırın

Kullanılabilir test grupları şunlardır: presubmit(varsayılan), postsubmit, mainline-presubmit ve all.

Mevcut ve üst dizinlerdeki TEST_MAPPING dosyalarında gönderim sonrası testleri çalıştırın:

atest :postsubmit

TEST_MAPPING dosyalarındaki tüm gruplardan testler çalıştırın:

atest :all

/path/to/project içindeki TEST_MAPPING dosyalarında gönderim sonrası testleri çalıştırın ve aşağıdaki dizinlere bakabilirsiniz:

atest --test-mapping /path/to/project:postsubmit

/path/to/project ve üst dizinlerindeki TEST_MAPPING dosyalarında ana hat testlerini çalıştırın:

atest --test-mapping /path/to/project:mainline-presubmit

Alt dizinlerde test çalıştırma

Atest, varsayılan olarak yalnızca yukarıya doğru (TEST_MAPPING dosyalarında) dizini üst dizinlerine eklemeniz gerekir). Alt dizinlerdeki TEST_MAPPING dosyalarında da test çalıştırmak istiyorsanız Atest'i bu testleri de dahil etmeye zorlamak için --include-subdirs kullanın:

atest --include-subdirs /path/to/project

Testleri yinelemeli şekilde çalıştırma

--iterations bağımsız değişkenini ileterek testleri yinelemeli şekilde çalıştırın. Sınavı geçip geçmediği ya da başarısız olursa Atest, maksimum yinelemeye ulaşılana kadar testi tekrarlar.

Örnekler:

Atest, varsayılan olarak 10 kez yineleme yapar. Yineleme sayısı pozitif bir sayı olmalıdır tamsayı.

atest test-to-run --iterations
atest test-to-run --iterations 5

Aşağıdaki yaklaşımlar, güvenilir olmayan testleri tespit etmeyi kolaylaştırır:

1. Yaklaşım: Bir hata oluşana veya maksimum yineleme sayısına ulaşılana kadar tüm testleri çalıştırın.

  • Bir hata oluştuğunda veya iterasyon 10. (varsayılan olarak) raunta ulaştığında durur.
    atest test-to-run --rerun-until-failure
    
  • Bir hata oluştuğunda veya iterasyon 100. tura ulaştığında durur.
    atest test-to-run --rerun-until-failure 100
    

2. Yaklaşım: Bu testler geçilene veya maksimum yineleme sınırına ulaşılana kadar yalnızca başarısız testleri çalıştırın.

  • test-to-run kullanıcısının birden fazla test durumu ve şunlardan birinin olduğunu varsayın: testler başarısız olur. Başarısız testi yalnızca 10 kez (varsayılan olarak) veya test başarılı olur.
    atest test-to-run --retry-any-failure
    
  • 100. tura ulaştığında veya 100. tura ulaştığında başarısız testi çalıştırmayı durdurun.
    atest test-to-run --retry-any-failure 100
    

AVD'lerde test çalıştırma

Atest, yeni oluşturulan bir ortalama görüntüleme süresinde test yapabilir. AVD oluşturmak ve yapı oluşturmak için acloud create'ü çalıştırın, ardından testlerinizi çalıştırmak için aşağıdaki örnekleri kullanın.

Bir ortalama görüntüleme süresi (AVD) başlatıp bununla ilgili testler yapabilirsiniz:

acloud create --local-instance --local-image && atest test-to-run

Test çalışması kapsamında bir AVD başlatma:

atest test-to-run --acloud-create "--local-instance --local-image"

Daha fazla bilgi için acloud create --help komutunu çalıştırın.

Modüle kart seçenekleri

Atest, test modüllerine seçenekler iletebilir. TradeFed komut satırı eklemek için seçenekleri kullanıyorsanız, aşağıdaki yapıyı kullanın ve özel bağımsız değişkenler, Tradefed komut satırı seçenek biçimini kullanır.

atest test-to-run -- [CUSTOM_ARGS]

test yapılandırma dosyası:

atest test-to-run -- --module-arg module-name:option-name:option-value
atest GtsPermissionTestCases -- --module-arg GtsPermissionTestCases:ignore-business-logic-failure:true

Bir koşucu türü veya sınıfına geçme seçenekleri:

atest test-to-run -- --test-arg test-class:option-name:option-value
atest CtsVideoTestCases -- --test-arg com.android.tradefed.testtype.JarHosttest:collect-tests-only:true

Yalnızca test amaçlı seçenekler hakkında daha fazla bilgi edinmek için bkz. Modüllerdeki geçiş seçenekleri.