Bu kılavuzda, gcloud CLI kullanılarak enstrümantasyon, Robo veya Game Loop testinin nasıl çalıştırılacağı açıklanmaktadır.
gcloud
'da Android uygulamanızla kullanabileceğiniz Test Lab komutların tam listesi için gcloud firebase test android
referans belgelerini inceleyin.
Başlamadan önce
Henüz yapmadıysanız Firebase'i Android projenize ekleyin.
1. Adım. gcloud CLI'yı ayarlama
- Google Cloud SDK'yı indirin.
- Yüklemenizin 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
Buna gcloud CLI aracı dahildir.
2. Adım. Kullanılabilir test cihazlarını kontrol etme
Testinizde kullanılabilen test cihazlarını ve yerel ayarları görüntülemek için aşağıdaki gcloud komutlarını kullanın.
İsterseniz komutları hemen çalıştırmaya başlamak için örnek Notepad uygulamasını da indirebilirsiniz. app-debug-unaligned.apk
ikili dosyasını ve app-debug-test-unaligned.apk
enstrümantasyon testleri dosyasını kullanın. Bu dosyalar NotePad/app/build/outputs/apk/
içinde yer alır.
models list
: Test etmek için kullanabileceğiniz Android cihazların güncel listesini alın.gcloud firebase test android models list
Komut çıkışında:
- Sütun
MODEL_ID
, daha sonra cihaz modelinde test çalıştırmak için kullanabileceğiniz tanımlayıcıyı içerir. OS_VERSION_ID
sütununda, cihaz tarafından desteklenen işletim sistemi sürümleri yer alır.
Örnek çıkış
- Sütun
models describe
: Belirli bir AndroidMODEL_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 ikili arayüzleri (ABI), yayınlanma tarihleri ve cihazın fiziksel mi yoksa sanal mı olduğu yer alır.
versions list
: Test etmek için şu anda kullanılabilen 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şı testler çalıştırmak için komut çıkışının ilk iki sütunundaki tanımlayıcılardan birini (
OS_VERSION_ID
veVERSION
) kullanabilirsiniz. Test edilecek Android işletim sistemi sürümlerini belirtmezsenizTAGS
sütununda belirtilen varsayılan sürüm kullanılır.Örnek çıkış
locales list
: Test için kullanılabilen yerel ayarların güncel listesini alın.gcloud firebase test android versions list
Komut çıkışının ilk sütunu olan
LOCALE
, daha sonra bir yerel ayara karşı 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ılabilecek cihaz modelleri, yerel ayarlar ve işletim sistemi sürümlerinin aralığını öğrendiğinize göre, Robo veya enstrümantasyon testlerini ç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 testleriniz olmasa bile uygulamanızdaki hataları arayabilirsiniz. Uygulamanızın kullanıcı arayüzünü otomatik olarak incelemek için Robo testini kullanın. Robo testi, uygulamanın kullanıcı arayüzündeki çeşitli yolların statik analizini yaparak uygulamayı çalıştırır ve ardından kilitlenmeleri ve 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 örtülüdür.- Test matrislerinizi Firebase konsolunda tanımlayıp bulmanıza yardımcı olması için
test matrisinizi etiketlemek üzere isteğe bağlı
--client-details matrixLabel="Example matrix label"
işaretini kullanabilirsiniz. - Testleri çalıştırmaya yönelik komut satırı seçeneklerinin tamamını görmek için
gcloud help firebase test android run
yazın.
Bu bağımsız değişkenleri komut satırında belirtmek yerine, 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
komutunu ç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
Şimdi, gcloud
komut satırı aracını kullanarak Not Defteri uygulamasının Espresso testlerini belirttiğiniz Android cihaz yapılandırmalarında çalıştırın. Testleri instrumentation
test türünü kullanarak app-debug-test-unaligned.apk
aşağıdaki şekilde çalıştırı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
ile bir test APK'sı belirtilmişse--type
enstrümantasyon parametresi örtülüdür.--test
- Test matrislerinizi Firebase konsolunda tanımlayıp bulmanıza yardımcı olması için
test matrisinizi etiketlemek üzere isteğe bağlı
--client-details matrixLabel="Example matrix label"
işaretini kullanabilirsiniz. - Testleri çalıştırmak için komut satırı seçeneklerinin tamamını
gcloud help firebase test android run
yazarak görebilirsiniz.
Bu bağımsız değişkenleri komut satırında belirtmek yerine, 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
komutunu çalıştırın.
gcloud CLI, Android Test Orchestrator'ı destekler.
Orchestrator için AndroidJUnitRunner v1.1 veya sonraki sürümler gerekir. Etkinleştirmek için gcloud firebase test android run
ile --use-orchestrator
işaretini 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şaretleri kullanarak Test Lab'nı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. Başarısız olan testinizin gerçekten kararsız olup olmadığını öğrenmek için --num-flaky-test-attempts
işaretini de kullanabilirsiniz. Bu işaret, testlerden biri veya daha fazlası herhangi bir nedenle başarısız olursa test yürütme işleminin kaç kez yeniden denenmesi gerektiğini belirtir. Daha fazla bilgi için gcloud firebase test android run başlıklı makaleyi inceleyin.
Araçlı testler için kod kapsamı raporları
Test Lab, kod kapsamı raporlama araçları EMMA ve JaCoCo'yu destekler. Uygulamanızın derlemesine bu araçlardan birini entegre ettiyseniz Test Lab testleri için kod kapsamı raporu almak üzere gcloud firebase test android run
komutunu bazı ek bağımsız değişkenlerle çalıştırabilirsiniz. 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ı da 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 bölümünde bulabilirsiniz:
- Firebase aracının terminalinizdeki test sonucu tablosunun üzerinde yazdırdığı Firebase konsol bağlantısını açın.
gcloud
- İlgili bağlantıdaki listeden bir test yürütmesini tıklayarak bu yürütmenin ayrıntılar sayfasını açın.
- İlgili yürütmenin test sonuçlarının bulunduğu Cloud Storage grubu için Test sonuçları'nı tıklayın.
- Kod kapsamı raporunuzu görmek için
artifacts/coverage.ec
simgesini açın.
Test sonuçlarınızı analiz etme
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ında, test sonuçlarını görüntüleme bağlantısı da yer alır. Bu sonuçları nasıl yorumlayacağınız hakkında daha fazla bilgi edinmek için Android için Firebase Test Lab sonuçlarını analiz etme başlıklı makaleyi inceleyin.
Robo testi ile özel giriş ve metin girişi
--no-auto-google-login
parametresini kullanmadığınız sürece Robo testi, 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 key-value
çiftlerinin virgülle ayrılmış bir listesini sağlayın. Burada 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. "logout" 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:
Instrumentation
'ın kendi çağrısında uygulamanızın her bir testini çalıştırmanıza olanak tanıyan bir araç olan Orchestrator'ı etkinleştirmek için kullanılan bir 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 modu"nu etkinleştiren ve kontrol eden bir dizi yapılandırma işareti. Test Lab ile oyun döngüsü testleri çalıştırma hakkında daha fazla bilgi edinin.
Tekdüzen Parçalama işareti (beta sürümünde): Test senaryolarını eşit şekilde 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 işareti (beta sürümünde): Bir parçada (bir test grubu) çalıştırılacak bir paket, sınıf ve/veya test grubu belirten işaret. Parçalar ayrı cihazlarda paralel olarak çalıştırılır.
Ağ trafiği profilleri 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 iş dosyalarını kullanabilirsiniz. Aşağıdaki örnek bash komut dosyası, iki dakikalık zaman aşımıyla 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ı oluşturma çıkış kodları
Çıkış kodu | Notlar |
---|---|
0 | Tüm test işlemleri başarılı oldu. |
1 | Genel bir hata oluştu. Olası nedenler arasında mevcut 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şlemindeki bir veya daha fazla test durumu (test edilen sınıflar veya sınıf yöntemleri) başarılı olmadı. |
15 | Beklenmeyen bir hata nedeniyle Firebase Test Lab, 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 düzeyi, seçilen cihaz türü tarafından desteklenmiyorsa bu hata oluşabilir. |
19 | Test matrisi kullanıcı tarafından iptal edildi. |
20 | Test altyapısı hatası oluştu. |