gcloud KSA ile teste başlayın

Bu kılavuzda, gcloud CLI kullanılarak enstrümantasyon, Robo veya Oyun Döngüsü testinin nasıl çalıştırılacağı açıklanmaktadır.

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

Başlamadan önce

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

1. adım: gcloud CLI'ı kurma

  1. Google Cloud SDK'yı indirin
  2. gcloud KSA aracı da buna dahildir.

  3. Yüklemenizin güncel olduğundan emin olun:
    gcloud components update
    
  4. Google Hesabınızı kullanarak gcloud KSA'da 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: Kullanılabilir test cihazlarını kontrol etme

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

İsterseniz 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 araç testleri dosyasını kullanın.

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

    gcloud firebase test android models list
    

    Komut çıkışında:

    • MODEL_ID sütunu, daha sonra cihaz modelinde test ç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 çıkış

    gcloud firebase test android modelleri liste çıkışı

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

    gcloud firebase test android models describe MODEL_ID
    

    Çıkışta cihaz modelinin markası, üreticisi, OS sürümleri, desteklenen API düzeyleri, desteklenen Uygulama İkili Arabirimleri (ABI), yayın tarihleri ve cihazın fiziksel mi sanal mı olduğu bulunur.

  • versions list: Mevcut işletim sistemi sürümlerinin listesini inceleyerek karşılaştırarak test edin.

    gcloud firebase test android versions list
    

    Daha sonra bir Android OS sürümüne göre test çalıştırmak için komut çıkışının ilk iki sütunundan (OS_VERSION_ID ve VERSION) bir tanımlayıcı kullanabilirsiniz. Test edilecek Android OS sürümlerini belirtmezseniz TAGS sütununda belirtilen varsayılan değer kullanılır.

    Örnek çıkış

    gcloud android sürümleri listesi

  • locales list: Test edebileceğiniz yerel ayarların geçerli listesini görün.

    gcloud firebase test android versions list
    

    Komut çıkışının ilk sütunu olan LOCALE, daha sonra bir yerel ayara göre testleri çalıştırmak için kullanabileceğiniz tanımlayıcıyı içerir. Test yapacağınız 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ılabilecek cihaz modelleri, yerel ayarlar ve işletim sistemi sürümlerini öğrendiğinize göre, Robo veya araç testleri çalıştırmak için gcloud firebase test android run komutunu ve --device işaretini kullanarak cihazları belirtebilirsiniz.

Robo testi çalıştır

Herhangi bir araç testiniz olmasa bile uygulamanızdaki hataları arayabilirsiniz. Uygulamanızın kullanıcı arayüzünün otomatik olarak incelenmesini sağlamak için Robo testini kullanın. Robo test, uygulamanın kullanıcı arayüzünden çeşitli yolların statik analizini yaparak uygulamayı alıştırmalar, ardından kilitlenmeleri ve diğer olası sorunları bulmak için uygulamada tarama yapar.

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 değeri belirtilmezse --type robo parametresi örtülüdür.
  • Firebase konsolunda test matrislerinizi tanımlamanıza ve bulmanıza yardımcı olması için isteğe bağlı --client-details matrixLabel="Example matrix label" işaretini kullanarak test matrisinizi etiketleyebilirsiniz.
  • Test çalıştırmak için komut satırı seçeneklerinin tamamını görebilirsiniz: gcloud help firebase test android run.

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

Robo testin test sonuçlarını nasıl inceleyeceğinizi öğrenmek için Test sonuçlarınızı analiz etme bölümüne bakın.

Araç testi çalıştır

Şimdi gcloud komut satırı aracını kullanarak Not Defteri uygulamasının Espresso testlerini belirttiğiniz Android cihaz yapılandırmalarında çalıştırın. app-debug-test-unaligned.apk ürününde testleri ç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"
  • --test ile bir test APK'sı belirtilirse --type araç parametresi örtülüdür.
  • Firebase konsolunda test matrislerinizi tanımlamanıza ve bulmanıza yardımcı olması için isteğe bağlı --client-details matrixLabel="Example matrix label" işaretini kullanarak test matrisinizi etiketleyebilirsiniz.
  • gcloud help firebase test android run yazarak test ç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, bağımsız değişkenlerinizi YAML biçimli bir bağımsız değişken dosyasında da belirtebilirsiniz. Bu özelliği nasıl kullanacağınızı öğrenmek için gcloud topic arg-files komutunu çalıştırın.

gcloud KSA, Android Test Orchestrator'ı destekler. Orkestratör, AndroidJUnitRunner v1.1 veya üzerini gerektirir. Etkinleştirmek için
--use-orchestrator işaretiyle birlikte gcloud firebase test android run kullanın. Devre dışı bırakmak için --no-use-orchestrator işaretini kullanın.

Ayrıca Test Lab'in, yukarıda gösterilmeyen ek işaretleri kullanarak enstrümantasyon testlerinizi nasıl çalıştırdığını da kontrol edebilirsiniz. Örneğin, tek bir sınıfı veya test APK'nızın kullandığı bir sınıf yöntemini test etmek için --test-targets işaretini kullanabilirsiniz. Başarısız olan testinizin gerçekten güvenilir olup olmadığını ya da test durumlarından birinin veya daha fazlasının herhangi bir nedenle başarısız olması durumunda test yürütmenin kaç kez yeniden denenmesi gerektiğini belirten --num-flaky-test-attempts işaretini kullanarak testinizin gerçekten güvenilir olup olmadığını öğrenebilirsiniz. Daha fazla bilgi edinmek için gcloud firebase test android run sayfasına bakın.

