Google 致力于为黑人社区推动种族平等。查看具体举措
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Bir test

Atest, kullanıcıların Android testlerini yerel olarak oluşturmasına, yüklemesine ve çalıştırmasına olanak tanıyan bir komut satırı aracıdır ve Trade Federation test koşum komut satırı seçenekleri hakkında bilgi gerektirmeden testlerin yeniden çalıştırılmasını büyük ölçüde hızlandırır. Bu sayfada, Android testlerini çalıştırmak için Atest'in nasıl kullanılacağı açıklanmaktadır.

Android için test yazma hakkında genel bilgiler için bkz.Android Platform Testi .

Atest'in genel yapısı hakkında bilgi için Atest Geliştirici Kılavuzu'na bakın .

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 bir özellik eklemek için Atest Developer Workflow'u takip edin .

Ortamınızı kurma

Atest'i çalıştırmak için, ortamınızı kurmak üzere aşağıdaki bölümlerde bulunan adımları izleyin.

Ortam değişkenini ayarla

Soong için test_suite veya Ambalaj Başına Yapım derleme komut dosyası kuralları için LOCAL_COMPATIBILITY_SUITE olarak ayarlayın.

Envsetup.sh dosyasını çalıştırın

Android kaynak kontrolünün kökünden şunu çalıştırın:

source build/envsetup.sh

Öğle yemeği çalıştırın

Desteklenen cihazların bir menüsünü açmak için lunch komutunu çalıştırın. Cihazı bulun ve bu komutu çalıştırın.

Örneğin, bağlı bir ARM cihazınız varsa, aşağıdaki komutu çalıştırın:

lunch aosp_arm64-eng

Bu, Atest'i çalıştırmak için gerekli çeşitli ortam değişkenlerini ayarlar ve Atest komutunu $PATH yolunuza ekler.

Temel kullanım

Atest komutları şu biçimi alır:

atest test-to-run [optional-arguments]

İsteğe bağlı argümanlar

En sık kullanılan argümanlar aşağıdadır. Tam bir listeye atest --help ulaşılabilir.

