gcloud CLI ile test etmeye başlayın

Bu kılavuzda gcloud CLI kullanılarak enstrümantasyon, Robo veya Game Loop testinin nasıl çalıştırılacağı açıklanmaktadır.

Test Lab'deki Android uygulamanızla kullanabileceğiniz gcloud komutlarının tam listesi için gcloud firebase test android referans belgelerini ziyaret edin.

Sen başlamadan önce

Henüz yapmadıysanız Android projenize Firebase'i ekleyin .

1. Adım. gcloud CLI'yi kurun

  1. Google Cloud SDK'yı indirin
  2. Buna gcloud CLI aracı da dahildir.

  3. Kurulumunuzun güncel olduğundan emin olun:
    gcloud components update
    
  4. Google Hesabınızı kullanarak gcloud KSA'sında oturum açın:
    gcloud auth login
    
  5. Firebase projenizi gcloud'da ayarlayın; burada PROJECT_ID , Firebase projenizin kimliğidir:
    gcloud config set project PROJECT_ID
    

2. Adım. Mevcut test cihazlarını kontrol edin

Testiniz için kullanılabilen test cihazlarını ve yerel ayarları görüntülemek için aşağıdaki gcloud komutlarını kullanın.

Bir seçenek olarak, komutları hemen çalıştırmaya başlamak için örnek Not Defteri uygulamasını da indirebilirsiniz. NotePad/app/build/outputs/apk/ konumunda bulunan app-debug-unaligned.apk ikili dosyasını ve app-debug-test-unaligned.apk enstrümantasyon test dosyasını kullanın.

  • models list : Test edebileceğiniz Android cihazların güncel listesini alın.

    gcloud firebase test android models list
    

    Komut çıktısında:

    • MODEL_ID sütunu, daha sonra cihaz modelinde testler çalıştırmak için kullanabileceğiniz tanımlayıcıyı içerir.
    • OS_VERSION_ID sütunu, cihazın desteklediği işletim sistemi sürümlerini içerir.

    Örnek çıktı

    gcloud firebase test android models list output

  • models describe : Belirli bir Android MODEL_ID hakkında daha fazla bilgi edinin.

    gcloud firebase test android models describe MODEL_ID
    

    Çıktı, cihaz modelinin markasını, üreticisini, işletim sistemi sürümlerini, desteklenen API seviyelerini, desteklenen Uygulama İkili Arayüzlerini (ABI), yayın tarihlerini ve cihazın fiziksel mi yoksa sanal mı olduğunu içerir.

  • versions list : Test edilecek mevcut işletim sistemi sürümlerinin bir listesini alın.

    gcloud firebase test android versions list
    

    Daha sonra bir Android işletim sistemi sürümüne karşı testler çalıştırmak için komut çıktısının ilk iki sütunundan ( OS_VERSION_ID ve VERSION ) herhangi birindeki bir tanımlayıcıyı kullanabilirsiniz. Test edilecek Android işletim sistemi sürümlerini belirtmezseniz TAGS sütununda belirtilen varsayılan değer kullanılır.

    Örnek çıktı

    gcloud android versions list

  • locales list : Test edilebilecek yerel ayarların geçerli listesini alın.

    gcloud firebase test android versions list
    

    Komut çıktısının ilk sütunu LOCALE , daha sonra bir yerel ayara karşı testler çalıştırmak için kullanabileceğiniz tanımlayıcıyı içerir. Test edilecek yerel ayarları belirtmezseniz, varsayılan yerel ayar olarak İngilizce kullanılır.

3. Adım. Testinizi çalıştırın

Artık uygulamanızı test etmek için kullanılabilen cihaz modelleri, yerel ayarlar ve işletim sistemi sürümlerini bildiğinize göre, Robo veya enstrümantasyon testlerini çalıştırmak için gcloud firebase test android run komutunu ve --device işaretini kullanarak cihazları belirtebilirsiniz.

Robot testi çalıştırın