Araç testleri için kod kapsamı raporları

Test Lab, EMMA ve JaCoCo kod kapsamı raporlama araçlarını destekler. İki araçtan biri uygulamanızın derlemesine entegre edilmişse gcloud firebase test android run öğesini bazı ek bağımsız değişkenlerle birlikte çalıştırarak Test Lab 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 aynı zamanda 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. Terminalinizdeki test sonucu tablosunun üzerinde yazdırılan gcloud aracının bulunduğu Firebase konsol bağlantısını açın.
  2. Söz konusu bağlantıdaki listeden bir test yürütmesini tıklayarak yürütmenin ayrıntılar sayfasını açın.
  3. Bu yürütmenin test sonuçlarını içeren Cloud Storage paketine gitmek için Test sonuçları'nı tıklayın.
  4. Kod kapsamı raporunuzu görmek için artifacts/coverage.ec uygulamasını açın.

Test sonuçlarınızı analiz etme

Birkaç dakika sonra gcloud aracı test sonuçlarınızın temel bir özetini yazdırır:

Komut test sonuçları

Komut satırı test çalıştırmanızın sonucunda, test sonuçlarını görüntüleme bağlantısı da bulunur. Bu sonuçları nasıl yorumlayacağınız hakkında daha fazla bilgi edinmek için Android Sonuçları için Firebase Test Lab'i Analiz Etme bölümüne bakın.

Robo test ile özel giriş ve metin girişi

Robo testi, --no-auto-google-login parametresini kullanmadığınız sürece kimlik doğrulama için 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ı 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ı doldurmak için --robo-directives parametresini kullanın ve key-value çiftlerinin virgülle ayrılmış listesini sağlayın. Burada key, hedef kullanıcı arayüzü öğesinin Android kaynak adı, value ise metin dizesidir. Bu işareti Robo'ya belirli kullanıcı arayüzü öğelerini (ör. "çıkış" düğmesi). EditText alanları desteklenir ancak WebView kullanıcı arayüzü öğelerinde metin alanları desteklenmez.

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

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

Kullanılabilir komutlar ve işaretler

Test Lab gcloud CLI'de, farklı spesifikasyonlara sahip testler çalıştırmanızı sağlayan çeşitli komut ve işaretler bulunur:

  • Android Test Orchestrator işareti: Orchestrator aracını etkinleştiren bir işaret. Bu araç,uygulamanızın her testini kendi Instrumentation çağrısında çalıştırmanıza olanak tanır. Test Lab her zaman Orchestrator'ın en yeni sürümünü çalıştırır.

  • Oyun Döngüsü test işaretleri: Oyun uygulamalarındaki oyuncu işlemlerini simüle etmek için bir "demo modunu" etkinleştiren ve kontrol eden bir dizi yapılandırma işareti. Test Lab ile Oyun Döngüsü testlerini çalıştırma hakkında daha fazla bilgi edinin.

  • Tek Tip Parçalama işareti (beta sürümde): Test durumlarını eşit olarak dağıtmak istediğiniz parça sayısını belirten bir işaret. Parçalar ayrı cihazlarda paralel olarak çalıştırılır.

  • Manuel Parçalama işareti (beta sürümünde): Bir parçada (test durumu grubu) çalıştırılacak paket, sınıf ve/veya test durumu grubunu belirten bir işaret. Parçalar ayrı cihazlarda paralel çalıştırılır.

  • Ağ trafiği profilleri işareti (beta sürümünde): Testlerinizin fiziksel cihazlarla hangi ağ profilini kullandığını belirten bir işaret. Ağ profilleri çeşitli ağ koşullarını taklit ederek uygulamanızın güvenilir olmayan veya tahmin edilemeyen ağlarda performansını test etmenize olanak tanır.

Test Lab ile gcloud komutlarını komut dosyası çalıştırma

Normalde gcloud komut satırını kullanarak çalıştırabileceğiniz mobil uygulama test komutlarını otomatikleştirmek için kabuk komut dosyalarını veya toplu dosyaları kullanabilirsiniz. Aşağıdaki örnek bash komut dosyası, iki dakikalık zaman aşımıyla bir araç testi çalıştırır ve test çalıştırmanı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 dosyaları 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ı komut dosyası oluşturma

Çıkış kodu Notlar
0 Tüm test işlemleri başarılı oldu.
1 Genel bir hata oluştu. Bunun olası nedenleri şunlardı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ütmesindeki bir veya daha fazla test durumu (test edilen sınıf 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.
CANNOT TRANSLATE Uyumsuz test boyutları nedeniyle bu test yürütmesi için test ortamı desteklenmiyor. Bu hata, seçilen Android API düzeyi seçilen cihaz türü tarafından desteklenmiyorsa ortaya çıkabilir.
19 Test matrisi kullanıcı tarafından iptal edildi.
20 Test altyapısı hatası oluştu.