Seçenek Uzun seçenek Açıklama
-b --build Test hedefleri oluşturur. (varsayılan)
-i --install Cihaza test yapılarını (APK'lar) yükler. (varsayılan)
-t --test Testleri çalıştırır. (varsayılan)
-s --serial Testleri belirtilen cihazda çalıştırır. Bir seferde bir cihaz test edilebilir.
-d --disable-teardown Test sökme ve temizlemeyi devre dışı bırakır.
--info Belirtilen hedef ve çıkışların ilgili bilgilerini gösterir.
--dry-run Gerçekte testler oluşturmadan, kurmadan ve çalıştırmadan kuru çalıştırma
-m --rebuild-module-info module-info.json dosyasının yeniden oluşturulmasını module-info.json .
-w --wait-for-debugger Yürütmeden önce hata ayıklayıcıyı bekler. Yalnızca enstrümantasyon testleri için.
-v --verbose Hata ayıklama düzeyi günlük kaydını görüntüler.
--iterations Maksimum yinelemeye ulaşılana kadar döngüsel testler. (Varsayılan olarak 10)
--rerun-until-failure Bir arıza oluşana veya maksimum yinelemeye ulaşılana kadar tüm testleri yeniden çalıştırır. (Varsayılan olarak 10)
--retry-any-failure Başarısız olan testleri geçene veya maksimum yinelemeye ulaşılana kadar yeniden çalıştırır. (Varsayılan olarak 10)
--start-avd Otomatik olarak bir AVD oluşturur ve sanal cihaz üzerinde testler çalıştırır.
--acloud-create acloud command. kullanarak acloud command. oluşturur acloud command.
--[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 bir cihaz olmadan ana bilgisayarda tamamen çalıştırır.
(Not: --host içeren bir cihaz gerektiren bir ana bilgisayar testi çalıştırmak başarısız olur.)
--flakes-info Test sonucunu pul bilgisiyle gösterir.
--history Test sonucunu kronolojik sırayla gösterir.
--latest-result En son test sonucunu yazdırır.

-b , -i ve -t hakkında daha fazla bilgi için bkz. Adımları belirtme: oluşturma, yükleme veya çalıştırma.

Çalıştırılacak testler

test-to-run kullanarak bir veya daha fazla test test-to-run . Birden çok test çalıştırmak için, test referanslarını boşluklarla ayırın. Örneğin:

atest test-to-run-1 test-to-run-2

İşte bazı örnekler:

atest FrameworksServicesTests
atest example/reboot
atest FrameworksServicesTests CtsVideoTestCases
atest FrameworksServicesTests:ScreenDecorWindowTests

Bir teste nasıl referans verileceği hakkında daha fazla bilgi için bkz . Testleri tanımlama.

Testleri tanımlama

test-to-run bağımsız değişkenini testin modül adı, Modül: Sınıf, sınıf adı, TF entegrasyon testi, dosya yolu veya paket adı ile belirtebilirsiniz.

Modül Adı

Tüm bir test modülünü çalıştırmak için modül adını kullanın. Adı, testin Android.mk veya Android.bp dosyasında LOCAL_MODULE veya LOCAL_PACKAGE_NAME değişkenlerinde göründüğü şekilde LOCAL_MODULE .

Ö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'ı kullanın. Modül , Modül adında açıklananla aynıdır. Sınıf , .java dosyasındaki test sınıfının adıdır ve tam nitelikli sınıf adı veya temel ad olabilir.

Örnekler:

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

Sınıf adı

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

Örnekler:

atest ScreenDecorWindowTests
atest VideoEncoderDecoderTest

Modülün kullanılması: Sınıf referansı, eğer modül belirtilmemişse, Atest'in potansiyel eşleşmeler için tüm kaynak ağacını araştırması daha fazla zamana ihtiyaç duyduğundan, mümkün olduğunda önerilir.

Örnekler (en hızlıdan en yavaşa doğru sıralanır):

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

TF entegrasyon testi

Doğrudan TradeFed'e (modül olmayan) entegre edilmiş testleri çalıştırmak için, adı tradefed.sh list configs komutunun çıktısında göründüğü gibi tradefed.sh list configs . Örneğin:

reboot.xml testini çalıştırmak için:

atest example/reboot

native-benchmark.xml testini çalıştırmak için:

atest native-benchmark

Dosya yolu

Uygun şekilde test dosyalarına veya dizinlerine giden yolu girerek hem modül tabanlı testleri hem de entegrasyon tabanlı testleri çalıştırabilirsiniz. Ayrıca, sınıfın Java dosyasının yolunu belirterek tek bir sınıf çalıştırabilirsiniz. Hem göreli hem de mutlak yollar desteklenir.

Örnek: CtsVideoTestCases modülünü yol üzerinden çalıştırmanın iki yolu

  1. Modülü Android repo-root :

    atest cts/tests/video
    
  2. Android repo-root / cts / test / videodan:

    atest .
    

Örnek: CtsVideoTestCases modülünde yol aracılığıyla belirli bir sınıfı çalıştırın. Android repo-root :

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

Örnek: Yol aracılığıyla bir entegrasyon testi çalıştırın. Android repo-root :

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

Paket ismi

Atest, testlerin paket adına göre aranmasını destekler.

Örnekler:

atest com.android.server.wm
atest android.jank.cts

Adımları belirleme: Oluşturun, kurun veya çalıştırın

-b , -i ve -t seçeneklerini kullanarak hangi adımların çalıştırılacağını belirtebilirsiniz. Bir seçenek belirtmezseniz, tüm adımlar çalışır.

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

Atest, bir testi temizleme / sökme adımını atlamaya zorlayabilir. CTS gibi birçok test, test çalıştırıldıktan sonra cihazı temizler, bu nedenle testinizi -t ile yeniden çalıştırmaya çalışmak --disable-teardown parametresi olmadan başarısız olur. Test temizleme adımını atlamak ve yinelemeli 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

Bir test sınıfı içinde belirli yöntemleri çalıştırabilirsiniz. Tüm modülün oluşturulması gerekmesine rağmen bu, testleri çalıştırmak için gereken süreyi azaltır. Belirli yöntemleri çalıştırmak için, bir sınıfı tanımlamak için desteklenen yöntemlerden herhangi birini kullanarak sınıfı tanımlayın (Modül: Sınıf, dosya yolu vb.) Ve yöntemin adını ekleyin.

atest reference-to-class#method1

Virgülle birden çok yöntem belirtebilirsiniz.

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

Örnekler:

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

Aşağıdaki iki örnek, testFlagChange adlı tek bir yöntemi çalıştırmanın tercih edilen yollarını gösterir. Modülün veya Java dosya konumunun belirtilmesi Atest'in testi çok daha hızlı bulmasını sağladığından, bu örnekler yalnızca sınıf adını kullanmak yerine tercih edilir:

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

    atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange
    
  2. Android repo-root

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

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

atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval ScreenDecorWindowTests#testMultipleDecors

Birden çok sınıf çalıştırmak

Birden çok sınıf çalıştırmak için, birden çok test çalıştırırken olduğu gibi bunları boşluklarla ayırın. Atest, sınıfları verimli bir şekilde oluşturur ve çalıştırır, bu nedenle bir modülde bir sınıf alt kümesi belirtmek, tüm modülü çalıştırmaya göre performansı artırır.

Örnekler:

  • Aynı modülde iki sınıf:

    atest FrameworksServicesTests:ScreenDecorWindowTests FrameworksServicesTests:DimmerTests
    
  • Farklı modüllerde iki sınıf:

    atest FrameworksServicesTests:ScreenDecorWindowTests CtsVideoTestCases:VideoEncoderDecoderTest
    

Yerel testleri çalıştırma

Atest yerel testleri çalıştırabilir. Bu örnekte armeabi-v7a (ARM 32-bit) ve arm64-v8a (ARM 64-bit) olan tüm kullanılabilir aygıt mimarileri için testleri çalıştırmak için -a kullanın.

Örnekler:

  • Giriş testleri:

    atest -a libinput_tests inputflinger_tests
    

Çalıştırılacak belirli bir yerel testi seçmek için, iki nokta üst üste (:) kullanarak test adını ve hashtag'i (#) ayrı bir yöntemi daha ayrıntılı belirtmek için kullanın. Örneğin, aşağıdaki test tanımı için:

TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents)

atest inputflinger_tests:InputDispatcherTest
kullanarak tüm testi çalıştırabilirsiniz

veya

atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents
kullanan bireysel bir test yöntemi

Yinelemede test çalıştırma

Yinelemeli testleri çalıştırmak için --iterations bağımsız değişkenini --iterations yeterlidir. Geçse de başarısız olsa da, en yüksek yinelemeye ulaşılana kadar testi durdurmayacaktır.

Örnekler:

Varsayılan olarak, en az 10 kez yinelenir ve yineleme turunu değiştirmek için bir tam sayı verir.

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

Kullanıcıların güvenilir olmayan testleri tespit etmesine yardımcı olan iki yaklaşım:

Yaklaşım 1: Bir arıza oluşana veya maksimum yinelemeye ulaşılana kadar tüm testleri çalıştırın.

  • Bir hata oluştuğunda veya yineleme 10. (varsayılan olarak) tura ulaştığında durun.
    atest test-to-run --rerun-until-failure
    
  • Bir arıza meydana geldiğinde veya yineleme 100. tura ulaştığında dur
    atest test-to-run --rerun-until-failure 100
    

Yaklaşım 2: Geçilene veya maksimum yinelemeye ulaşılana kadar yalnızca başarısız testleri çalıştırın.

  • test-to-run run'da beş test senaryosu olduğunu ve testlerden birinin başarısız olduğunu varsayın. Yalnızca başarısız olan testi 10 kez veya test geçene kadar çalıştırın.
    atest test-to-run --retry-any-failure
    
  • 100. turu geçtiğinde veya ulaştığında başarısız olan testi çalıştırmayı durdurun.
    atest test-to-run --retry-any-failure 100
    

AVD'lerde test çalıştırma

Atest, yeni oluşturulan AVD ile testleri çalıştırabilir. Atest, acloud create çalıştırmanın yanı sıra acloud create ve AVD başarıyla oluşturulduktan sonra testleri çalıştırabilir.

Örnekler:

  • Yeni oluşturulan cihazda testleri çalıştırmadan önce bir AVD başlatın:

    acloud create && atest test-to-run
    
    Şimdi basitleştirilebilir:
    atest test-to-run --start-avd
    

  • ACLoud'un bağımsız değişkenler acloud create ve yeni oluşturulan bu cihaz üzerinde testler çalıştırın.

    atest test-to-run --acloud-create "--build-id 6509363 --build-target aosp_cf_x86_phone-userdebug --branch aosp_master"
    

Bağımsız değişkenle ilgili kullanım ayrıntılarını almak için acloud create --help çalıştırın.