Herhangi bir enstrümantasyon testiniz olmasa bile uygulamanızdaki hataları arayabilirsiniz. Uygulamanızın kullanıcı arayüzünün otomatik incelemesini gerçekleştirmek için Robo testini kullanın. Robo testi, uygulamanın kullanıcı arayüzündeki çeşitli yolların statik bir analizini gerçekleştirerek uygulamayı çalıştırır ve ardından çökmeleri ve diğer olası sorunları bulmak için uygulamayı tarar.

Bir Robo testi çalıştırmak için aşağıdaki örnek komutu çalıştırın:

gcloud firebase test android run \
  --type robo \
  --app app-debug-unaligned.apk \
  --device model=Nexus6,version=21,locale=en,orientation=portrait  \
  --device model=Nexus7,version=19,locale=fr,orientation=landscape \
  --timeout 90s \
  --client-details matrixLabel="Example matrix label"
  • --type robo parametresi, --type değeri belirtilmezse örtülüdür.
  • Firebase konsolunda test matrislerinizi tanımlamanıza ve bulmanıza yardımcı olması için, test matrisinizi etiketlemek üzere isteğe bağlı --client-details matrixLabel="Example matrix label" bayrağını kullanabilirsiniz.
  • Testleri çalıştırmak için komut satırı seçeneklerinin tamamını şu komutu yazarak görebilirsiniz: gcloud help firebase test android run .

Bu bağımsız değişkenleri komut satırında belirtmeye alternatif olarak, isteğe bağlı olarak bağımsız değişkenlerinizi YAML biçimli bir bağımsız değişken dosyasında belirtebilirsiniz. Bu özelliğin nasıl kullanılacağını öğrenmek için gcloud topic arg-files çalıştırın.

Robo testindeki test sonuçlarını nasıl araştıracağınızı öğrenmek için bkz. Test sonuçlarınızı analiz etme .

Bir enstrümantasyon testi çalıştırın

Şimdi, Not Defteri uygulamasının Espresso testlerini belirttiğiniz Android cihaz yapılandırmalarında çalıştırmak için gcloud komut satırı aracını kullanın. app-debug-test-unaligned.apk dosyasındaki testleri aşağıdaki gibi çalıştırmak için instrumentation test türünü kullanın:

gcloud firebase test android run \
  --type instrumentation \
  --app app-debug-unaligned.apk \
  --test app-debug-test-unaligned.apk \
  --device model=Nexus6,version=21,locale=en,orientation=portrait  \
  --device model=Nexus7,version=19,locale=fr,orientation=landscape
  --client-details matrixLabel="Example matrix label"
  • --type enstrümantasyon parametresi, --test ile bir test APK'sı belirtilirse örtülüdür.
  • Firebase konsolunda test matrislerinizi tanımlamanıza ve bulmanıza yardımcı olması için, test matrisinizi etiketlemek üzere isteğe bağlı --client-details matrixLabel="Example matrix label" bayrağını kullanabilirsiniz.
  • gcloud help firebase test android run yazarak testleri çalıştırmak için komut satırı seçeneklerinin tamamını görebilirsiniz.

Bu bağımsız değişkenleri komut satırında belirtmeye alternatif olarak, isteğe bağlı olarak bağımsız değişkenlerinizi YAML biçimli bir bağımsız değişken dosyasında belirtebilirsiniz. Bu özelliğin nasıl kullanılacağını öğrenmek için gcloud topic arg-files çalıştırın.

gcloud CLI, Android Test Orchestrator'ı destekler. Orchestrator, AndroidJUnitRunner v1.1 veya üstünü gerektirir. Bunu etkinleştirmek için gcloud firebase test android run kullanın.
--use-orchestrator bayrağı. Devre dışı bırakmak için --no-use-orchestrator bayrağını kullanın.

