Firebase Test Lab, gcloud komut satırı arayüzü (CLI) ile tam entegrasyon dahil olmak üzere Android uygulamalarını test etmek için bulut tabanlı altyapı sağlar . Bu belge, gcloud CLI'den Test Lab'ı kullanmaya başlamak için gereken kurulum ve yapılandırmayı kapsar.
Test Lab'da Android uygulamanızla kullanabileceğiniz gcloud
komutlarının tam listesi için gcloud firebase test android
için referans belgelerini ziyaret edin .
Uygulamanız için bir Firebase projeniz yoksa, Firebase konsoluna gidin ve şimdi bir tane oluşturmak için Yeni Proje Oluştur'u tıklayın. Projenizde sahiplik veya düzenleme izinlerine ihtiyacınız olacak.
Gcloud KSA'yı ayarlayın
- Google Cloud SDK'yı indirin .
- Kurulumunuzun güncel olduğundan emin olun:
gcloud components update
- Google hesabınızı kullanarak gcloud KSA'ya giriş yapın:
gcloud auth login
- Firebase projenizi gcloud'da ayarlayın; burada PROJECT_ID , Firebase projenizin kimliğidir:
gcloud config set project PROJECT_ID
Bu, gcloud CLI aracını içerir.
Testinizi yapılandırın
Bu örnekte, Not Defteri adlı basit bir not alma Android uygulamasında bazı testler yapacaksınız.
Not Defteri uygulaması için ikili APK dosyasını ( app-debug-unaligned.apk ) ve ilgili enstrümantasyon testlerini ( app-debug-test-unaligned.apk ) indirin NotePad / app / build / outputs / apk / not defteri dizininde sağlanan .zip .
Aşağıdaki gibi test edilebilecek Android cihazların güncel listesini alın:
$ gcloud firebase test android models list
Komut çıktısının ilk sütunu,
MODEL_ID
, daha sonra belirli bir model üzerinde testleri çalıştırmak için kullanabileceğiniz tanımlayıcıyı içerir.OS_VERSION_ID
sütunu, o cihaz tarafından desteklenen işletim sistemi sürümlerini listeler. HangiMODEL_ID
testMODEL_ID
belirtmezseniz,TAGS
sütununun altında belirtilen varsayılan değer kullanılır.firebase test android models describe
ile belirli bir AndroidMODEL_ID
hakkında daha fazla bilgi edinin, aşağıdaki komutufirebase test android models describe
:
Yukarıda gösterilen örnek komut,$ gcloud firebase test android models describe Nexus5
Nexus5
modeli hakkında marka, üretici ve desteklenen API seviyeleri ve modelin fiziksel olup olmadığı gibi ayrıntılı bilgiler sağlar. veya sanal.Test etmek için kullanılabilen Android işletim sistemi sürümlerinin güncel listesini edinin:
$ gcloud firebase test android versions list
Daha sonra bir Android işletim sistemi sürümüne yönelik testleri çalıştırmak için komut çıktısının ilk iki sütunundan (
OS_VERSION_ID
veVERSION
) bir tanımlayıcı kullanabilirsiniz. Test edilecek Android OS sürümlerini belirtmezsenizTAGS
sütununun altında belirtilen varsayılan değer kullanılır.Test etmek için kullanılabilecek yerel ayarların geçerli listesini alın:
Komut çıktısının ilk sütunu olan$ gcloud firebase test android locales list
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. Yüzlerce yerel ayar mevcut olduğundan komut çıktısı burada gösterilmiyor.
Koşu testleri
Şimdi uygulamanızı test ederken kullanmaya müsait cihaz modellerine, işletim sistemi sürümleri ve yerel aralığını bildiğinize kullanarak test cihazları belirtmek için bu bilgileri kullanabilirsiniz gcloud firebase test android run
komuta ve --device
bayrağı. Bu komut ve bayrak, ister Robo testini uygulamanızı otomatik olarak test etmek için kullanıyor olun, ister özellikle uygulamanızı test etmek için yazılmış enstrümantasyon testleri çalıştırıyor olun.
Robo testini çalıştırma
Herhangi bir enstrümantasyon testiniz olmasa bile, yine de uygulamanızda hataları arayabilirsiniz. Uygulamanızın kullanıcı arayüzünün otomatik incelemesini gerçekleştirmek için Robo testini kullanın. Robo test, 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 uygulama içinde gezinerek uygulamayı denetler.
Ö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 belirtilmezse --type
. gcloud help firebase test android run
yazarak testleri çalıştırmak için eksiksiz komut satırı seçenekleri kümesini görebilirsiniz. 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ği nasıl kullanacağınızı öğ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 aşağıdaki gibi çalıştırmak için instrumentation
test türünü kullanarak Not Defteri uygulamasının Espresso testlerini belirtilen Android cihaz yapılandırmalarınızda ç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
Bir test APK'sı --test
ile belirtilmişse --type instrumentation
parametresi --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ği nasıl kullanacağınızı öğrenmek için gcloud topic arg-files
çalıştırın.
Gcloud CLI, Android Test Orkestratörü'nü destekler. Orchestrator, AndroidJUnitRunner v1.0 veya üstünü gerektirir. Etkinleştirmek için gcloud firebase test android run
ile birlikte
--use-orchestrator
bayrağı. --no-use-orchestrator
dışı bırakmak için --no-use-orchestrator
bayrağını --no-use-orchestrator
.
Not: Test Lab'in enstrümantasyon testlerinizi yukarıda gösterilmeyen ek işaretler kullanarak 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 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ı da öğrenmek için, bir veya daha fazla test yürütmesinin kaç kez tekrar denenmesi gerektiğini belirten "--num-flaky-test-tryts" işaretini test durumları herhangi bir nedenle başarısız olur. Daha fazla bilgi edinmek için gcloud firebase test android run bölümüne 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 gcloud firebase test android run
, aşağıdaki bağımsız değişkenlerle gcloud firebase test android run
komutunu çalıştırarak Test Lab 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, kod kapsamı raporlarınızı Google Cloud Storage'da bulun:
-
gcloud
aracının, terminalinizdeki test sonucu tablosunun üzerine yazdırdığıgcloud
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ütmesine 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, test sonuçlarınızın temel bir özeti gcloud aracı tarafından yazdırılır:
Komut satırı test çalıştırmanızın çıktısı ayrıca test sonuçlarını görüntülemek için bir bağlantı içerir. Bu sonuçların nasıl yorumlanacağı hakkında daha fazla bilgi edinmek için Android Sonuçlarını Firebase Test Lab'ı Analiz Etme bölümüne bakın.
Robo testi ile özel giriş 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
hedef UI öğesinin Android kaynak adı ve value
metin dizesi olduğu virgülle ayrılmış key-value
çiftleri listesi sağlayın . Bu bayrağı, Robo'ya belirli UI öğelerini (örneğin, "oturumu kapat" düğmesi) göz ardı etmesini söylemek için de kullanabilirsiniz. EditText
alanları desteklenir ancak WebView
UI öğelerindeki metin alanları desteklenmez.
Örneğin, özel giriş için aşağıdaki parametreyi kullanabilirsiniz:
--robo-directives username_resource=username,password_resource=password
Mevcut komutlar ve işaretler
Test Lab gcloud CLI, farklı spesifikasyonlara sahip testleri çalıştırmanıza olanak tanıyan çeşitli komutlara ve işaretlere sahiptir:
Android Test Orkestratörü bayrağı : Uygulamanızın her testini kendi
Instrumentation
çağrısında çalıştırmanıza olanak tanıyan bir araç olan Orkestratör'ü etkinleştiren 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 modu" etkinleştiren ve kontrol eden bir dizi yapılandırma bayrağı. Test Lab ile Game Loop testlerini çalıştırma hakkında daha fazla bilgi edinin.
Tekdüzen Parçalama bayrağı (beta sürümünde) : Test senaryoları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 bayrağı (beta sürümünde) : Bir parça içinde çalıştırılacak bir paket, sınıf ve / veya test senaryosu grubunu (bir grup test durumu) belirten bir bayrak. Parçalar, ayrı cihazlarda paralel olarak çalıştırılır.
Ağ trafiği profilleri bayrağı (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üvenilmez veya tahmin edilemeyen ağlarda test etmenize olanak tanır.
Test Lab ile gcloud komutlarını 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 tamamlandığı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ını veya toplu iş dosyalarını 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 şunları içerir: 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 senaryosu (test edilen sınıflar veya sınıf yöntemleri) geçmedi. |
15 | Firebase Test Lab, beklenmeyen bir hata nedeniyle test matrisinin başarılı olup olmadığını belirleyemedi. |
18 | Bu test yürütmesi için test ortamı, uyumsuz test boyutları nedeniyle desteklenmiyor. Bu hata, seçilen Android API seviyesi seçilen cihaz türü tarafından desteklenmiyorsa ortaya çıkabilir. |
19 | Test matrisi kullanıcı tarafından iptal edildi. |
20 | Bir test altyapısı hatası oluştu. |