Test Lab sorun giderme & SSS

Bu sayfada, Firebase Test Lab ile test çalıştırma hakkında sık sorulan soruların yanıtları ve sorun giderme yardımı sağlanmaktadır. Bilinen sorunlar da belgelenmiştir. Aradığınızı bulamıyorsanız veya daha fazla yardıma ihtiyacınız varsa Firebase Slack'teki #test-lab kanalına katılın veya Firebase Destek Ekibi ile iletişime geçin.

Sorun giderme

Test LabKatalogda yüksek kapasite düzeyine sahip bir cihaz seçtiğinizde testler daha hızlı başlayabilir. Cihazın kapasitesi düşükse testlerin yürütülmesi daha uzun sürebilir. Çağrılan testlerin sayısı, seçilen cihazların kapasitesinden çok daha büyükse testlerin tamamlanması daha uzun sürebilir.

Herhangi bir düzeyde cihaz kapasitesi üzerinde çalıştırılan testler aşağıdaki faktörler nedeniyle daha uzun sürebilir:

  • Cihaz kullanılabilirliğini ve test hızını etkileyen trafik.
  • Herhangi bir zamanda gerçekleşebilecek cihaz veya altyapı hataları. Test Lab için bildirilmiş bir altyapı olup olmadığını kontrol etmek isterseniz Firebase durum kontrol paneline bakın.

Test Lab'teki cihaz kapasitesi hakkında daha fazla bilgi edinmek için Android ve iOS için cihaz kapasitesi bilgilerine bakın.

Kesin olmayan test sonuçları genellikle iptal edilen test çalıştırmaları veya altyapı hataları nedeniyle ortaya çıkar.

Altyapı hataları, ağ hataları veya beklenmedik cihaz davranışları gibi dahili Test Lab sorunlarından kaynaklanır. Test Lab, kesin olmayan bir sonuç bildirmeden önce birden çok kez altyapı hatası oluşturan test çalıştırmalarını dahili olarak emekliye ayırır. Ancak failFast'ı kullanarak bu yeniden denemeleri devre dışı bırakabilirsiniz.

Hatanın nedenini belirlemek için aşağıdaki adımları uygulayın:

  1. Firebase durum kontrol panelinde bilinen kesintileri kontrol edin.
  2. Tekrarlanabilirliğini doğrulamak için Test Lab'te testi tekrar deneyin.

  3. Testi farklı bir cihazda veya cihaz türünde (varsa) çalıştırmayı deneyin.

Sorun devam ederse Firebase Slack'teki #test-lab kanalında Test Lab ekibiyle iletişime geçin.

Belirttiğiniz parça sayısı Test Lab'te kullanılabilen cihaz sayısını aştığında parçalara ayırma, testlerinizin daha uzun sürmesine neden olabilir. Bu durumu önlemek için farklı bir cihaza geçmeyi deneyin. Farklı bir cihaz seçme hakkında daha fazla bilgi için Cihaz Kapasitesi bölümüne bakın.

Bir test isteği gönderdiğinizde uygulamanız, cihazda test çalıştırmaya hazırlanmak için önce doğrulanır, yeniden imzalanır vb. Bu işlem genellikle birkaç saniyeden kısa sürer ancak uygulamanızın boyutu gibi faktörlerden etkilenebilir.

Uygulamanız hazırlandıktan sonra test çalıştırmaları planlanır ve bir cihaz çalıştırmaya hazır olana kadar kuyrukta kalır. Tüm test çalıştırmaları tamamlanana kadar matris durumu "Beklemede" olur (test çalıştırmalarının sırada olup olmadığından veya etkin bir şekilde çalışıp çalışmadığından bağımsız olarak).

Test çalıştırması tamamlandıktan sonra test yapıları cihazdan indirilir, işlenir ve Cloud Storage'e yüklenir. Bu adımın süresi, yapıların miktarından ve boyutundan etkilenebilir.

Test yürütme yapıları (ekran görüntüleri ve günlük dosyaları gibi), Google Cloud Storage'te depolanır ve doğrudan Firebase konsolunda oluşturulur. Test çalıştırma işleminiz son 90 gün içinde gerçekleştirildiyse proje düzeyinde roller (proje sahibi, proje düzenleyici veya proje görüntüleyici) atadığınızdan emin olun. Ayrıca, Cloud Audit Logging'in projeniz veya kuruluşunuz için etkinleştirilmediğinden emin olun.

