Firebase Test Lab, Google veri merkezlerinde bulunan gerçek cihazlarda mobil uygulamaların otomatik testi için Google'ın bulut hizmetidir. Test Lab, kendi cihaz çiftliğinizi koruma ihtiyacı olmadan yüzlerce cihaz yapılandırmasında farklı Android ve iOS sürümleriyle enstrümantasyon testleri, ekran görüntüsü testleri ve robot testleri çalıştırmanıza olanak tanır. Firebase Documentation, 2026'ya göre, Firebase robot testi otomatik olarak uygulamanın tüm ekranlarını dolaşır, tek bir satır test kodu yazmadan çökmeleri, ANR'leri ve UI sorunlarını tespit eder. Hizmet, CI/CD sistemleriyle entegrasyonu destekler ve videolar ve günlüklerle ayrıntılı raporlar sağlar.
Önemli Noktalar
Firebase Test Lab, Google'ın küresel veri merkezlerinde bulunan fiziksel cihazlarda mobil uygulamaların otomatik testi için Google'ın bulut altyapısıdır. Yerel bir makinedeki öykünücülerin aksine, Test Lab, çeşitli işletim sistemi sürümleri, ekran çözünürlükleri, RAM boyutları ve API seviyeleri ile gerçek Android cihazlarda ve iOS cihazlarda testler çalıştırır. Hizmet, test sonuçlarını otomatik olarak işleyerek yürütme videoları, adım ekran görüntüleri ve ayrıntılı günlükler sağlar.
Kendi cihaz çiftliğinizi korumak, fiziksel cihazların satın alınması ve bakımı için önemli sermaye harcaması gerektirir. Firebase Test Lab, Spark planında ücretsiz bir limit ile kullanım başına ödeme esasına göre binlerce cihaza erişim sağlar. Test Lab, en son amiral gemisi Google Pixel, Samsung Galaxy, Xiaomi ve iPhone dahil olmak üzere cihaz havuzunu otomatik olarak güncel modellere günceller. Testler birden çok cihazda paralel olarak çalıştırılır ve uygulama doğrulama süresini azaltır.
Android için Test Lab, API seviyesi 21'den en son kararlı Android sürümüne kadar olan cihazlarda testi destekler. iOS desteği, iOS 15'ten en son kararlı sürüme kadar gerçek iPhone ve iPad cihazlarını içerir. iOS için robot testi ve XCTest mevcuttur. Her test fiziksel cihazlarda veya öykünücülerde çalıştırılabilir — en doğru sonuçlar için Google, fiziksel cihazların kullanılmasını önerir çünkü bunlar sensörler, kamera ve ağ arayüzleriyle ilgili sorunları ortaya çıkarır.
Firebase Test Lab, her biri geliştirme döngüsünde kendi görevini çözen birden çok test türünü destekler: hızlı kararlılık kontrolü için robot testleri, işlevsel doğrulama için enstrümantasyon testleri ve görsel gerilemeleri tespit etmek için ekran görüntüsü testleri. Test türünün seçimi, geliştirme aşamasına ve belirli bir çalıştırmanın hedeflerine bağlıdır.
Robot testleri, test kodu yazmayı gerektirmeyen Firebase Test Lab'in benzersiz bir özelliğidir. Firebase Crawler otomatik olarak uygulamayı keşfeder: tüm etkileşimli UI öğelerini bulur, tıklar, formları test verileriyle doldurur, ekranlar arasında gezinir ve herhangi bir arızayı (çökme, ANR, istisnalar) kaydeder. Robot testleri, tek bir satır test kodu olmadan kritik hataların %80'ine kadarını tespit eder ve bu da onları geliştirmenin erken aşamalarında bir uygulamanın temel kararlılığını değerlendirmek için ideal bir araç haline getirir.
Enstrümantasyon testleri, geliştirici tarafından Espresso (Android) veya XCTest (iOS) çerçeveleri kullanılarak yazılan testlerdir. Test Lab, testleri içeren APK'yı hedef cihazda çalıştırır ve yürütme sonuçlarını toplar. Testler basit (öğe görüntüleme kontrolü) veya karmaşık (uçtan uca senaryolar: giriş, sepete ekle, ödeme) olabilir. Firebase Test Lab, testleri birbirinden izole etmek için Android Test Orchestrator'ı destekleyerek başarısız bir testin diğerlerini etkilemesini önler.
Ekran görüntüsü testleri, uygulamadaki görsel gerilemeleri tespit etmek için kullanılır. Game loop, intent aracılığıyla uygulamaya bir senaryo listesi ileten özel bir test türüdür ve uygulama bu senaryoları yürütmeli ve önemli ekranların ekran görüntülerini almalıdır. Test Lab, matristeki tüm cihazlardan ekran görüntüleri toplar ve farklılıkları tespit etmek için bunları referans görüntülerle karşılaştırmaya olanak tanır. Bu test türü, farklı GPU'larda işlemeyi kontrol etmek için oyun uygulamalarında özellikle popülerdir.
| Test Türü | Kod | Neyi Kontrol Eder | Ne Zaman Kullanılır |
|---|---|---|---|
| Robot Testi | Gerekli değil | Çökme, ANR, istisnalar | Hızlı kararlılık kontrolü |
| Enstrümantasyon | Espresso / XCTest | Senaryo işlevselliği | Regresyon testi |
| Ekran Görüntüsü | Game loop | Görsel gerilemeler | Farklı cihazlarda UI kontrolü |
Test matrisi, Firebase Test Lab'de seçilen testin üzerinde yürütüldüğü bir dizi cihaz yapılandırmasıdır. Her yapılandırma, cihaz modelini, işletim sistemi sürümünü, ekran yönünü (dikey/yatay) ve bölgesel ayarları (yerel ayar, dil) içerir. Test, seçilen tüm yapılandırmalarda paralel olarak çalıştırılır ve her cihazda sıralı yürütmeye kıyasla toplam yürütme süresini önemli ölçüde azaltır.
Google, matrise farklı özelliklere sahip cihazların dahil edilmesini önerir: amiral gemisi modeli (Google Pixel, Samsung Galaxy S), bütçe dostu bir cihaz (Moto G, Xiaomi Redmi), uygulama tarafından desteklenen minimum API sürümüne sahip bir cihaz. Optimum bir matris, uygulamanın desteklediği tüm işletim sistemi sürümlerini kapsayan 5–10 yapılandırma içerir. iOS için, farklı iOS sürümlerine sahip farklı nesillerden iPhone ve iPad modelleri seçilir (örneğin, iPhone SE, iPhone 14, iPad Air).
Test Lab, testleri otomatik olarak seçilen cihazlara dağıtır ve her yapılandırmada her testi çalıştırır. Tüm matrisin yürütme süresi, en yavaş cihazdaki en yavaş testin yürütme süresine eşittir — diğerlerinin tümü paralel olarak çalışır. Bir test tüm cihazlarda başarısız olursa, Test Lab kaynakları korumak için kalan yapılandırmalarda yürütmesini durdurur. Sonuçlar, teste ve cihaza göre gruplandırılır ve bir hatanın belirli bir yapılandırmaya özgü olup olmadığının hızlı bir şekilde belirlenmesini sağlar.
Robot testi, tek bir test yazmadan bir uygulamayı otomatik olarak keşfetmenizi sağlayan Firebase Test Lab'in amiral gemisi özelliğidir. Firebase Crawler (robot), uygulamanın UI hiyerarşisini analiz eder, tüm etkileşimli öğeleri (düğmeler, metin alanları, listeler, menüler) bulur ve gerçek kullanıcı davranışını simüle ederek bunlarla etkileşime girer. Robot testi, testlerin henüz yazılmadığı geliştirmenin erken aşamalarında veya eski kodu kontrol etmek için özellikle etkilidir.
Bir robot testi çalıştırmak için, Firebase Console'a bir APK veya IPA yükleyin ve Robo test seçeneğini seçin. Robot, kimlik doğrulamanın arkasındaki ekranlara erişmek için önceden yapılandırılmış kimlik bilgileri (giriş/şifre) aracılığıyla otomatik olarak uygulamada oturum açabilir. Ayrıca robot adımlarının sayısını sınırlamak için keşif derinliğini (max depth) ayarlayabilir veya robotun öncelikli olarak tıklaması gereken belirli öğeleri belirtebilirsiniz.
<!-- res/xml/robo_directives.xml -->
<!-- Robot, giriş ve şifre alanlarını dolduracaktır -->
<?xml version="1.0" encoding="utf-8"?>
<robo-directives
xmlns:android="http://schemas.android.com/apk/res/android">
<directive
android:resourceName="@id/et_email"
android:inputValue="test@example.com" />
<directive
android:resourceName="@id/et_password"
android:inputValue="password123" />
<directive
android:resourceName="@id/btn_login"
android:clickAction="CLICK" />
</robo-directives>
Robot testleri, karmaşık senaryolar için manuel testlerin ve yazılan enstrümantasyon testlerinin yerini almaz. Robot iş mantığını kontrol edemez: tüm öğelere sırayla tıklar, ancak sonucun doğru olup olmadığını bilemez. Ayrıca robot, standart ViewGroup'dan miras almayan özel görünümlerle etkileşime giremez ve WebView'i işleyemez. Bu durumlar için enstrümantasyon testleri veya Game loop kullanılmalıdır.
Firebase Test Lab'in CI/CD sistemleriyle entegrasyonu, depoya her push yapıldığında testlerin otomatik olarak çalıştırılmasını sağlar. Test Lab, Android için Gradle görevlerini ve her iki platform için Fastlane'i destekler. Bir CI/CD hattı kurulumu, uygulama derlemesi, APK/IPA'nın Google Cloud Storage'a yüklenmesi, Firebase CLI aracılığıyla testlerin çalıştırılması ve derleme durumunu görüntülemek için CI sistemine raporların geri alınmasını içerir.
Google, test yükleme ve yürütmeyi otomatikleştiren Gradle için gcloud-test-lab eklentisini sağlar. assembleAndroidTest görevi, testleri içeren APK'yı oluşturur ve gcloud görevleri onu Test Lab'a yükler ve matrisi çalıştırır. Test sonuçları Gradle'a pass/fail olarak döndürülür ve Gradle'ı destekleyen herhangi bir CI hattına Test Lab entegrasyonuna olanak tanır. Yetkilendirme için Test Lab izinlerine sahip bir Firebase hizmet hesabı kullanılır.
// build.gradle (module: app)
task runTestLab() {
exec {
commandLine "gcloud", "firebase", "test", "android", "run",
"--type", "robo",
"--app", "build/outputs/apk/debug/app-debug.apk",
"--device", "model=Pixel7,version=33",
"--device", "model=GalaxyS23,version=34",
"--device", "model=RedmiNote12,version=31",
"--timeout", "15m",
"--results-dir", "firebase/test-lab/robo"
}
}
Fastlane, iOS ve Android testleriyle entegrasyon için firebase_test_lab eklentisini sağlar. Bir Fastlane lane'i derlemeyi gerçekleştirir, testleri çalıştırır ve sonuçları işler. iOS XCTest için Test Lab, test hedefi oluşturulurken otomatik olarak oluşturulan bir xctestrun dosyası gerektirir. Fastlane ayrıca, her çalıştırmadan sonra ekibi test durumu hakkında bilgilendirmek için test sonuçlarını Slack veya diğer mesajlaşma uygulamalarına yükleyebilir.
Testler tamamlandıktan sonra, Firebase Test Lab, Firebase Console ve gcloud CLI aracılığıyla kullanılabilen kapsamlı bir rapor sağlar. Rapor, kısa bir özet (geçen, başarısız ve atlanan testlerin sayısı), her cihazdaki her test için ayrıntılı bilgi, yürütme videoları, önemli adımların ekran görüntüleri ve cihaz günlüklerini (Android için logcat, iOS için sistem günlüğü) içerir. Başarısız testler için, hatanın tam konumunu içeren bir yığın izi mevcuttur.
Bir robot testi için rapor, bir enstrümantasyon testinden farklıdır: test senaryosu başına geçti/kaldı yerine, rapor keşif istatistiklerini gösterir. Temel metrikler — bulunan ve ziyaret edilen ekran sayısı, robot etkileşimlerinin sayısı (tıklamalar, kaydırmalar, metin girişi), tespit edilen çökmeler ve ANR'ler ve uygulama içinde kat edilen yol. Robot yürütme videosu, hangi ekranların test edildiğini ve hangilerinin kapsanmadığını görsel olarak değerlendirmenizi sağlar.
Test sonuçları, projeyle ilişkili bucket'ta Google Cloud Storage'da saklanır. Veriler, dışa aktarma ve harici analiz sistemleriyle entegrasyon için kullanılabilir. Çalıştırmalar arasında uzun süreli depolama ve sonuçların karşılaştırılması için BigQuery dışa aktarma ayarlanması veya programlı sonuç alma için Firebase Test Lab API'sinin kullanılması önerilir. Google, her test çalıştırması için sonuçların tam setini içeren bir ZIP arşivi indirme olanağı sağlar.
Sıkça Sorulan Sorular
Spark planı, günde 10 Robo testi ve ayda 5 saat enstrümantasyon testini ücretsiz içerir. Blaze planı zamana göre faturalandırılır: Robo testleri için ~1 ABD Doları/cihaz-saat ve enstrümantasyon testleri için ~5 ABD Doları. Kesin maliyet bölgeye ve cihaz türüne bağlıdır.
Fiziksel cihazlar sensörler, kamera, GPS, Bluetooth ve gerçek performansla ilgili sorunlar dahil olmak üzere daha doğru sonuçlar sağlar. Öykünücüler daha hızlı başlar ve daha ucuzdur, ancak donanım özellikleriyle ilgili sorunları ortaya çıkarmaz. Google, yayın öncesi testler için fiziksel cihazları önerir.
Giriş alanları (giriş, şifre) ve tıklanacak düğmeler içeren bir XML dosyası robo_directives.xml oluşturun. Firebase Console veya CLI aracılığıyla testi başlatırken dosyayı APK ile birlikte yükleyin. Robot, keşfe başlamadan önce belirtilen eylemleri gerçekleştirecektir.
Evet, Firebase Test Lab, 2024'ten beri iOS'u desteklemektedir. Gerçek iPhone ve iPad cihazlarında Robo testleri (otomatik keşif) ve XCTest (enstrümantasyon testleri) mevcuttur. Yükleme için bir test hedefi içeren IPA dosyası gereklidir.
GitHub Actions'da Firebase CLI kullanın: Service Account JSON aracılığıyla kimlik doğrulama ayarlayın, gcloud SDK'yı kurun, APK ve yapılandırmalarla firebase test android run komutunu çalıştırın. Test sonuçları Firebase Console veya gcloud CLI aracılığıyla kullanılabilir.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun