Erişilebilirlik Testi Neden Önemli?
Dünya nüfusunun yaklaşık %15'i bir tür engele sahip. Mobil uygulamanız bu kullanıcılar tarafından kullanılamıyorsa hem potansiyel kullanıcı kitlenizi daraltıyorsunuz hem de bazı pazarlarda yasal yükümlülükleri karşılamıyorsunuz demektir.
2026 itibarıyla Apple ve Google, erişilebilirlik konusunda daha sıkı standartlar bekliyor. App Store review'larında a11y sorunları rejection sebebi olabiliyor. ABD'de ADA kapsamında mobil uygulamalara dava açılan vakalar da artış gösteriyor.
VoiceOver ile Manuel Test (iOS)
VoiceOver, iOS'un yerleşik screen reader'ıdır. Ayarlar > Erişilebilirlik > VoiceOver yolundan aktif edilir.
Test sırasında dikkat edilecekler:
- Her UI elementinin anlamlı bir accessibility label'ı var mı?
- Butonlar "buton" değil, "Profil ayarlarını aç" gibi açıklayıcı label'lara sahip mi?
- Görsellerin accessibilityLabel'ı tanımlı mı (dekoratif olanlar isAccessibilityElement=false)?
- Swipe ile gezinme sırası mantıklı mı (soldan sağa, yukarıdan aşağıya)?
- Modal ve bottom sheet'ler açıldığında focus doğru yere gidiyor mu?
- Custom gesture'lar için alternatif erişim yolu var mı?
Accessibility Shortcut (Home tuşuna üç kez basma) ile VoiceOver'ı hızlıca açıp kapatabilirsiniz.
TalkBack ile Manuel Test (Android)
TalkBack, Android'in screen reader'ıdır. Ayarlar > Erişilebilirlik > TalkBack yolundan etkinleştirilir.
Kontrol noktaları:
- contentDescription tüm interaktif ve anlamlı görsellerde tanımlı mı?
- importantForAccessibility="no" dekoratif elementlerde ayarlanmış mı?
- Tab sırası (traversal order) mantıklı mı?
- RecyclerView'da item pozisyon bilgisi okunuyor mu?
- EditText alanlarında hint ve label doğru okunuyor mu?
Otomatik Tarama Araçları
Manuel test vazgeçilmezdir ama otomatik araçlar yaygın sorunları hızlıca yakalar.
| Araç | Platform | Özellik |
|---|---|---|
| Accessibility Inspector | iOS (Xcode) | Canlı element inceleme, audit |
| Layout Inspector | Android Studio | a11y uyarıları, touch target |
| axe DevTools | React Native / Web | Otomatik a11y kuralları |
| Accessibility Scanner | Android | Google'ın resmi tarama uygulaması |
| Deque axe | Cross-platform | CI entegrasyonu, raporlama |
| jest-axe | React Native | Jest testlerinde a11y assertion |
Xcode Accessibility Inspector ile cihaz veya simülatör üzerinde canlı inspect yapabilir, Audit sekmesiyle tüm ekranı tarayabilirsiniz. Android Studio Layout Inspector ise a11y uyarılarını sarı/kırmızı ikonlarla gösterir.
Renk Kontrast Testi
WCAG 2.1 AA standardına göre minimum kontrast oranları:
- Normal metin: 4.5:1
- Büyük metin (18pt+ veya 14pt+ bold): 3:1
- UI bileşenleri ve grafikler: 3:1
Kontrol araçları: Colour Contrast Analyser (masaüstü), WebAIM Contrast Checker (online), Xcode Accessibility Inspector. Sıkça yapılan hata: açık gri metin (#999) beyaz arka plan üzerinde kullanmak (2.85:1 oranı, AA'yı karşılamaz).
Dynamic Type ve Font Scaling
Kullanıcılar sistem ayarlarından yazı boyutunu değiştirebilir. Uygulamanız bu ayarlara uyum sağlamalıdır.
iOS: UIFont.preferredFont(forTextStyle:) kullanın, adjustsFontForContentSizeCategory = true ayarlayın.
Android: sp birimini kullanın (dp değil). Ayarlardan yazı boyutunu en büyüğe getirip test edin.
React Native: allowFontScaling prop'u varsayılan true'dur. maxFontSizeMultiplier ile aşırı büyümeyi sınırlayabilirsiniz.
Touch Target Boyut Kontrolü
- Apple HIG: minimum 44x44 pt
- Material Design: minimum 48x48 dp
- WCAG 2.5.8 (AAA): minimum 44x44 CSS px
Küçük ikonlarda hitSlop (React Native) veya padding ile dokunma alanını genişletin.
WCAG 2.1 AA Uyum Checklist'i
- Tüm görsellerin metin alternatifi var
- Renk kontrast oranları minimum 4.5:1
- Klavye/switch erişimi ile tüm fonksiyonlara erişilebilir
- Focus sırası mantıklı ve tutarlı
- Hata mesajları screen reader tarafından okunuyor
- Hareket/animasyon azaltma tercihi destekleniyor (Reduce Motion)
- Form alanlarında label programatik olarak ilişkilendirilmiş
- Touch target minimum 44x44 pt/dp
CI/CD'de a11y Test Otomasyonu
Erişilebilirlik testlerini CI pipeline'ına ekleyerek her PR'da otomatik kontrol yapabilirsiniz:
- Detox: E2E testlerde a11y kontrolleri
- jest-axe: Unit/integration seviyesinde a11y assertion
- Espresso Accessibility Checks: Android'de AccessibilityChecks.enable()
- XCTest: iOS'ta accessibility audit API'leri (Xcode 15+)
Erişilebilirlik bir son adım değil, geliştirme sürecinin doğal bir parçası olmalıdır. Tasarım aşamasında a11y'yi göz önünde bulundurmak, sonradan düzeltme maliyetini büyük ölçüde azaltır.