Bu kılavuz, gcloud CLI kullanılarak 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
referans belgelerini ziyaret edin.
Sen başlamadan önce
Henüz yapmadıysanız, Firebase'i Android projenize 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'da 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
Bu, gcloud CLI aracını içerir.
2. Adım. 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. 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 mevcut Android cihazları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, aygıt tarafından desteklenen işletim sistemi sürümlerini içerir.
Örnek çıktı
-
models describe
: Belirli bir AndroidMODEL_ID
hakkında daha fazla bilgi alın.gcloud firebase test android models describe MODEL_ID
Çıktı, cihaz modelinin markasını, üreticisini, işletim sistemi sürümlerini, desteklenen API düzeylerini, desteklenen Uygulama İkili Arayüzlerini (ABI), 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 OS sürümüne karşı testler ç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 işletim sistemi sürümlerini belirtmezseniz,TAGS
sütununda belirtilen varsayılan sürüm 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 ayarlara karşı testler ç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.
Adım 3. Testinizi çalıştırın
Artık 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ümantasyon testlerini çalıştırmak için gcloud firebase test android run
komutunu ve --device
bayrağını kullanarak cihazları belirtebilirsiniz.
Robo testi çalıştırın
Enstrümantasyon testiniz olmasa bile uygulamanızdaki hataları 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ı arabirimi aracılığıyla çeşitli yolların statik analizini gerçekleştirerek uygulamayı çalıştırır ve ardından çökmeleri ve diğer olası sorunları bulmak için uygulamada gezinir.
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 robo
parametresi,--type
değeri belirtilmezse örtülüdü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"
bayrağını kullanabilirsiniz. - Çalıştırma testleri için komut satırı seçeneklerinin tamamını şu komutu yazarak görebilirsiniz:
gcloud help firebase test android run
.
Bu bağımsız değişkenleri komut satırında belirtmeye alternatif olarak, 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
çalıştırın.
Robo testinden test sonuçlarını nasıl araştıracağınızı öğrenmek için Test sonuçlarınızı analiz etme bölümüne bakın.
Enstrümantasyon testi çalıştırın
Şimdi, Notepad uygulamasının Espresso testlerini belirtilen Android cihaz yapılandırmalarında ç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 --client-details matrixLabel="Example matrix label"
-
--type
enstrümantasyon parametresi,--test
ile bir test APK'sı belirtilirse örtülüdü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"
bayrağını kullanabilirsiniz. -
gcloud help firebase test android run
yazarak testleri çalıştırmak için eksiksiz komut satırı seçeneklerini görebilirsiniz.
Bu bağımsız değişkenleri komut satırında belirtmeye alternatif olarak, 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
çalıştırın.
gcloud CLI, Android Test Orchestrator'ı destekler. Orchestrator, AndroidJUnitRunner v1.1 veya üstünü gerektirir. Etkinleştirmek için gcloud firebase test android run
kullanın
--use-orchestrator
bayrağı. Devre dışı bırakmak için --no-use-orchestrator
bayrağını kullanın.
Ayrıca, yukarıda gösterilmeyen ek işaretler kullanarak Test Lab'in enstrümantasyon testlerinizi nasıl yürüttüğünü de 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 lapa lapa olup olmadığını da --num-flaky-test-attempts
işaretini kullanarak öğrenebilirsiniz; bu, bir veya daha fazla test durumunda test yürütmesinin yeniden denenmesi gerektiğini belirtir. herhangi bir nedenle başarısız Daha fazla bilgi edinmek için bkz. gcloud firebase test android run .
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 araca sahipseniz, bazı ek bağımsız değişkenlerle gcloud firebase test android run
ç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'ı 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, kod kapsamı raporlarınızı Google Cloud Storage'da bulun:
- Terminalinizde test sonucu tablosunun üzerine
gcloud
aracının 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ütmesine tıklayın.
- Söz konusu yürütmenin test sonuçlarının bulunduğu Bulut Depolama grubuna gitmek için Test sonuçları'na tıklayın.
- Kod kapsamı raporunuzu görmek için
artifacts/coverage.ec
dosyasını 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 bkz . Firebase Test Lab for Android Sonuçlarını Analiz Etme .
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ına ö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 kullanıcı arabirimi öğesinin Android kaynak adı ve value
metin dizesi olduğu virgülle ayrılmış bir key-value
çiftleri listesi sağlayın. . Bu bayrağı, Robo'ya belirli UI öğelerini (örneğin, "çıkış" düğmesi) yoksayması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
Mevcut komutlar ve bayraklar
Test Lab gcloud CLI'da, farklı özelliklerle 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ştiren bir bayrak. Test Lab, her zaman Orchestrator'ın en son sürümünü çalıştırır.Game Loop test bayrakları : Oyun uygulamalarında oyuncu hareketlerini simüle etmek için bir "demo modunu" etkinleştiren ve kontrol eden bir dizi yapılandırma bayrağı. Game Loop testlerini Test Lab ile çalıştırma hakkında daha fazla bilgi edinin.
Tekdüzen Parçalama bayrağı (betada) : 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ğı (betada) : Bir parçada (bir test durumları grubu) çalıştırılacak bir grup paket, sınıf ve/veya 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 bayrak. Ağ profilleri, çeşitli ağ koşullarını taklit ederek, uygulamanızın performansını güvenilmez veya öngörülemeyen ağlarda test etmenize olanak tanır.
Test Lab ile gcloud komutları oluşturma
Normalde gcloud komut satırını kullanarak çalıştıracağınız mobil uygulama testi komutlarını otomatikleştirmek için kabuk betiklerini 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ışması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, betikleri 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 oluştu. 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ütmesindeki 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 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 seviyesi, seçilen cihaz tipi tarafından desteklenmiyorsa bu hata oluşabilir. |
19 | Test matrisi kullanıcı tarafından iptal edildi. |
20 | Bir test altyapısı hatası oluştu. |