Yukarıda gösterilmeyen ek işaretleri kullanarak Test Lab'ın enstrümantasyon testlerinizi nasıl çalıştırdığını da kontrol edebilirsiniz. Örneğin, tek bir sınıfı veya test APK'nız tarafından kullanılan bir sınıf yöntemini test etmek için --test-targets bayrağını kullanabilirsiniz. Ayrıca, başarısız olan testinizin gerçekten hatalı olup olmadığını, --num-flaky-test-attempts işaretini kullanarak da öğrenebilirsiniz; bu işaret, bir veya daha fazla test durumunda test yürütmesinin kaç kez yeniden denenmesi gerektiğini belirtir. herhangi bir nedenle başarısız olmak. Daha fazla bilgi edinmek için gcloud firebase test android çalıştırmasını inceleyin.

Enstrümantasyon testleri için kod kapsamı raporları

Test Lab, kod kapsamı raporlama araçlarını EMMA ve JaCoCo'yu destekler. Uygulamanızın yapısına entegre edilmiş araçlara sahipseniz, bazı ek argümanlarla birlikte gcloud firebase test android run çalıştırarak Test Laboratuvarı testleri için bir kod kapsamı raporu alabilirsiniz. Android Test Orchestrator etkin değilse aşağıdakileri kullanın:

gcloud firebase test android run \
  --type instrumentation \
  --app your-app.apk \
  --test your-app-test.apk \
  --device model=TestDevice,version=AndroidVersion  \
  --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \
  --directories-to-pull /sdcard/Download

Android Test Orchestrator'ı kullanırken kod kapsamı raporları oluşturuyorsanız ortam değişkenlerinizi aşağıdaki gibi değiştirin:

gcloud firebase test android run \
  --type instrumentation \
  --app your-app.apk \
  --test your-app-test.apk \
  --device model=TestDevice,version=AndroidVersion  \
  --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \
  --directories-to-pull /sdcard/Download

Test Lab, testlerinizi çalıştırmayı bitirdiğinde kod kapsamı raporlarınızı Google Cloud Storage'da bulun:

  1. gcloud aracının terminalinizdeki test sonucu tablosunun üzerine yazdırdığı Firebase konsolu bağlantısını açın.
  2. İlgili yürütmenin ayrıntılar sayfasını açmak için söz konusu bağlantıdaki listeden bir test yürütmesine tıklayın.
  3. Söz konusu yürütmenin test sonuçlarının bulunduğu Cloud Storage paketine gitmek için Test sonuçları'na tıklayın.
  4. Kod kapsamı raporunuzu görmek için artifacts/coverage.ec dosyasını açın.

Test sonuçlarınızı analiz edin

Birkaç dakika sonra gcloud aracı tarafından test sonuçlarınızın temel bir özeti yazdırılır:

Command test results

Komut satırı test çalıştırmanızın çıktısı ayrıca test sonuçlarını görüntülemek için bir bağlantı içerir. Bu sonuçların nasıl yorumlanacağı hakkında daha fazla bilgi edinmek için bkz . Android Sonuçları için Firebase Test Laboratuvarını Analiz Etme .

Robo testiyle özel oturum açma ve metin girişi

Robo testi, --no-auto-google-login parametresini kullanmadığınız sürece, kimlik doğrulama için bir Google hesabı kullanan oturum açma ekranlarını otomatik olarak tamamlar. Ayrıca sağladığınız test hesabı kimlik bilgilerini kullanarak özel giriş ekranlarını da tamamlayabilir. Bu parametreyi, uygulamanız tarafından kullanılan diğer metin alanlarına özel giriş metni sağlamak için de kullanabilirsiniz.

Uygulamanızdaki metin alanlarını tamamlamak için --robo-directives parametresini kullanın ve key-value çiftlerinin virgülle ayrılmış bir listesini sağlayın; burada key , hedef kullanıcı arayüzü öğesinin Android kaynak adıdır ve value , metin dizesidir. . Bu bayrağı, Robo'ya belirli kullanıcı arayüzü öğelerini (örneğin, "oturumu kapat" düğmesi) yok saymasını söylemek için de kullanabilirsiniz. EditText alanları desteklenir ancak WebView kullanıcı arayüzü öğelerindeki metin alanları desteklenmez.

