gcloud KSA ile teste 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.

gcloud'da Android uygulamanızla kullanabileceğiniz Test Lab komutları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'yı ayarlama

  1. Google Cloud SDK'yı indirin.
  2. Buna gcloud CLI aracı 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. 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 kullanılabilen 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 Notepad uygulamasını da indirebilirsiniz. app-debug-unaligned.apk ikili dosyasını ve app-debug-test-unaligned.apk enstrümantasyon testleri dosyasını kullanın. Bu dosyalar NotePad/app/build/outputs/apk/ içinde yer alır.

  • models list: Test etmek için kullanabileceğiniz Android cihazların güncel listesini alın.

    gcloud firebase test android models list

    Komut çıkışında:

    • Sütun MODEL_ID, daha sonra cihaz modelinde test çalıştırmak için kullanabileceğiniz tanımlayıcıyı içerir.
    • OS_VERSION_ID sütununda, cihaz tarafından desteklenen işletim sistemi sürümleri yer alır.

    Örnek çıkış

    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

    Çıkışta cihaz modelinin markası, üreticisi, işletim sistemi sürümleri, desteklenen API düzeyleri, desteklenen uygulama ikili arayüzleri (ABI), yayınlanma tarihleri ve cihazın fiziksel mi yoksa sanal mı olduğu yer alır.

  • versions list: Test etmek için şu anda kullanılabilen işletim sistemi sürümlerinin listesini alın.

    gcloud firebase test android versions list

    Daha sonra bir Android OS sürümüne karşı testler çalıştırmak için komut çıkışının ilk iki sütunundaki tanımlayıcılardan birini (OS_VERSION_ID ve VERSION) kullanabilirsiniz. Test edilecek Android işletim sistemi 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 için kullanılabilen yerel ayarların güncel listesini alın.

    gcloud firebase test android versions 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 kullanılabilecek cihaz modelleri, yerel ayarlar ve işletim sistemi sürümlerinin aralığını öğ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 testleriniz olmasa bile uygulamanızdaki hataları arayabilirsiniz. Uygulamanızın kullanıcı arayüzünü otomatik olarak incelemek için Robo testini kullanın. Robo testi, uygulamanın kullanıcı arayüzündeki çeşitli yolların statik analizini yaparak uygulamayı çalıştırır ve ardından kilitlenmeleri ve diğer olası sorunları bulmak için uygulamayı tarar.

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.
  • Test matrislerinizi Firebase konsolunda tanımlayıp bulmanıza yardımcı olması için test matrisinizi etiketlemek üzere isteğe bağlı --client-details matrixLabel="Example matrix label" işaretini kullanabilirsiniz.
  • Testleri çalıştırmaya yönelik 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 belirtmek yerine, bağımsız değişkenlerinizi isteğe bağlı olarak YAML biçimli bir bağımsız değişken dosyasında belirtebilirsiniz. Bu özelliği nasıl kullanacağınızı öğ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.

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. Testleri instrumentation test türünü kullanarak app-debug-test-unaligned.apk aşağıdaki ş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"
  • --type ile bir test APK'sı belirtilmişse --type enstrümantasyon parametresi örtülüdür.--test
  • Test matrislerinizi Firebase konsolunda tanımlayıp bulmanıza yardımcı olması için test matrisinizi etiketlemek üzere isteğe bağlı --client-details matrixLabel="Example matrix label" işaretini kullanabilirsiniz.
  • Testleri çalıştırmak için komut satırı seçeneklerinin tamamını gcloud help firebase test android run yazarak görebilirsiniz.

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

gcloud CLI, Android Test Orchestrator'ı destekler. Orchestrator için AndroidJUnitRunner v1.1 veya sonraki sürümler gerekir. Etkinleştirmek için gcloud firebase test android run ile
--use-orchestrator işaretini kullanın. Bu özelliği devre dışı bırakmak için --no-use-orchestrator işaretini kullanın.

Ayrıca, yukarıda gösterilmeyen ek işaretleri kullanarak Test Lab'nın enstrümantasyon testlerinizi nasıl çalıştıracağı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. Başarısız olan testinizin gerçekten kararsız olup olmadığını öğrenmek için --num-flaky-test-attempts işaretini de kullanabilirsiniz. Bu işaret, testlerden biri veya daha fazlası herhangi bir nedenle başarısız olursa test yürütme işleminin kaç kez yeniden denenmesi gerektiğini belirtir. Daha fazla bilgi için gcloud firebase test android run başlıklı makaleyi inceleyin.

Araçlı testler için kod kapsamı raporları

Test Lab, kod kapsamı raporlama araçları EMMA ve JaCoCo'yu destekler. Uygulamanızın derlemesine bu araçlardan birini entegre ettiyseniz Test Lab testleri için kod kapsamı raporu almak üzere gcloud firebase test android run komutunu bazı ek bağımsız değişkenlerle çalıştırabilirsiniz. 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ı 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 bölümünde bulabilirsiniz:

  1. Firebase aracının terminalinizdeki test sonucu tablosunun üzerinde yazdırdığı Firebase konsol bağlantısını açın.gcloud
  2. İlgili bağlantıdaki listeden bir test yürütmesini tıklayarak bu yürütmenin ayrıntılar sayfasını açın.
  3. İlgili yürütmenin test sonuçlarının bulunduğu Cloud Storage grubu için Test sonuçları'nı tıklayın.
  4. Kod kapsamı raporunuzu görmek için artifacts/coverage.ec simgesini açın.

Test sonuçlarınızı analiz etme

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

Komut testi sonuçları

Komut satırı test çalıştırmanızın çıktısında, test sonuçlarını görüntüleme bağlantısı da yer alır. 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

--no-auto-google-login parametresini kullanmadığınız sürece Robo testi, 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ı 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 key-value çiftlerinin virgülle ayrılmış bir 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. "logout" düğmesi). 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 KSA'da, farklı özelliklere sahip testler çalıştırmanıza olanak tanıyan çeşitli komutlar ve işaretler bulunur:

  • Android Test Orchestrator işareti: Instrumentation'ın kendi çağrısında uygulamanızın her bir testini çalıştırmanıza olanak tanıyan bir araç olan Orchestrator'ı etkinleştirmek için kullanılan bir işaret. Test Lab her zaman Orchestrator'ın en son 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 "demo modu"nu 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.

  • Tekdüzen Parçalama işareti (beta sürümünde): Test senaryolarını eşit şekilde 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 test grubu) çalıştırılacak bir paket, sınıf ve/veya test grubu belirten 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ını komut dosyasından çalıştırma

Aksi takdirde 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 iş dosyalarını 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ı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 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ı oluşturma çı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 yürütme işlemindeki bir veya daha fazla test durumu (test edilen sınıflar veya sınıf yöntemleri) başarılı olmadı.
15 Beklenmeyen bir hata nedeniyle Firebase Test Lab, test matrisinin başarılı olup olmadığını belirleyemedi.
18 Bu test yürütme için 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.