Mobile App Wiki

Mobile App Wiki

mobileapp.wiki

Ana Sayfa

Kategoriler

mobileapp.wiki

Mobile App Wiki

Mobil uygulama geliştirme bilgi tabanı

GizlilikAna SayfaSitemapRSS
© 2026 mobileapp.wiki
Ana Sayfa/Test & QA/Unit Testing (Mobil)
Test & QA3 dk okuma

Unit Testing (Mobil)

Mobil uygulama birim test rehberi. Jest, XCTest ve JUnit araçları, AAA pattern, test coverage hedefleri ve platform bazlı test stratejileri.

unit testjestxctestjunittestingtddcoveragemockreact native

İçindekiler

Unit Test Nedir?Neden Önemli?Platform Bazlı AraçlarReact NativeiOS (Swift)Android (Kotlin)FlutterNe Test Edilmeli?Test EtTest Etme (Unit ile)Test Yapısı (AAA Pattern)Coverage (Kapsam)Mocking StratejileriNe Zaman Mock?Mock TürleriBest Practicesİlgili Konular

Unit Test Nedir?

Kodun en küçük birimlerini (fonksiyon, sınıf, modül) izole olarak test etme. Mantıksal hataları erken yakalar. 2026 itibarıyla unit testing, profesyonel mobil uygulama geliştirmenin standart parçasıdır ve CI/CD pipeline'larının temelini oluşturur.

Neden Önemli?

  • Bug'ları erken tespit (production'dan çok daha ucuz - 100x maliyet farkı)
  • Refactoring güveni (değişiklik sonrası her şey çalışıyor mu?)
  • Dokümantasyon (test, kodun nasıl çalıştığını gösterir)
  • CI/CD pipeline'ının temeli
  • Yeni ekip üyeleri için living documentation

Platform Bazlı Araçlar

React Native

  • Jest: Facebook'un test framework'ü (varsayılan)
  • React Native Testing Library: Component test (render + query + fire event)
  • Mock: jest.mock() ile modül mocklama
  • Snapshot testing: Bileşen çıktısını snapshot ile karşılaştırma
  • @testing-library/react-native ile kullanıcı odaklı testler

iOS (Swift)

  • XCTest: Apple'ın yerleşik test framework'ü
  • Quick/Nimble: BDD tarzı test (describe/it formatı)
  • Xcode Test Navigator ile çalıştırma
  • Swift Testing framework (Swift 5.9+): Modern, macro tabanlı test API

Android (Kotlin)

  • JUnit 5: Standart Java/Kotlin test framework'ü
  • Mockito / MockK: Mocklama (MockK Kotlin için daha idiomatic)
  • Robolectric: Android framework'ü simüle (device olmadan)
  • Android Studio Test Runner ile çalıştırma

Flutter

  • flutter_test: Yerleşik test paketi
  • mockito (Dart): Mock oluşturma
  • Widget test ve unit test ayrımı
  • Golden test: Visual snapshot testing

Ne Test Edilmeli?

Test Et

  • İş mantığı (hesaplama, validasyon, dönüşüm)
  • Veri modelleri (parse, serialize, fromJson/toJson)
  • Utility fonksiyonlar (format, filter, sort)
  • State management mantığı (reducer, action, selector)
  • API response handling (başarılı, hatalı, edge case)
  • Form validasyon kuralları

Test Etme (Unit ile)

  • UI rendering (integration/e2e test)
  • Platform API'ları (camera, GPS - mock kullan)
  • Ağ çağrıları (mock kullan, gerçek API çağırma)
  • Veritabanı (integration test)
  • Navigasyon akışları

Test Yapısı (AAA Pattern)

  1. Arrange: Test verilerini hazırla
  2. Act: Test edilen fonksiyonu çağır
  3. Assert: Sonucu doğrula
// Jest Örneği
describe('formatPrice', () => {
  it('should format number with currency symbol', () => {
    // Arrange
    const price = 29.99;
    // Act
    const result = formatPrice(price, 'TRY');
    // Assert
    expect(result).toBe('29,99 TL');
  });

  it('should handle zero price', () => {
    expect(formatPrice(0, 'TRY')).toBe('0,00 TL');
  });
});

Coverage (Kapsam)

  • Line coverage: Kaç satır test edildi
  • Branch coverage: Kaç koşul dalı test edildi
  • Function coverage: Kaç fonksiyon test edildi
  • Hedef: %70-80 (önemli iş mantığı %100)
  • %100 coverage ≠ bug-free (yanlış güven vermesin)
  • Coverage tool: Istanbul/nyc (JS), Xcode (iOS), JaCoCo (Android)

Mocking Stratejileri

Ne Zaman Mock?

  • Dış servisler (API, database)
  • Platformm API'ları (kamera, konum)
  • Zaman bağımlı fonksiyonlar (Date.now, setTimeout)
  • Rastgele değerler (Math.random)

Mock Türleri

  • Mock: Davranış tanımlanan sahte nesne
  • Stub: Sabit değer döndüren basit mock
  • Spy: Gerçek fonksiyonu çağırıp çağrı bilgisini kaydeden

Best Practices

  • Test adları açıklayıcı olsun ("should_return_error_when_email_invalid")
  • Her test tek bir şeyi test etsin
  • Test bağımsız olsun (sıra fark etmemeli)
  • Mock'ları minimum tut (over-mocking = güvenilmez test)
  • CI'da her PR'da otomatik çalıştır
  • Hızlı olsun (tüm unit testler < 1 dakika)
  • Test data factory/builder pattern kullan
  • Flaky test'leri hemen düzelt (güven kaybı yaratır)

Unit test yazmak zaman alır ama yazmamak daha çok zaman alır. Her büyük bug bir eksik testtir.

İlgili Konular

  • Device Testing (Cihaz Testi)
  • React Native

Bu makaleyi nasıl buldunuz?

Paylaş

← Önceki

Beta Testing

Sonraki →

Crash Reporting (Crashlytics & Sentry)

İlgili Makaleler

Beta Testing

Mobil uygulama beta test süreci rehberi. TestFlight ve Google Play Testing ile closed/open beta, geri bildirim toplama ve kalite güvence stratejileri.

Crash Reporting (Crashlytics & Sentry)

Uygulama çökme raporlama rehberi. Firebase Crashlytics ve Sentry ile crash-free rate yönetimi, stack trace analizi ve production hata izleme.

A/B Testing (Uygulama Ici)

Mobil uygulama içi A/B testing rehberi. Firebase Remote Config, Statsig ve RevenueCat ile experiment tasarımı ve istatistiksel anlamlılık analizi.

Performance Profiling

Mobil uygulama performans profiling rehberi. Startup time, frame rate, memory ve battery analizi araçları ile optimizasyon teknikleri detayları.

E2E Testing (Uçtan Uca Test)

Mobil uygulama uçtan uca (E2E) test rehberi. Detox, Maestro ve Appium ile test otomasyonu, flaky test çözümleri ve bulut test servisleri.