Örneğin, özel oturum açma için aşağıdaki parametreyi kullanabilirsiniz:

--robo-directives username_resource=username,password_resource=password

Mevcut komutlar ve bayraklar

Test Lab gcloud CLI'da, testleri farklı spesifikasyonlarla çalıştırmanıza olanak tanıyan çeşitli komutlar ve işaretler bulunur:

  • Android Test Orchestrator bayrağı : Uygulamanızın testlerinin her birini kendi Instrumentation çağrısında çalıştırmanıza olanak tanıyan bir araç olan Orchestrator'ı etkinleştiren bir bayrak. Test Lab her zaman Orchestrator'ın en son sürümünü çalıştırır.

  • Game Loop test bayrakları : Oyun uygulamalarındaki oyuncu eylemlerini simüle etmek için bir "demo modunu" etkinleştiren ve kontrol eden bir dizi yapılandırma bayrağı. Test Lab ile Game Loop testlerini çalıştırma hakkında daha fazla bilgi edinin.

  • Tekdüzen Parçalama bayrağı (beta sürümünde) : Test senaryolarını eşit şekilde dağıtmak istediğiniz parça sayısını belirten bir bayrak. Parçalar ayrı cihazlarda paralel olarak çalıştırılır.

  • Manuel Parçalama bayrağı (beta sürümünde) : Bir parçada (bir grup test senaryosu) çalıştırılacak bir grup paket, sınıf ve/veya test senaryosunu belirten bir bayrak. Parçalar ayrı cihazlarda paralel olarak çalıştırılır.

  • Ağ trafiği profilleri bayrağı (beta sürümünde) : Testlerinizin fiziksel cihazlarla hangi ağ profilini kullandığını belirten bir bayrak. Ağ profilleri çeşitli ağ koşullarını taklit ederek uygulamanızın performansını güvenilmez veya öngörülemeyen ağlarda test etmenize olanak tanır.

Test Lab ile gcloud komutlarını komut dosyası oluşturma

Normalde gcloud komut satırını kullanarak çalıştıracağınız mobil uygulama testi komutlarını otomatikleştirmek için kabuk komut dosyalarını veya toplu dosyaları kullanabilirsiniz. Aşağıdaki örnek bash betiği, iki dakikalık zaman aşımına sahip bir enstrümantasyon testi çalıştırır ve test çalıştırmasının başarıyla tamamlanıp tamamlanmadığını bildirir:

if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

Komut dosyası çıkış kodları

Test Lab, komut dosyalarını veya toplu iş dosyalarını kullanarak çalıştırdığınız testlerin sonuçlarını daha iyi anlamak için kullanabileceğiniz çeşitli çıkış kodları sağlar.

Test Lab için çıkış kodlarının komut dosyası oluşturma

Çıkış kodu Notlar
0 Tüm test uygulamaları başarıyla geçti.
1 Genel bir arıza meydana geldi. Olası nedenler arasında şunlar yer alır: mevcut olmayan bir dosya adı veya bir HTTP/ağ hatası.
2 Bilinmeyen komutlar veya bağımsız değişkenler sağlandığı için testten çıkıldı.
10 Bir test yürütmesinde bir veya daha fazla test durumu (test edilen sınıflar veya sınıf yöntemleri) geçemedi.
15 Firebase Test Lab, beklenmeyen bir hata nedeniyle test matrisinin başarılı mı yoksa başarısız mı olduğunu belirleyemedi.
18 Bu test yürütmesine ilişkin test ortamı, uyumsuz test boyutları nedeniyle desteklenmiyor. Seçilen Android API düzeyi seçilen cihaz türü tarafından desteklenmiyorsa bu hata oluşabilir.
19 Test matrisi kullanıcı tarafından iptal edildi.
20 Bir test altyapısı hatası oluştu.