Test yazmak, çoğu geliştiricinin en az sevdiği iş. Ama 2025'te Google, Firebase App Testing Agent ile bu denklemi tamamen değiştirdi. Artık "Giriş yap butonuna tık, email alanına test@example.com yaz, şifreyi gir ve giriş yap" gibi doğal dil cümleleriyle test senaryosu oluşturabilirsin. AI, bu cümleleri otomatik olarak çalıştırılabilir test adımlarına dönüştürüyor. Üstelik görsel doğrulama, erişilebilirlik kontrolü ve CI/CD entegrasyonu da cabası. İşte Testing Agent'ın tüm yeteneklerini, mimarisini ve production'da nasıl kullanacağını detaylıca ele alıyoruz.
💡 Not: Firebase App Testing Agent şu an beta aşamasında ve sürekli gelişiyor. Bu yazıdaki bilgiler Şubat 2026 itibarıyla güncel. En son özellikler için Firebase Blog adresini takip et. Resmi rehber: Firebase Testing Docs, altta yatan platform: Google Cloud Testing.
İçindekiler
- App Testing Agent Nedir?
- Doğal Dil ile Test Yazma
- Test Mimarisi ve Çalışma Prensibi
- Görsel Doğrulama ve AI Analiz
- Erişilebilirlik Testi
- CI/CD Entegrasyonu
- Production Senaryolar
- Sınırlamalar ve İpuçları
- Sonuç ve Öneriler
App Testing Agent Nedir?
Firebase App Testing Agent, Gemini tabanlı bir AI test asistanı. Uygulamanı gerçek cihazlarda veya emülatörlerde çalıştırıyor, doğal dil komutlarını anlıyor ve aksiyonlara dönüştürüyor.
Geleneksel Test vs AI Test
Özellik | XCTest / Espresso | Firebase Testing Agent |
|---|---|---|
Test Yazma | Kod yazman gerekir | Doğal dil yeterli |
Bakım | UI değişince testler kırılır | AI adapte olur |
Öğrenme Eğrisi | Yüksek (framework bilgisi) | Düşük (Türkçe/İngilizce yaz) |
Görsel Kontrol | Screenshot comparison | AI-powered görsel analiz |
Erişilebilirlik | Ayrı araç gerekir | Yerleşik kontrol |
CI/CD | Karmaşık setup | Firebase CLI entegre |
Maliyet | Cihaz farm ücreti | Firebase plan dahilinde |
Kapsam | Yazılan kadar | Keşifsel test de yapar |
Geleneksel test stratejilerini iOS Clean Architecture yazımızda, CI/CD otomasyon altyapısını da CI/CD Pipeline rehberimizde ele almıştık.
Desteklenen Platformlar
- Android — APK veya AAB yükle
- iOS — IPA dosyası yükle (Simülatör + Gerçek cihaz)
- Web — URL ver, test etsin
🔍 Pro Tip: Testing Agent'ı sadece QA için düşünme. Yeni bir özellik geliştirirken "Happy path çalışıyor mu?" kontrolü için bile kullanabilirsin. Mobile Testing yazımızdaki test piramidi ile birleştir — unit testler hâlâ kritik.
Doğal Dil ile Test Yazma
Testing Agent'ın en güçlü yönü doğal dil anlama yeteneği. İngilizce veya Türkçe komutlar yazabilirsin.
Test Agent Yapılandırması
typescript
1// Firebase App Testing Agent — temel yapılandırma2import { TestingAgent, AgentConfig } from '@firebase/testing-agent';3 4const agentConfig: AgentConfig = {5 projectId: process.env.FIREBASE_PROJECT_ID!,6 platform: 'ios',7 device: { model: 'iPhone15Pro', osVersion: '18.0' },8 timeout: 120_000,9 retryOnFlake: true,10 captureScreenshots: true,11 captureVideo: true,12};13 14const agent = new TestingAgent(agentConfig);15 16// Doğal dil ile test senaryosu çalıştır17const result = await agent.run({18 scenario: 'Giriş ekranında geçersiz şifre dene, hata mesajının göründüğünü doğrula',19 app: './build/MyApp.ipa',20});21 22console.log(`Test: ${result.status}, Süre: ${result.durationMs}ms`);Bu yapılandırmada retryOnFlake: true özellikle önemli — ağ gecikmesi veya animasyon timing sorunlarından kaynaklanan flaky testleri otomatik tekrar çalıştırır.
Temel Komut Örnekleri
text
1Test Senaryosu: Kullanıcı Girişi2 31. Uygulamayı aç42. "Giriş Yap" butonuna tıkla53. Email alanına "test@example.com" yaz64. Şifre alanına "Test1234!" yaz75. "Giriş" butonuna bas86. Ana sayfa yüklenene kadar bekle97. Ekranda "Hoş geldiniz" yazısının göründüğünü doğrula108. Profil simgesine tıkla119. Email adresinin "test@example.com" olarak gösterildiğini kontrol etYAML Formatında Senaryo Tanımı
yaml
1# firebase-test-scenarios/login-flow.yaml2name: "Kullanıcı Giriş Akışı"3description: "Email/şifre ile giriş ve profil kontrolü"4platform: ios5device: "iPhone 15 Pro"6os_version: "18.0"7 8steps:9 - action: "Uygulamayı başlat"10 - action: "Giriş Yap butonuna tıkla"11 - action: "Email alanına 'test@example.com' yaz"12 - action: "Şifre alanına 'SecurePass123' yaz"13 - action: "Giriş butonuna bas"14 - wait: 315 - assert: "Ekranda 'Hoş geldiniz' metni görünür"16 - action: "Profil sekmesine git"17 - assert: "Email adresi 'test@example.com' olarak görünür"18 19on_failure:20 - screenshot: true21 - video: true22 - logs: trueCLI ile Çalıştırma
bash
1# Firebase CLI ile test çalıştır2firebase testing:agent run \3 --app ./build/MyApp.ipa \4 --scenario ./firebase-test-scenarios/login-flow.yaml \5 --device "iPhone 15 Pro" \6 --os-version "18.0"7 8# Sonuçları görüntüle9firebase testing:agent results --lastTest Mimarisi ve Çalışma Prensibi
Testing Agent arka planda nasıl çalışıyor?
İşlem Akışı
- Senaryo Parsing — Doğal dil komutları Gemini ile analiz edilir
- Accessibility Tree — Uygulamanın UI hiyerarşisi çıkarılır
- Element Matching — "Giriş Yap butonu" → accessibility label/ID eşleştirmesi
- Aksiyon Yürütme — Tıklama, yazma, scroll, swipe işlemleri
- Doğrulama — Assert komutları için ekran analizi
- Raporlama — Sonuçlar, ekran görüntüleri, video
Element Eşleştirme Stratejisi
Agent, elemanları bulmak için birden fazla strateji kullanır:
Öncelik | Strateji | Örnek |
|---|---|---|
1 | Accessibility Label | "Giriş Yap" label'ı |
2 | Text Content | Buton üzerindeki metin |
3 | Resource ID (Android) | @+id/login_button |
4 | Accessibility ID (iOS) | accessibilityIdentifier |
5 | Visual Recognition | AI ile görsel tanıma |
6 | Position-based | "Sağ üst köşedeki ikon" |
🔍 Pro Tip: Test Agent'ın elementleri doğru bulması için accessibility label'larını düzgün tanımla. Bu hem test hem de gerçek kullanıcılar için faydalı. SwiftUI'da.accessibilityIdentifier("login_button")ve.accessibilityLabel("Giriş Yap")ekle.
Görsel Doğrulama ve AI Analiz
Geleneksel screenshot comparison pixel-perfect karşılaştırma yapar — bir font boyutu değişse test kırılır. Testing Agent ise AI-powered görsel analiz kullanır.
AI Görsel Analiz Yetenekleri
yaml
1# Görsel doğrulama senaryosu2steps:3 - action: "Ana sayfaya git"4 - visual_check:5 description: "Navigasyon barı düzgün görünüyor mu?"6 criteria:7 - "Logo sol üstte görünmeli"8 - "Menü ikonları sağ tarafta sıralanmış olmalı"9 - "Arka plan rengi beyaz veya koyu tema rengi olmalı"10 - "Hiçbir element üst üste binmemeli"11 12 - action: "Profil sayfasına git"13 - visual_check:14 description: "Profil kartı tasarımı"15 criteria:16 - "Avatar dairesel olmalı"17 - "İsim ve email okunabilir boyutta olmalı"18 - "Düzenle butonu görünür olmalı"19 - "Dark mode'da kontrast yeterli olmalı"Regression Detection
Agent, önceki başarılı çalıştırmalarla karşılaştırarak görsel regression tespit eder:
- Layout shift — Elemanların beklenmeyen yer değiştirmesi
- Renk tutarsızlığı — Tema renkleri değişmiş mi?
- Metin kesilmesi — Uzun metinler düzgün wrap oluyor mu?
- Responsive kırılma — Farklı ekran boyutlarında sorun var mı?
Erişilebilirlik Testi
Testing Agent, her test çalıştırmasında otomatik erişilebilirlik kontrolü yapar:
Kontrol Edilen Alanlar
typescript
1interface AccessibilityReport {2 score: number; // 0-1003 issues: AccessibilityIssue[];4 warnings: AccessibilityIssue[];5 passed: string[];6}7 8interface AccessibilityIssue {9 type: 'missing_label' | 'low_contrast' | 'small_target' |10 'missing_heading' | 'duplicate_id' | 'focus_trap';11 element: string;12 description: string;13 severity: 'critical' | 'major' | 'minor';14 suggestion: string;15 wcag: string; // WCAG 2.1 AA referansı16}17 18// Örnek rapor çıktısı19const report: AccessibilityReport = {20 score: 78,21 issues: [22 {23 type: 'low_contrast',24 element: 'subtitle_label',25 description: 'Metin kontrastı 2.8:1 — minimum 4.5:1 olmalı',26 severity: 'major',27 suggestion: 'Metin rengini #6B7280 yerine #374151 yapın',28 wcag: '1.4.3 Contrast (Minimum)',29 },30 {31 type: 'small_target',32 element: 'settings_icon',33 description: 'Dokunma alanı 32x32 — minimum 44x44 olmalı',34 severity: 'major',35 suggestion: 'Buton padding veya frame boyutunu artırın',36 wcag: '2.5.5 Target Size',37 },38 ],39 warnings: [40 {41 type: 'missing_heading',42 element: 'section_title',43 description: 'Başlık elementi heading role tanımlı değil',44 severity: 'minor',45 suggestion: 'accessibilityTraits = .header ekleyin',46 wcag: '1.3.1 Info and Relationships',47 },48 ],49 passed: [50 'Tüm görsellerin alt text tanımı var',51 'Navigasyon tutarlı ve öngörülebilir',52 'Form alanlarının label bağlantıları doğru',53 ],54};CI/CD Entegrasyonu
Testing Agent'ı GitHub Actions veya diğer CI/CD pipeline'larına entegre etmek kolay.
GitHub Actions Örneği
yaml
1# .github/workflows/firebase-test.yml2name: Firebase App Testing3 4on:5 pull_request:6 branches: [main, develop]7 8jobs:9 test:10 runs-on: ubuntu-latest11 steps:12 - uses: actions/checkout@v413 14 - name: Setup Firebase CLI15 run: npm install -g firebase-tools16 17 - name: Authenticate18 run: |19 echo '${{ secrets.FIREBASE_SA_KEY }}' > sa-key.json20 export GOOGLE_APPLICATION_CREDENTIALS=sa-key.json21 22 - name: Build App23 run: |24 cd android && ./gradlew assembleDebug25 26 - name: Run Testing Agent27 run: |28 firebase testing:agent run \29 --app ./android/app/build/outputs/apk/debug/app-debug.apk \30 --scenarios ./test-scenarios/ \31 --format junit \32 --output ./test-results/33 34 - name: Upload Results35 uses: actions/upload-artifact@v436 with:37 name: test-results38 path: test-results/39 40 - name: Comment PR41 if: github.event_name == 'pull_request'42 uses: firebase/test-results-action@v143 with:44 results-path: test-results/Paralel Test Stratejisi
Birden fazla cihazda paralel test çalıştırabilirsin:
bash
1# Matrix test — 4 cihaz paralel2firebase testing:agent run \3 --app ./MyApp.ipa \4 --scenarios ./test-scenarios/ \5 --devices "iPhone 15 Pro:18.0,iPhone SE:17.0,iPad Air:18.0,iPad mini:17.0" \6 --parallel 4Production Senaryolar
E-Ticaret Uygulaması Test Senaryosu
text
1Senaryo: Sipariş Akışı (End-to-End)2 31. Uygulamayı aç ve "Erkek Giyim" kategorisine git42. İlk ürüne tıkla53. Beden olarak "L" seç64. "Sepete Ekle" butonuna bas75. Sepet ikonundaki badge'in "1" gösterdiğini doğrula86. Sepete git97. Toplam tutarın 0'dan büyük olduğunu kontrol et108. "Ödemeye Geç" butonuna bas119. Teslimat adresi formunu doldur:12 - Ad: Test Kullanıcı13 - Adres: Atatürk Cad. No:114 - İlçe: Kadıköy15 - İl: İstanbul1610. "Devam Et" butonuna bas1711. Kredi kartı seçeneğini seç1812. Sipariş özet ekranında ürün adının göründüğünü doğrulaRegresyon Test Seti
yaml
1# regression-suite.yaml2name: "Haftalık Regresyon"3scenarios:4 - file: login-flow.yaml5 - file: registration-flow.yaml6 - file: search-product.yaml7 - file: add-to-cart.yaml8 - file: checkout-flow.yaml9 - file: profile-update.yaml10 - file: push-notification.yaml11 - file: deep-link-handling.yaml12 - file: offline-mode.yaml13 - file: accessibility-audit.yaml14 15schedule:16 cron: "0 2 * * 1" # Her Pazartesi 02:0017 18notifications:19 slack: "#qa-alerts"20 email: "team@example.com"21 on_failure_only: trueSınırlamalar ve İpuçları
Mevcut Sınırlamalar
- Karmaşık gesture'lar — Multi-finger pinch/zoom henüz sınırlı
- Custom UI bileşenleri — Canvas-based özel bileşenlerde element bulma zorlaşır
- Animasyon zamanlama — Hızlı animasyonlarda timing sorunları olabilir
- Dil desteği — İngilizce en iyi sonucu verir, Türkçe iyileşiyor
İpuçları
- Accessibility label'larını HER ZAMAN tanımla
- Test senaryolarını kısa ve odaklı tut (max 15 adım)
- Wait komutlarını stratejik kullan
- Hata durumlarını da test et (yanlış şifre, ağ hatası)
- Görsel doğrulamayı kritik ekranlar için kullan
Sonuç ve Öneriler
Firebase App Testing Agent, test otomasyonunu demokratikleştiriyor. Doğal dil ile test yazabilmek, QA sürecini sadece test mühendislerinin değil, product manager'ların, designer'ların ve junior geliştiricilerin de katılabildiği bir sürece dönüştürüyor. Mobile Testing yazımızdaki test stratejilerini AI test agent ile birleştirdiğinde, hem hız hem kapsam açısından büyük fayda elde edersin.
Öneriler
- Unit testleri BIRAKMA — Testing Agent E2E için, unit testler hâlâ kritik. TDD yazımızdaki yaklaşımla birleştir
- Accessibility label'larını düzgün yaz — Hem test hem gerçek kullanıcılar için
- CI/CD'ye entegre et — Her PR'da otomatik test çalışsın. Firebase Advanced altyapısı ile güçlendir
- Görsel doğrulamayı kullan — Pixel-perfect değil, AI-powered kontrol
- Keşifsel testi dene — "Uygulamayı gez ve sorun bul" komutunu dene
ALTIN İPUCU
Bu yazının en değerli bilgisi
Bu ipucu, yazının en önemli çıkarımını içeriyor.
Easter Egg
Gizli bir bilgi buldun!
Bu bölümde gizli bir bilgi var. Keşfetmek ister misin?
Okuyucu Ödülü
Testing Agent + Firebase Performance Monitoring combo'su: Test Agent çalışırken Performance Monitoring trace'lerini otomatik toplar. Böylece her test senaryosunun ne kadar sürdüğünü, hangi ekranın yavaş açıldığını ve memory leak olup olmadığını tek raporda görürsün. --perf-trace flag'ini ekleyerek cold start, warm start ve screen render sürelerini de ölçebilirsin. QA + Performance = tek pipeline.

