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
- Google Cloud SDK'yı indirin.
- Kurulumunuzun güncel olduğundan emin olun:
gcloud components update
- Google hesabınızı kullanarak gcloud CLI'de oturum açın:
gcloud auth login
- Firebase projenizi gcloud'da ayarlayın; burada PROJECT_ID , Firebase projenizin kimliğidir:
gcloud config set project PROJECT_ID
Buna gcloud CLI aracı da dahildir.
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ı
-
models describe
: Belirli bir AndroidMODEL_ID
hakkında daha fazla bilgi edinin.gcloud firebase test android models describe MODEL_ID
Çıktı, cihaz modelinin markasını, üreticisini, işletim sistemi sürümlerini, desteklenen API düzeylerini, yayın tarihlerini ve cihazı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 yapmak için komut çıktısının ilk iki sütunundan (
OS_VERSION_ID
veVERSION
) 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ı
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.
Çalışan testler
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, app-debug-test-unaligned.apk
içindeki testleri çalıştırmak için instrumentation
test türünü kullanarak, 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:
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.
Not: Test Lab'ın 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
işaretini kullanabilirsiniz. Başarısız olan testinizin gerçekten kesintili olup olmadığını '--num-flaky-test-attempts' işaretini kullanarak da öğrenebilirsiniz; bu, bir veya daha fazla test yürütmesinin kaç kez yeniden denenmesi gerektiğini belirtir. test durumları herhangi bir nedenle başarısız olur. 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
komutunu aşağıdaki bağımsız değişkenlerle çalıştırarak Test Laboratuvarı testleri için bir kod kapsamı raporu alabilirsiniz:
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/coverage.ec" \ --directories-to-pull /sdcard
Test Lab, testlerinizi çalıştırmayı bitirdiğinde, Google Cloud Storage'da kod kapsamı raporlarınızı bulun:
-
gcloud
aracının test sonucu tablosunun üzerine yazdırdığı Firebase konsol bağlantısını açın. - 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.
- Yürütmenin test sonuçlarını içeren Cloud Storage paketine gitmek için Test sonuçları'nı tıklayın.
- 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:
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ğı ayrıca 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, farklı özelliklerde testler çalıştırmanıza izin veren birkaç komuta ve işarete sahiptir:
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 işaretleri : Oyun uygulamalarında oyuncu eylemlerini simüle etmek için bir "demo modunu" etkinleştiren ve kontrol eden bir dizi yapılandırma işareti. 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ı yazma
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ütme 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. |