Yürütme işlemi 90 günden uzun bir süre önce gerçekleştirildiyse test yapıları büyük olasılıkla otomatik olarak silinmiştir. Test Lab kontrol panelindeki Test sonuçları sekmesini tıklayarak sonuç paketi yapılandırmasını kontrol edebilirsiniz. Varsayılan sonuç paketi, nesneleri 90 gün saklayacak şekilde yapılandırılmıştır.

Test yapılarınızı daha uzun süre saklamak için gcloud firebase test android run komutunu --results-bucket işaretiyle çalıştırın ve sonuç paketinin adını iletin. Daha fazla bilgi için gcloud firebase test android run referans dokümanlarını inceleyin.

Enstrümantasyon testlerini çalıştırdığınızda Test run failed to complete. Expected x tests, received y gibi mesajlar içeren kısmi sonuçları belirten test hataları görebilirsiniz (y, x'den küçüktür). Bu hata, Test Lab'ın genellikle AndroidJUnitRunner tarafından oluşturulan test kaydı başlangıç veya bitiş işaretçileri için logcat'i ayrıştıramadığı anlamına gelir.

Bu sorunun yaygın nedenlerinden bazıları şunlardır:

Sorun açıklaması Olası çözüm
Test durumu, zaman aşımı nedeniyle çalıştırılmadı. Testlerin toplam süresi, belirttiğiniz zaman aşımından veya maksimum zaman aşımından daha uzunsa Test Lab, test durumlarının geri kalanını iptal eder.
  • Tüm testlerin tamamlandığından emin olmak için matrisin zaman aşım süresini artırın.
  • Henüz yapmadıysanız testleri parçalara ayırın. Böylece her parça, testlerin bir alt kümesini çalıştırır ve daha kısa sürede tamamlanır.
  • Parçalamayı zaten etkinleştirdiyseniz parça sayısını artırın.
Test, erken çıktığı veya takıldığı için tamamlanamadı. Test kaydı, yakalanmayan bir istisna veya iddia hatası nedeniyle erkenden çıkabilir. Test durumları sonsuz bir döngüye takılabilir veya devam edemeyebilir. Örneğin, uygulama doğru görünümü göstermiyorsa ve test durumu kullanıcı arayüzünde işlemi gerçekleştiremiyorsa devam edemez. Testin hangi noktada durduğunu öğrenmek için videoyu ve logcat'ü kontrol edin.
Özel bir test çalıştırıcı (AndroidJUnitRunner'ın genişletilmesi dahil) beklenmedik bir şekilde kilitlendi veya logcat dosyasına beklenmedik test durumu başlangıç ya da bitiş işaretçileri yazdı. Test çalıştırıcınızın kodunu kontrol edin.
logcat'e aşırı sayıda günlük yazıldı. Bu durum, arabelleği tıkadı veya logcat sürecini kilitledi. Yazma işlemlerini logcat'e düşürün.
Test edilen uygulama kilitlendi. Uygulamanızda hata ayıklama yapın.

Sık sorulan sorular

Firebase Test Lab, cihazlarda test yapmak ve Cloud API'leri kullanmak için ücretsiz kotalar sunar. Test kotasının standart Firebase fiyatlandırma planını kullandığını, Cloud API kotalarının ise kullanmadığını unutmayın.

  • Test kotası

    Test kotaları, test çalıştırmak için kullanılan cihaz sayısına göre belirlenir. Firebase Spark planında, kullanıcılara ücretsiz olarak sunulan sabit bir test kotası vardır. Blaze planında, Google Cloud kullanımınız zaman içinde artarsa kotalarınız artabilir. Test kotanıza ulaşırsanız ertesi güne kadar bekleyin veya Spark planını kullanıyorsanız Blaze planına geçin. Halihazırda Blaze planını kullanıyorsanız kota artışı isteğinde bulunabilirsiniz. Daha fazla bilgi için Kotayı test etme başlıklı makaleyi inceleyin.

    Test kotası kullanımınızı Google Cloud konsolunda izleyebilirsiniz.

  • Cloud Testing API kotası

    Cloud Testing API'nin iki kota sınırı vardır: proje başına günlük istek sayısı ve proje başına her 100 saniyede istek sayısı. Kullanımınızı Google Cloud konsolunda izleyebilirsiniz.

  • Cloud Tool Results API kotası

    Cloud Tool Results API'nin iki kota sınırı vardır: proje başına günlük sorgu sayısı ve proje başına her 100 saniyede sorgu sayısı. Kullanımınızı Google Cloud konsolunda izleyebilirsiniz.

    API sınırları hakkında daha fazla bilgi için Test Lab için Cloud API kotaları başlıklı makaleyi inceleyin. API kotasına ulaştıysanız:

    • Doğrudan Google Cloud konsolunda kotalarınızı düzenleyerek daha yüksek kotalar için istek gönderin (çoğu sınırın varsayılan olarak maksimuma ayarlandığını unutmayın) veya

    • Google Cloud konsolunda bir istek formu doldurarak veya Firebase Destek Ekibi ile iletişime geçerek daha yüksek API kotaları isteyin.

Arka uçtan, kaynak IP adresini IP aralıklarımızla karşılaştırarak trafiğin Firebase tarafından barındırılan test cihazlarından gelip gelmediğini belirleyebilirsiniz.

Test Lab, VPC-SC ile çalışmaz. Bu durum, uygulamaların ve diğer test yapılarının Test Lab'ın dahili depolama alanı ile kullanıcıların sonuç grupları arasında kopyalanmasını engeller.

Testlerinizde kararsız davranışı tespit etmek için --num-flaky-test-attempts seçeneğini kullanmanızı öneririz. Deflake yeniden çalıştırmaları, normal test çalıştırmalarıyla aynı şekilde faturalandırılır veya günlük kotanıza dahil edilir.

Şunları unutmayın:

  • Bir hata algılandığında test çalıştırmasının tamamı tekrar çalışır. Yalnızca başarısız test durumlarının yeniden denenmesi desteklenmez.
  • Deflake yeniden deneme çalıştırmalarının aynı anda çalıştırılması planlanır ancak trafiğin mevcut cihaz sayısını aştığı durumlarda paralel olarak çalıştırılmaları garanti edilmez.

Evet! Test Lab, Google Pixel Watch'ı destekler. Artık Google Pixel Watch'larda bağımsız Wear uygulamanızda testler çalıştırabilirsiniz. Test Lab cihazlar hakkında daha fazla bilgi edinmek için Mevcut cihazlarda test etme başlıklı makaleyi inceleyin.

Evet! Test Lab, Google Pixel Tablet ve Google Pixel Fold'u destekler. Testlerinizi bağımsız fiziksel cihazlarınızda çalıştırabilirsiniz. Test Lab cihazlar hakkında daha fazla bilgi edinmek için Mevcut cihazlarda test etme başlıklı makaleyi inceleyin.

Uygulamanızı Firebase'da test ediyorsanız veya Play Console'da lansman öncesi rapor için testler çalıştırıyorsanız MainActivity dosyanızdaki firebase.test.lab sistem mülkünü kontrol ederek bir testin Firebase tarafından barındırılan bir cihazda çalışıp çalışmadığını tespit edebilirsiniz. Ardından, testLabSetting için boole değerine göre ek ifadeler yürütebilirsiniz. Daha fazla bilgi için Değiştirilmiş test davranışları başlıklı makaleyi inceleyin.

Bu öğelerden bazıları yol haritamızda yer alsa da şu anda bu test ve uygulama geliştirme platformlarını destekleme konusunda taahhütte bulunamıyoruz. Ancak uygulamanızı Espresso'yu destekleyen bir çerçeveyle (ör. Flutter) oluşturduysanız Espresso'yu kullanarak bir enstrümantasyon testi yazabilir ve ardından testi Test Lab'de çalıştırabilirsiniz.

Test Lab, kodun karartılmasını veya kodun karartılmasını açıkça desteklemez. Uygulama büyük olasılıkla çalışır ancak karmaşık hale getirilmiş uygulama verileri (ör. yığın izlemeleri) günlüklerde karmaşık hale getirilmiş olarak görünür.

Evet! Katlanabilir cihazınızı katlanabilir durumlarda ve duruşlarda test edebilirsiniz.

Katlanabilir cihazlar FLAT (tamamen açık) veya HALF_OPENED (tamamen açık ile tamamen kapalı arasında) gibi çeşitli katlanmış durumlarda olabilir.

Diğer yandan duruşlar, belirli cihaz yönelimi ve katlanabilir durumdan oluşur. Örneğin, yatay yönde HALF_OPENED durumu olan masaüstü duruşu veya dikey yönde HALF_OPENED durumu olan kitap duruşu.

Enstrümantasyon testleri çalıştırıyorsanız Jetpack WindowManager kitaplığını kullanabilir ve farklı durumlarda ve duruşlarda test etmek için uygulamanızı katlanabilir cihazlarda test etme dokümanlarını inceleyebilirsiniz.

Alternatif olarak, mevcut durumlar cihaza özeldir ve adb shell command cmd device_state kullanılarak etkileşim kurulabilir.

  • Mevcut durumu listelemek için adb shell cmd device_state state komutunu çalıştırın.
  • Mevcut durumu ayarlamak veya geçersiz kılmak için adb shell cmd device_state state <IDENTIFIER> komutunu çalıştırın.
  • Durumu sıfırlamak için adb shell cmd device_state state reset komutunu çalıştırın.
  • Kullanılabilir durumları kontrol etmek için katlanabilir cihazda adb shell cmd device_state print-stateskomutunu çalıştırın.
$ adb shell cmd device_state print-states
Supported states: [
    DeviceState{identifier=0, name='CLOSED', app_accessible=true},
    DeviceState{identifier=1, name='HALF_OPENED', app_accessible=true},
    DeviceState{identifier=2, name='OPENED', app_accessible=true},
    DeviceState{identifier=3, name='REAR_DISPLAY_STATE', app_accessible=true},
]
$ adb shell cmd device_state print-states
Supported states: [
    DeviceState{identifier=0, name='CLOSE', app_accessible=true},
    DeviceState{identifier=1, name='TENT', app_accessible=true},
    DeviceState{identifier=2, name='HALF_FOLDED', app_accessible=true},
    DeviceState{identifier=3, name='OPEN', app_accessible=true},
]

Diğer Firebase ürünlerinden farklı olarak, Test Lab'ü kullanmak için Firebase SDK'sı eklemeniz gerekmez. Uygulamanız yoksa internetten APK indirebilir veya AndroidX GitHub deposundaki örneklerden birini kullanarak bir uygulama ve test APK'sı oluşturabilirsiniz. Robo testi çalıştırmak için yalnızca uygulamanızın APK dosyasına ihtiyacınız olduğunu, enstrümasyon testi için ise hem bir uygulamaya hem de kaynak koddan oluşturulmuş bir test APK'sına ihtiyacınız olduğunu unutmayın. Daha fazla bilgi için Araçla test etme hakkındaki makaleyi inceleyin.

Test Lab özellikleri hakkında daha fazla bilgi edinmek için Firebase Test Lab ile Android için test yapmaya başlama başlıklı makaleyi inceleyin.

Ekran görüntüsü karşılaştırma testi, test beyanlarının bir test çalıştırılırken elde edilen ekran görüntülerinin beklenen davranışı temsil eden altın resimlerle karşılaştırılmasına dayanır. Bu tür testler bazı cihaz türlerinde diğerlerinden daha hassas olabilir. Bu tür testler için Arm (*.arm) emülatör cihazlarını hedeflemenizi öneririz. Arm emülatör cihazları, Android Studio'nun "genel" emülatörlerine çok benzer veya aynı resimleri kullanır.

Ayrıca, beklenen değişikliklerin bulunduğu durumlarda ekran görüntüsü testlerini daha güçlü hale getirmeye yardımcı olabilecek test kitaplıklarını incelemenizi öneririz.

Evet! Sanal cihazlar aşağıdaki değişiklikler yapıldığında güncellenir:

  1. Mevcut resimlerde yapılan güncellemeler
  2. Önceki API düzeylerinin kullanımdan kaldırılması
  3. Yeni Android API düzeyleri eklendi

Kapsam raporlarını etkinleştirmek için environmentVariables alanına coverage=true ekleyin. Android Test Orchestrator'ı kullanıyorsanız kapsam sonuçlarını depolamak için bir dizin sağlamanız gerekir:

--environment-variables coverage=true,coverageFilePath=/sdcard/Download/

Orchestrator'ı kullanmıyorsanız bir dosya yolu belirtebilirsiniz:

--environment-variables coverage=true,coverageFile=/sdcard/Download/coverage.ec

Ayrıntılı cihaz bilgileri API üzerinden kullanılabilir ve describe komutu kullanılarak gcloud istemcisinden erişilebilir:

gcloud firebase test android models describe MODEL

Bilinen sorunlar

Robo test, oturum açmak için kimlik bilgilerinin girilmesinin yanı sıra ek kullanıcı işlemi (ör. CAPTCHA'yı tamamlama) gerektiren oturum açma ekranlarını atlayamaz.

Robo test, Android kullanıcı arayüzü çerçevesindeki kullanıcı arayüzü öğelerini (View, ViewGroup ve WebView nesneleri dahil) kullanan uygulamalarda en iyi performansı gösterir. Unity oyun motorunu kullanan uygulamalar da dahil olmak üzere diğer kullanıcı arayüzü çerçevelerini kullanan uygulamaları test etmek için Robo test'i kullanırsanız test, ilk ekranın ötesine geçmeden çıkabilir.