gcloud KSA ile teste başlayın

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

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

Başlamadan önce

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

1. Adım: gcloud CLI'yı ayarlama

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

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

2. adım: Kullanılabilir test cihazlarını kontrol etme

Testiniz için kullanılabilen test cihazlarını ve yerel ayarları görüntülemek üzere 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/ dizininde bulunan ikili program dosyasını (app-debug-unaligned.apk) ve enstrümantasyon testleri dosyasını (app-debug-test-unaligned.apk) kullanın.

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

    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 models list çı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, işletim sistemi sürümleri, desteklenen API düzeyleri, desteklenen Uygulama İkili Arabirimleri (ABI), yayın tarihleri ve cihazın fiziksel mi yoksa sanal mı olduğu bilgisi yer alır.

  • versions list: Test için kullanılabilen mevcut OS sürümlerinin listesini alın.

    gcloud firebase test android versions list

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

    Örnek çıkış

    gcloud android versions list

  • locales list: Test edilebilecek mevcut yerel ayarların listesini alın.

    gcloud firebase test android locales list

    Komut çıkışının ilk sütunu olan LOCALE, daha sonra bir yerel ayara karşı test ç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ırma

Uygulamanızı test etmek için kullanabileceğiniz cihaz modelleri, yerel ayarlar ve OS sürümlerini öğrendiğ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.

Robo testi çalıştır

Enstrümantasyon testiniz olmasa bile uygulamanızdaki hataları arayabilirsiniz. Uygulamanızın kullanıcı arayüzünü otomatik olarak incelemek için Robo testini kullanın. Robo test, uygulamanın kullanıcı arayüzündeki çeşitli yolların statik analizini yaparak uygulamayı dener ve ardından uygulamayı tarayarak kilitlenmeleri ve diğer olası sorunları bulur.

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ük olur.
  • 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.
  • Testleri çalıştırmak için kullanabileceğiniz komut satırı seçeneklerinin tamamını görmek için gcloud help firebase test android run yazın.

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ğin nasıl kullanılacağını öğrenmek için gcloud topic arg-files komutunu çalıştırın.

Robo testinden elde edilen test sonuçlarını nasıl inceleyeceğinizi öğrenmek için Test sonuçlarınızı analiz etme başlıklı makaleyi inceleyin.

Enstrümantasyon testi çalıştırma

Ş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. instrumentation test türünü kullanarak testleri app-debug-test-unaligned.apk içinde şu şekilde çalıştırı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 enstrümantasyon parametresi örtük olur.
  • 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 testleri çalıştırmak için kullanabileceğiniz 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ğin nasıl kullanılacağını öğrenmek için gcloud topic arg-files komutunu çalıştırın.

gcloud CLI, Android Test Orchestrator'ı destekler. Orchestrator için AndroidJUnitRunner 1.1 veya sonraki bir sürüm gerekir. Etkinleştirmek için gcloud firebase test android run komutunu
--use-orchestrator işaretiyle kullanın. Devre dışı bırakmak için --no-use-orchestrator işaretini kullanın.

Yukarıda gösterilmeyen ek işaretleri kullanarak Test Lab aracının enstrümantasyon testlerinizi nasıl çalıştırdığını da kontrol edebilirsiniz. Örneğin, test APK'nız tarafından kullanılan tek bir sınıfı veya sınıf yöntemini test etmek için --test-targets işaretini kullanabilirsiniz. Ayrıca, başarısız olan testinizin gerçekten kararsız olup olmadığını öğrenmek için --num-flaky-test-attempts işaretini kullanabilirsiniz. Bu işaret, test durumlarından biri veya daha fazlası herhangi bir nedenle başarısız olursa test işleminin kaç kez yeniden denenmesi gerektiğini belirtir. Daha fazla bilgi için gcloud firebase test android run sayfasına bakın.

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

Test Lab, kod kapsamı raporlama araçları olan EMMA ve JaCoCo'yu destekler. Uygulamanızın derlemesine bu araçlardan birini entegre ettiyseniz bazı ek bağımsız değişkenlerle gcloud firebase test android run komutunu çalıştırarak Test Lab testleri için kod kapsamı raporu alabilirsiniz. Android Test Orchestrator etkinleştirilmemişse 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ı da 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ı tamamladığında kod kapsamı raporlarınızı Google Cloud Storage içinde bulabilirsiniz:

  1. gcloud aracının terminalinizdeki test sonucu tablosunun üzerinde yazdırdığı Firebase konsol bağlantısını açın.
  2. İlgili test işleminin ayrıntılar sayfasını açmak için bu bağlantıdaki listeden bir test işlemini tıklayı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 dosyası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 testi sonuçları

Komut satırı test çalıştırmanızın çıkışı, test sonuçlarını görüntülemek için bir bağlantı da içerir. Bu sonuçları nasıl yorumlayacağınız hakkında daha fazla bilgi edinmek için Android için Firebase Test Lab Sonuçlarını Analiz Etme başlıklı makaleyi inceleyin.

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

Robo testi, kimlik doğrulama için Google Hesabı kullanan oturum açma ekranlarını otomatik olarak tamamlar. --no-auto-google-login parametresini kullanırsanız bu işlem yapılmaz. 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ı için özel giriş metni sağlamak amacıyla da kullanabilirsiniz.

Uygulamanızdaki metin alanlarını doldurmak için --robo-directives parametresini kullanın ve virgülle ayrılmış liste key-value çiftleri 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) yoksaymasını söylemek için de kullanabilirsiniz. EditText alanları desteklenir ancak WebView kullanıcı arayüzü öğelerindeki 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'da, farklı özelliklerle test çalıştırmanıza olanak tanıyan çeşitli komutlar ve işaretler bulunur:

  • Android Test Orchestrator işareti: Uygulamanızın her bir testini kendi Instrumentation çağrısında çalıştırmanıza olanak tanıyan bir araç olan Orchestrator'ı etkinleştiren bir işaret. 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ında oyuncu işlemlerini simüle etmek için "demo modunu" etkinleştiren ve kontrol eden bir dizi yapılandırma işareti. Test Lab ile Oyun Döngüsü testleri çalıştırma hakkında daha fazla bilgi edinin.

  • Uniform Sharding flag (Beta): 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 (bir grup test durumu) çalıştırılacak paket, sınıf ve/veya test durumu grubunu belirten bir işaret. Parçalar, ayrı cihazlarda paralel olarak ç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 performansını güvenilir olmayan veya öngörülemeyen ağlarda test etmenize olanak tanır.

Test Lab ile gcloud komutları için komut dosyası oluşturma

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

Çıkış kodu Notlar
0 Tüm test işlemleri başarılı oldu.
1 Genel bir hata oluştu. Olası nedenler arasında mevcut olmayan bir dosya adı veya HTTP/ağ hatası yer alır.
2 Bilinmeyen komutlar veya bağımsız değişkenler sağlandığı için testten çıkıldı.
10 Bir test işlemi içindeki bir veya daha fazla test durumu (test edilen sınıflar veya sınıf yöntemleri) başarısız oldu.
15 Beklenmeyen bir hata nedeniyle Firebase Test Lab, test matrisinin başarılı olup olmadığını belirleyemedi.
18 Bu test işleminin 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 Test altyapısı hatası oluştu.