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.

Test Lab'te Android uygulamanızla kullanabileceğiniz gcloud komutlarının tam listesi için gcloud firebase test android ile ilgili referans dokümanlarını inceleyin.

Başlamadan önce

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

1. Adım. gcloud CLI'yi ayarlama

  1. Google Cloud SDK'yı indirin
  2. gcloud CLI aracı da bu kapsamdadır.

  3. Yüklemenizin güncel olduğundan emin olun:
    gcloud components update
    
  4. Google Hesabınızı kullanarak gcloud CLI'de oturum açın:
    gcloud auth login
    
  5. 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ını görüntülemek üzere aşağıdaki gcloud komutlarını kullanın.

Dilerseniz komutları hemen çalıştırmaya başlamak için örnek not defteri uygulamasını da indirebilirsiniz. NotePad/app/build/outputs/apk/ içinde bulunan app-debug-unaligned.apk ikili dosyasını ve app-debug-test-unaligned.apk enstrümantasyon testleri dosyasını 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 Arayüzü (ABI), sürüm tarihleri ve cihazın fiziksel mi yoksa sanal mı olduğu yer alır.

  • versions list: Test edebileceğiniz mevcut 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şı test çalıştırmak için komut çıktısı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 sürüm kullanılır.

    Örnek çıkış

    gcloud android versions list

  • locales list: Test için kullanılabilen mevcut yerel ayarların listesini alın.

    gcloud firebase test android versions list

    Komut çıktısının ilk sütunu (LOCALE), daha sonra bir yerel ayara göre 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ılabilen cihaz modelleri, yerel ayarlar ve işletim sistemi sürümleri aralığını bildiğinize göre, Robo veya enstrümasyon testleri ç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ızda hata olup olmadığını kontrol edebilirsiniz. Uygulamanızın kullanıcı arayüzünü otomatik olarak incelemek için Robo test'i kullanın. Robo test, uygulamanın kullanıcı arayüzündeki çeşitli yolların statik analizini yaparak uygulamayı çalıştırır ve ardından kilitlenmeler ile 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 varsayılan olarak kullanılı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" işaretini kullanabilirsiniz.
  • Test çalıştırmak için komut satırı seçeneklerinin tamamını görmek istiyorsanız gcloud help firebase test android run yazın.

Bu bağımsız değişkenleri komut satırında belirtmenin alternatifi olarak, bağımsız değişkenlerinizi isteğe bağlı olarak 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 dosyasını ç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

Ardından, 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 test türünü kullanarak app-debug-test-unaligned.apk'te testleri aşağıdaki gibi çalıştırın:instrumentation

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ı belirtilmişse --type enstrümantasyon parametresi varsayılan olarak kullanılır.
  • Test matrislerinizi Firebase konsolunda 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" işaretini kullanabilirsiniz.
  • gcloud help firebase test android run yazarak test çalıştırmayla ilgili komut satırı seçeneklerinin tamamını görebilirsiniz.

Bu bağımsız değişkenleri komut satırında belirtmenin alternatifi olarak, bağımsız değişkenlerinizi isteğe bağlı olarak 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 dosyasını ç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 ile
--use-orchestrator simgesini 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şaretçileri kullanarak Test Lab'ü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. 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, testin bir veya daha fazla test senaryosu herhangi bir nedenle başarısız olursa test çalıştırmanın kaç kez yeniden denenmesi gerektiğini belirtir. Daha fazla bilgi için gcloud firebase test android run komutuna bakın.

Araç testleri için kod kapsamı raporları

Test Lab, kod kapsamı raporlama araçları EMMA ve JaCoCo'yu destekler. Bu iki araçtan birini uygulamanızın derlemesine entegre ettiyseniz gcloud firebase test android run'ı bazı ek bağımsız değişkenlerle çalıştırarak Test Lab testleri için kod kapsamı raporu alabilirsiniz. Android Test Orkestratörü 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'ı da 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ı tamamladığında kod kapsamı raporlarınızı Google Cloud Storage'te bulabilirsiniz:

  1. Terminalinizdeki test sonucu tablosunun üstüne gcloud aracının yazdırdığı Firebase konsol bağlantısını açın.
  2. İlgili bağlantıdaki listeden bir test yürütmeyi tıklayarak yürütmenin ayrıntılar sayfasını açın.
  3. Söz konusu 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'ü 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üleme bağlantısını da içerir. Bu sonuçları nasıl yorumlayacağınız hakkında daha fazla bilgi edinmek için Android Sonuçları için Firebase Test Lab'ü analiz etme başlıklı makaleyi inceleyin.

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

Robo test, --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ı 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ış bir key-value çiftleri listesi sağlayın. Bu listede 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. "Oturumu kapat" 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: Uygulamanızın her testini kendi Instrumentation çağrısında çalıştırmanıza olanak tanıyan bir araç olan Orchestrator'ı etkinleştirmek için kullanılan 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 modunu" etkinleştiren ve kontrol eden bir yapılandırma işaretleri grubu. Test Lab ile oyun döngüsü testleri çalıştırma hakkında daha fazla bilgi edinin.

  • Tekdüzen Bölme işareti (beta sürümünde): 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 Bölme İşareti (beta sürümünde): Bir paket, sınıf ve/veya test grubu çalıştırılacak bir parçayı (test grubu) belirten işaret. Parçalar ayrı cihazlarda paralel olarak çalıştırılır.

  • Ağ trafiği profili 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 dosyalarını kullanabilirsiniz. Aşağıdaki örnek bash komut dosyası, iki dakikalık zaman aşımı olan 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ı çıkış kodları

Çıkış kodu Notlar
0 Tüm test işlemleri geçti.
1 Genel bir hata oluştu. Olası nedenler arasında var 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şleminde bir veya daha fazla test durumu (test edilen sınıflar veya sınıf yöntemleri) geçemedi.
15 Firebase Test Lab, beklenmedik bir hata nedeniyle test matrisinin başarılı olup olmadığını belirleyemedi.
18 Uyumlu olmayan test boyutları nedeniyle bu test yürütme işlemi 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.