Bu kılavuzda, gcloud CLI kullanılarak enstrümantasyon, Robo veya Game Loop testinin nasıl çalıştırılacağı açıklanmaktadır.
Test Lab'te Android uygulamanızla kullanabileceğiniz gcloud
komutlarının tam listesi için gcloud firebase test android
ile ilgili referans dokümanlarını inceleyin.
Başlamadan önce
Henüz yapmadıysanız Firebase'i Android projenize ekleyin.
1. Adım. gcloud CLI'yi ayarlama
- Google Cloud SDK'yı indirin
- Yüklemenizin güncel olduğundan emin olun:
gcloud components update
- Google Hesabınızı kullanarak gcloud CLI'de oturum açın:
gcloud auth login
- PROJECT_ID, Firebase projenizin kimliğidir:
gcloud config set project PROJECT_ID
gcloud CLI aracı da bu kapsamdadır.
2. Adım. Kullanılabilir test cihazlarını kontrol etme
Testiniz için kullanılabilen test cihazlarını ve yerel ayarlarını görüntülemek üzere aşağıdaki gcloud komutlarını kullanın.
Dilerseniz 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 Android cihazların güncel listesini alın.gcloud firebase test android models list
Komut çıkışında:
MODEL_ID
sütunu, daha sonra cihaz modelinde test çalıştırmak için kullanabileceğiniz tanımlayıcıyı içerir.OS_VERSION_ID
sütunu, cihazın desteklediği işletim sistemi sürümlerini içerir.
Örnek çıkış
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 İkili Arayüzü (ABI), sürüm tarihleri ve cihazın fiziksel mi yoksa sanal mı olduğu yer alır.
versions list
: Test edebileceğiniz mevcut 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şı test ç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ütununda belirtilen varsayılan sürüm kullanılır.Örnek çıkış
locales list
: Test için kullanılabilen mevcut yerel ayarların listesini alın.gcloud firebase test android versions list
Komut çıktısının ilk sütunu (
LOCALE
), daha sonra bir yerel ayara göre 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ılabilen cihaz modelleri, yerel ayarlar ve işletim sistemi sürümleri aralığını bildiğinize göre, Robo veya enstrümasyon testleri ç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 testiniz olmasa bile uygulamanızda hata olup olmadığını kontrol edebilirsiniz. Uygulamanızın kullanıcı arayüzünü otomatik olarak incelemek için Robo test'i kullanın. Robo test, uygulamanın kullanıcı arayüzündeki çeşitli yolların statik analizini yaparak uygulamayı çalıştırır ve ardından kilitlenmeler ile 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 varsayılan olarak kullanılır.- Firebase konsolunda test matrislerinizi 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"
işaretini kullanabilirsiniz. - Test çalıştırmak için komut satırı seçeneklerinin tamamını görmek istiyorsanız
gcloud help firebase test android run
yazın.
Bu bağımsız değişkenleri komut satırında belirtmenin alternatifi olarak, bağımsız değişkenlerinizi isteğe bağlı olarak YAML biçimli bir bağımsız değişken dosyasında da belirtebilirsiniz. Bu özelliği nasıl kullanacağınızı öğrenmek için gcloud topic arg-files
dosyasını ç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
Ardından, Not Defteri uygulamasının Espresso testlerini, belirttiğiniz Android cihaz yapılandırmalarında çalıştırmak için gcloud
komut satırı aracını kullanın. app-debug-test-unaligned.apk
test türünü kullanarak app-debug-test-unaligned.apk
'te testleri aşağıdaki gibi çalıştırın:instrumentation
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"
--test
ile bir test APK'sı belirtilmişse--type
enstrümantasyon parametresi varsayılan olarak kullanılı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"
işaretini kullanabilirsiniz. gcloud help firebase test android run
yazarak test çalıştırmayla ilgili komut satırı seçeneklerinin tamamını görebilirsiniz.
Bu bağımsız değişkenleri komut satırında belirtmenin alternatifi olarak, bağımsız değişkenlerinizi isteğe bağlı olarak YAML biçimli bir bağımsız değişken dosyasında da belirtebilirsiniz. Bu özelliği nasıl kullanacağınızı öğrenmek için gcloud topic arg-files
dosyasını çalıştırın.
gcloud CLI, Android Test Orchestrator'ı destekler.
Orchestrator için AndroidJUnitRunner 1.1 veya sonraki bir sürüm gerekir. Etkinleştirmek için gcloud firebase test android run
ile --use-orchestrator
simgesini 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şaretçileri kullanarak Test Lab'ü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. Ayrıca, başarısız olan testinizin gerçekten kararsız olup olmadığını öğrenmek için --num-flaky-test-attempts
işaretini kullanabilirsiniz. Bu işaret, testin bir veya daha fazla test senaryosu herhangi bir nedenle başarısız olursa test çalıştırmanın kaç kez yeniden denenmesi gerektiğini belirtir. Daha fazla bilgi için gcloud firebase test android run komutuna bakın.
Araç testleri için kod kapsamı raporları
Test Lab, kod kapsamı raporlama araçları EMMA ve JaCoCo'yu destekler. Bu iki araçtan birini uygulamanızın derlemesine entegre ettiyseniz gcloud firebase test android run
'ı bazı ek bağımsız değişkenlerle çalıştırarak Test Lab testleri için kod kapsamı raporu alabilirsiniz. Android Test Orkestratörü 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ı tamamladığında kod kapsamı raporlarınızı Google Cloud Storage'te bulabilirsiniz:
- Terminalinizdeki test sonucu tablosunun üstüne
gcloud
aracının yazdırdığı Firebase konsol bağlantısını açın. - İlgili bağlantıdaki listeden bir test yürütmeyi tıklayarak yürütmenin ayrıntılar sayfasını açın.
- Söz konusu 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 etme
Birkaç dakika sonra gcloud aracı, test sonuçlarınızın temel bir özetini yazdırır:
Komut satırı test çalıştırmanızın çıkışı, test sonuçlarını görüntüleme bağlantısını da içerir. Bu sonuçları nasıl yorumlayacağınız hakkında daha fazla bilgi edinmek için Android Sonuçları için Firebase Test Lab'ü analiz etme başlıklı makaleyi inceleyin.
Robo testi ile özel giriş ve metin girişi
Robo test, --no-auto-google-login
parametresini kullanmadığınız sürece 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 virgülle ayrılmış bir key-value
çiftleri listesi sağlayın. Bu listede 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. "Oturumu kapat" 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: Uygulamanızın her testini kendi
Instrumentation
çağrısında çalıştırmanıza olanak tanıyan bir araç olan Orchestrator'ı etkinleştirmek için kullanılan 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 modunu" etkinleştiren ve kontrol eden bir yapılandırma işaretleri grubu. Test Lab ile oyun döngüsü testleri çalıştırma hakkında daha fazla bilgi edinin.
Tekdüzen Bölme işareti (beta sürümünde): Test durumları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 Bölme İşareti (beta sürümünde): Bir paket, sınıf ve/veya test grubu çalıştırılacak bir parçayı (test grubu) belirten işaret. Parçalar ayrı cihazlarda paralel olarak çalıştırılır.
Ağ trafiği profili 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 dosyalarını kullanabilirsiniz. Aşağıdaki örnek bash komut dosyası, iki dakikalık zaman aşımı olan 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ı çıkış kodları
Çıkış kodu | Notlar |
---|---|
0 | Tüm test işlemleri geçti. |
1 | Genel bir hata oluştu. Olası nedenler arasında var 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şleminde bir veya daha fazla test durumu (test edilen sınıflar veya sınıf yöntemleri) geçemedi. |
15 | Firebase Test Lab, beklenmedik bir hata nedeniyle test matrisinin başarılı olup olmadığını belirleyemedi. |
18 | Uyumlu olmayan test boyutları nedeniyle bu test yürütme işlemi için test ortamı desteklenmiyor. Bu hata, seçilen Android API düzeyi, seçilen cihaz türü tarafından desteklenmiyorsa ortaya çıkabilir. |
19 | Test matrisi kullanıcı tarafından iptal edildi. |
20 | Test altyapısı hatası oluştu. |