Tüm Yazılar
KategoriAI
Okuma Süresi
21 dk okuma
Yayın Tarihi
...
Kelime Sayısı
1.932kelime

Kahveni hazırla - bu içerikli bir makale!

AI destekli test otomasyonu, doğal dil ile test senaryoları yazma, görsel doğrulama ve CI/CD entegrasyonu. Firebase App Testing Agent derinlemesine rehber.

Firebase App Testing Agent: Doğal Dil ile Test

# 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?

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

  1. Uygulamayı aç
  2. "Giriş Yap" butonuna tıkla
  3. Email alanına "[email protected]" yaz
  4. Şifre alanına "Test1234!" yaz
  5. "Giriş" butonuna bas
  6. Ana sayfa yüklenene kadar bekle
  7. Ekranda "Hoş geldiniz" yazısının göründüğünü doğrula
  8. Profil simgesine tıkla
  9. 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ışı

  1. Senaryo Parsing — Doğal dil komutları Gemini ile analiz edilir
  2. Accessibility Tree — Uygulamanın UI hiyerarşisi çıkarılır
  3. Element Matching — "Giriş Yap butonu" → accessibility label/ID eşleştirmesi
  4. Aksiyon Yürütme — Tıklama, yazma, scroll, swipe işlemleri
  5. Doğrulama — Assert komutları için ekran analizi
  6. 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)

  1. Uygulamayı aç ve "Erkek Giyim" kategorisine git
  2. İlk ürüne tıkla
  3. Beden olarak "L" seç
  4. "Sepete Ekle" butonuna bas
  5. Sepet ikonundaki badge'in "1" gösterdiğini doğrula
  6. Sepete git
  7. Toplam tutarın 0'dan büyük olduğunu kontrol et
  8. "Ödemeye Geç" butonuna bas
  9. Teslimat adresi formunu doldur:

- Ad: Test Kullanıcı

- Adres: Atatürk Cad. No:1

- İlçe: Kadıköy

- İl: İstanbul

  1. "Devam Et" butonuna bas
  2. Kredi kartı seçeneğini seç
  3. 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ı

  1. Accessibility label'larını HER ZAMAN tanımla
  2. Test senaryolarını kısa ve odaklı tut (max 15 adım)
  3. Wait komutlarını stratejik kullan
  4. Hata durumlarını da test et (yanlış şifre, ağ hatası)
  5. 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

  1. Unit testleri BIRAKMA — Testing Agent E2E için, unit testler hâlâ kritik. TDD yazımızdaki yaklaşımla birleştir
  2. Accessibility label'larını düzgün yaz — Hem test hem gerçek kullanıcılar için
  3. CI/CD'ye entegre et — Her PR'da otomatik test çalışsın. Firebase Advanced altyapısı ile güçlendir
  4. Görsel doğrulamayı kullan — Pixel-perfect değil, AI-powered kontrol
  5. 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.

Etiketler

#Firebase#Testing#AI#Automation#CI/CD#Natural Language#QA
Muhittin Çamdalı

Muhittin Çamdalı

Senior iOS Developer

12+ yıllık deneyime sahip iOS Developer. Swift, SwiftUI ve modern iOS mimarileri konusunda uzman. Apple platformlarında performanslı ve kullanıcı dostu uygulamalar geliştiriyorum.

iOS Geliştirme Haberleri

Haftalık Swift tips, SwiftUI tricks ve iOS best practices. Spam yok, sadece değerli içerik.

Gizliliğinize saygı duyuyoruz. İstediğiniz zaman abonelikten çıkabilirsiniz.

Paylaş

Bunu da begenebilirsiniz