gcloud CLI ile test etmeye başlayın

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

Test Lab'de Android uygulamanızla kullanabileceğiniz gcloud komutlarının tam listesi için gcloud firebase test android başvuru 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 CLI'de 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
    

Adım 2. 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. app-debug-unaligned.apk ikili dosyasını ve NotePad/app/build/outputs/apk/ içinde bulunan app-debug-test-unaligned.apk enstrümantasyon testleri dosyasını kullanın.

  • models list : Test etmeniz için mevcut Android cihazlarının güncel bir listesini alın.

    gcloud firebase test android models list
    

    Komut çıktısında:

    • MODEL_ID sütunu, daha sonra cihaz modelinde testler yapmak için kullanabileceğiniz tanımlayıcıyı içerir.
    • OS_VERSION_ID sütunu, cihaz tarafından desteklenen 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ı, aygıt modelinin markasını, üreticisini, işletim sistemi sürümlerini, desteklenen API düzeylerini, yayın tarihlerini ve aygıtın fiziksel mi yoksa sanal mı olduğunu içerir.

  • versions list : Test etmek için 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 ) bir tanımlayıcı kullanabilirsiniz. Test edilecek Android işletim sistemi sürümlerini belirtmezseniz, TAGS sütununun altında belirtilen varsayılan değer kullanılır.

    Örnek çıktı

    gcloud android versions list

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

    gcloud firebase test android versions list
    

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

Koşu testleri

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

Robo testini çalıştırma

Herhangi bir enstrümantasyon testiniz olmasa bile, uygulamanızda hala hata 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ü aracılığıyla çeşitli yolların statik bir analizini gerçekleştirerek ve ardından çökmeleri ve diğer olası sorunları bulmak için uygulamada gezinerek uygulamayı çalıştırır.

Örnek bir komut çalıştırarak başlayalım:

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

--type robo parametresi, --type değeri belirtilmemişse örtüktür. Yazarak testleri çalıştırmak için komut satırı seçeneklerinin tamamını görebilirsiniz: gcloud help firebase test android run . Tüm 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 testinden elde edilen test sonuçlarını nasıl araştıracağınızı öğrenmek için Test sonuçlarınızı analiz edin bölümüne bakın.

Enstrümantasyon testlerinizi çalıştırma

Şimdi, belirtilen Android cihaz yapılandırmalarınızda Notepad uygulamasının Espresso testlerini çalıştırmak için gcloud komut satırı aracını kullanın. app-debug-test-unaligned.apk içindeki 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

--type instrumentation parametresi, --test ile bir test APK'sı belirtilmişse --test . Tüm 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. Orkestratör, AndroidJUnitRunner v1.1 veya üstünü gerektirir. Etkinleştirmek için, gcloud firebase test android run :
--use-orchestrator bayrağı. Devre dışı bırakmak için --no-use-orchestrator bayrağını kullanın.

Test Lab'in enstrümantasyon testlerinizi nasıl çalıştıracağını yukarıda gösterilmeyen ek bayrakları kullanarak 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. Başarısız olan testinizin gerçekten kesintili olup olmadığını --num-flaky-test-attempts bayrağını kullanarak da öğrenebilirsiniz; bu, bir veya daha fazla test senaryosu olduğunda bir 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 testi android çalıştırma konusuna bakın.

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

Test Lab, kod kapsamı raporlama araçları EMMA ve JaCoCo'yu destekler. Uygulamanızın derlemesine entegre edilmiş herhangi bir aracınız varsa, gcloud firebase test android run bazı ek argümanlarla ç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'ı 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ı bitirdiğinde, Google Cloud Storage'da kod kapsamı raporlarınızı bulun:

  1. gcloud aracının test sonucu tablosunun üzerine yazdırdığı Firebase konsol bağlantısını açın.
  2. Yürütmenin ayrıntılar sayfasını açmak için o bağlantıdaki listeden bir test yürütmesini tıklayın.
  3. 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 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ı, test sonuçlarını görüntülemek için bir bağlantı da içerir. Bu sonuçların nasıl yorumlanacağı hakkında daha fazla bilgi edinmek için Android Sonuçları için Firebase Test Lab'ı Analiz Etme bölümüne bakın.

Robo testi ile ö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 oturum açma ekranlarını da tamamlayabilir. Bu parametreyi, uygulamanız tarafından kullanılan diğer metin alanları için ö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ı arabirimi öğesinin Android kaynak adı ve value metin dizesidir. . Bu bayrağı, Robo'ya belirli UI öğelerini (örneğin, "çıkış" düğmesi) yok saymasını söylemek için de kullanabilirsiniz. EditText alanları desteklenir ancak WebView UI öğ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

Kullanılabilir komutlar ve bayraklar

Test Lab gcloud CLI'de, farklı özelliklerde testler çalıştırmanıza izin veren ç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 izin veren bir araç olan Orchestrator'ı etkinleştirmek için bir bayrak. Test Lab, her zaman Orchestrator'ın en son sürümünü çalıştırır.

  • Oyun Döngüsü test bayrakları : Oyun uygulamalarında 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 testleri çalıştırma hakkında daha fazla bilgi edinin.

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

  • El ile Parçalama bayrağı (beta) : Bir parçada (bir grup test senaryosu) çalıştırılacak bir grup paketi, 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) : Testlerinizin fiziksel cihazlarla hangi ağ profilini kullandığını belirten bir bayrak. Ağ profilleri, çeşitli ağ koşullarına öykünerek uygulamanızın performansını güvenilmez veya öngörülemeyen ağlarda test etmenize olanak tanır.

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

Aksi takdirde 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 betiği, iki dakikalık bir zaman aşımı ile 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 birkaç çıkış kodu sağlar.

Test Lab için komut dosyası çıkış kodları

Çıkış kodu Notlar
0 Tüm test yürütmeleri geçti.
1 Genel bir arıza meydana geldi. Olası nedenler şunlardır: var 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ütmesi içindeki 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 geçip geçmediğini belirleyemedi.
18 Bu test yürütmesi için test ortamı, uyumsuz test boyutları nedeniyle desteklenmiyor. Bu hata, seçilen Android API düzeyi seçilen cihaz türü tarafından desteklenmiyorsa oluşabilir.
19 Test matrisi kullanıcı tarafından iptal edildi.
20 Bir test altyapısı hatası oluştu.