# Firebase App Testing Agent: Doğal Dil ile Test
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 [email protected] 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
// Firebase App Testing Agent — temel yapılandırma
import { TestingAgent, AgentConfig } from '@firebase/testing-agent';
const agentConfig: AgentConfig = {
projectId: process.env.FIREBASE_PROJECT_ID!,
platform: 'ios',
device: { model: 'iPhone15Pro', osVersion: '18.0' },
timeout: 120_000,
retryOnFlake: true,
captureScreenshots: true,
captureVideo: true,
};
const agent = new TestingAgent(agentConfig);
// Doğal dil ile test senaryosu çalıştır
const result = await agent.run({
scenario: 'Giriş ekranında geçersiz şifre dene, hata mesajının göründüğünü doğrula',
app: './build/MyApp.ipa',
});
console.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
Test Senaryosu: Kullanıcı Girişi
- Uygulamayı aç
- "Giriş Yap" butonuna tıkla
- Email alanına "[email protected]" yaz
- Şifre alanına "Test1234!" yaz
- "Giriş" butonuna bas
- Ana sayfa yüklenene kadar bekle
- Ekranda "Hoş geldiniz" yazısının göründüğünü doğrula
- Profil simgesine tıkla
- Email adresinin "[email protected]" olarak gösterildiğini kontrol et
\\\`
YAML Formatında Senaryo Tanımı
\\\`yaml
# firebase-test-scenarios/login-flow.yaml
name: "Kullanıcı Giriş Akışı"
description: "Email/şifre ile giriş ve profil kontrolü"
platform: ios
device: "iPhone 15 Pro"
os_version: "18.0"
steps:
- action: "Uygulamayı başlat"
- action: "Giriş Yap butonuna tıkla"
- action: "Email alanına '[email protected]' yaz"
- action: "Şifre alanına 'SecurePass123' yaz"
- action: "Giriş butonuna bas"
- wait: 3
- assert: "Ekranda 'Hoş geldiniz' metni görünür"
- action: "Profil sekmesine git"
- assert: "Email adresi '[email protected]' olarak görünür"
on_failure:
- screenshot: true
- video: true
- logs: true
\\\`
CLI ile Çalıştırma
\\\`bash
# Firebase CLI ile test çalıştır
firebase testing:agent run \
--app ./build/MyApp.ipa \
--scenario ./firebase-test-scenarios/login-flow.yaml \
--device "iPhone 15 Pro" \
--os-version "18.0"
# Sonuçları görüntüle
firebase testing:agent results --last
\\\`
Test 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
# Görsel doğrulama senaryosu
steps:
- action: "Ana sayfaya git"
- visual_check:
description: "Navigasyon barı düzgün görünüyor mu?"
criteria:
- "Logo sol üstte görünmeli"
- "Menü ikonları sağ tarafta sıralanmış olmalı"
- "Arka plan rengi beyaz veya koyu tema rengi olmalı"
- "Hiçbir element üst üste binmemeli"
- action: "Profil sayfasına git"
- visual_check:
description: "Profil kartı tasarımı"
criteria:
- "Avatar dairesel olmalı"
- "İsim ve email okunabilir boyutta olmalı"
- "Düzenle butonu görünür olmalı"
- "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
interface AccessibilityReport {
score: number; // 0-100
issues: AccessibilityIssue[];
warnings: AccessibilityIssue[];
passed: string[];
}
interface AccessibilityIssue {
type: 'missing_label' | 'low_contrast' | 'small_target' |
'missing_heading' | 'duplicate_id' | 'focus_trap';
element: string;
description: string;
severity: 'critical' | 'major' | 'minor';
suggestion: string;
wcag: string; // WCAG 2.1 AA referansı
}
// Örnek rapor çıktısı
const report: AccessibilityReport = {
score: 78,
issues: [
{
type: 'low_contrast',
element: 'subtitle_label',
description: 'Metin kontrastı 2.8:1 — minimum 4.5:1 olmalı',
severity: 'major',
suggestion: 'Metin rengini #6B7280 yerine #374151 yapın',
wcag: '1.4.3 Contrast (Minimum)',
},
{
type: 'small_target',
element: 'settings_icon',
description: 'Dokunma alanı 32x32 — minimum 44x44 olmalı',
severity: 'major',
suggestion: 'Buton padding veya frame boyutunu artırın',
wcag: '2.5.5 Target Size',
},
],
warnings: [
{
type: 'missing_heading',
element: 'section_title',
description: 'Başlık elementi heading role tanımlı değil',
severity: 'minor',
suggestion: 'accessibilityTraits = .header ekleyin',
wcag: '1.3.1 Info and Relationships',
},
],
passed: [
'Tüm görsellerin alt text tanımı var',
'Navigasyon tutarlı ve öngörülebilir',
'Form alanlarının label bağlantıları doğru',
],
};
\\\`
CI/CD Entegrasyonu
Testing Agent'ı GitHub Actions veya diğer CI/CD pipeline'larına entegre etmek kolay.
GitHub Actions Örneği
\\\`yaml
# .github/workflows/firebase-test.yml
name: Firebase App Testing
on:
pull_request:
branches: [main, develop]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Firebase CLI
run: npm install -g firebase-tools
- name: Authenticate
run: |
echo '${{ secrets.FIREBASE_SA_KEY }}' > sa-key.json
export GOOGLE_APPLICATION_CREDENTIALS=sa-key.json
- name: Build App
run: |
cd android && ./gradlew assembleDebug
- name: Run Testing Agent
run: |
firebase testing:agent run \
--app ./android/app/build/outputs/apk/debug/app-debug.apk \
--scenarios ./test-scenarios/ \
--format junit \
--output ./test-results/
- name: Upload Results
uses: actions/upload-artifact@v4
with:
name: test-results
path: test-results/
- name: Comment PR
if: github.event_name == 'pull_request'
uses: firebase/test-results-action@v1
with:
results-path: test-results/
\\\`
Paralel Test Stratejisi
Birden fazla cihazda paralel test çalıştırabilirsin:
\\\`bash
# Matrix test — 4 cihaz paralel
firebase testing:agent run \
--app ./MyApp.ipa \
--scenarios ./test-scenarios/ \
--devices "iPhone 15 Pro:18.0,iPhone SE:17.0,iPad Air:18.0,iPad mini:17.0" \
--parallel 4
\\\`
Production Senaryolar
E-Ticaret Uygulaması Test Senaryosu
\\\`text
Senaryo: Sipariş Akışı (End-to-End)
- Uygulamayı aç ve "Erkek Giyim" kategorisine git
- İlk ürüne tıkla
- Beden olarak "L" seç
- "Sepete Ekle" butonuna bas
- Sepet ikonundaki badge'in "1" gösterdiğini doğrula
- Sepete git
- Toplam tutarın 0'dan büyük olduğunu kontrol et
- "Ödemeye Geç" butonuna bas
- Teslimat adresi formunu doldur:
- Ad: Test Kullanıcı
- Adres: Atatürk Cad. No:1
- İlçe: Kadıköy
- İl: İstanbul
- "Devam Et" butonuna bas
- Kredi kartı seçeneğini seç
- Sipariş özet ekranında ürün adının göründüğünü doğrula
\\\`
Regresyon Test Seti
\\\`yaml
# regression-suite.yaml
name: "Haftalık Regresyon"
scenarios:
- file: login-flow.yaml
- file: registration-flow.yaml
- file: search-product.yaml
- file: add-to-cart.yaml
- file: checkout-flow.yaml
- file: profile-update.yaml
- file: push-notification.yaml
- file: deep-link-handling.yaml
- file: offline-mode.yaml
- file: accessibility-audit.yaml
schedule:
cron: "0 2 * * 1" # Her Pazartesi 02:00
notifications:
slack: "#qa-alerts"
email: "[email protected]"
on_failure_only: true
\\\`
Sı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.

