Mobil Uygulama Manuel Testlerinde Kritik Noktalar: Kesintiler ve Network Simülasyonu
Mobil uygulamalar, kullanıcı deneyimini (UX) en üst seviyeye çıkarmak için sürekli olarak güncellenir ve geliştirilir. Ancak, uygulamaların gerçek dünyada, geliştirici ortamından uzak ve kaotik kullanıcı senaryolarında nasıl performans gösterdiğini anlamak için manuel testler hayati bir öneme sahiptir. Otomasyon testleri belirli ve doğrusal senaryoları (Happy Path) mükemmel şekilde kapsayabilirken; manuel testler karmaşık kullanıcı etkileşimlerini, anlık cihaz tepkilerini ve beklenmedik kesintileri simüle etmede benzersizdir.
Bu yazıda; mobil uygulama testlerinde gözden kaçırılmaması gereken kesinti (interrupt) testlerini, durum yönetimini (state management) ve zayıf ağ koşullarının simüle edilmesini ele alacağız.
1. Kesintilerin (Interrupts) Test Edilmesi
Mobil cihazlar, masaüstü bilgisayarların aksine sürekli hareket halinde ve dış uyarana açık platformlardır. Kullanıcı uygulamayı deneyimlerken araya giren her türlü dış etken birer "kesinti" (interrupt) olarak adlandırılır. Bir mobil QA mühendisinin bu kesintiler karşısında uygulamanın davranışını (Foreground/Background geçişleri) titizlikle test etmesi gerekir.
Çağrı ve Bildirim Gelmesi Durumu (Incoming Call Interrupt)
Bir kullanıcı uygulamanın içindeyken anlık bir çağrı aldığında, işletim sistemi telefon arayüzünü öne çıkarır ve mevcut uygulamayı arka plana (background) iter. Bu senaryoda test edilmesi gereken noktalar:
Uygulama Durumunun Yönetimi: Çağrı geldiğinde uygulama süreci sorunsuz şekilde askıya alınıyor mu? Örneğin, bir video veya müzik çalar uygulaması oynatmayı otomatik olarak duraklatıyor mu?
Veri ve Süreç Korunması: Kullanıcı çağrıyı sonlandırıp uygulamaya geri döndüğünde (foreground), kaldığı ekranı ve verileri aynen bulabilmeli.
Örnek Senaryo: Kullanıcı bir mesajlaşma uygulamasında uzun bir metin yazarken veya bir form doldururken arama gelirse; arama bittikten sonra uygulamaya döndüğünde yazdığı taslak metnin (draft) silinmemiş olması ve kaldığı yerden devam edebilmesi test edilmelidir.
Düşük Pil ve Pil Tasarruf Modu
Mobil cihazların şarjı belirli bir seviyenin altına düştüğünde, işletim sistemleri donanım kaynaklarını (CPU/GPU) kısıtlar ve arka plan etkinliklerini minimuma indirir.
Kısıtlı Kaynak Altında Performans: Uygulama, cihaz "Düşük Güç Modu"na (Low Power Mode) geçtiğinde donma, kasma veya ani kapanma (crash) yaşıyor mu?
Kritik Verilerin Yerel Depoya (Local Storage) Yazılması: Şarjın tamamen bitmesi ve cihazın ansızın kapanması durumunda, kullanıcının o ana kadar yaptığı işlemlerin kaybolmaması için verilerin yerel diske başarıyla işlenip işlenmediği gözlemlenmelidir.
Mobil platformlarda bu amaca hizmet eden ve test sırasında davranışları incelenmesi gereken temel Yerel Depolama (Local Storage) mimarileri şunlardır:
Key-Value Pair (Basit Veriler): Android'deki
SharedPreferencesveya iOS'tekiUserDefaultsyapısı (Web dünyasındaki LocalStorage'ın tam mobil karşılıklarıdır).İlişkisel ve Büyük Veriler: Cihazın içinde lokal çalışan
SQLite,Room DB(Android) veyaCore Data(iOS) gibi hafif yerel veri tabanları.Hibrit / Cross-Platform (React Native vb.): Cihaz diskine asenkron veri yazmayı sağlayan
AsyncStoragegibi yapılar.
Örnek Senaryo: Yoğun grafik ve işlemci gücü gerektiren bir mobil oyun veya harita uygulamasında, batarya %10'un altına düştüğünde uygulamanın aşırı kare hızı (FPS) düşüşü yaşayıp yaşamadığı, cihaz kapansa dahi lokal depolamadaki son session (oturum) verilerinin korunup korunmadığı test edilmelidir.
Ağ Koşullarının Değişmesi ve Network Simülasyonu
Hareket halindeki bir kullanıcının ağ kalitesi anlık olarak değişebilir. Metrodaki bir kullanıcının 5G'den bir anda 2G/3G seviyesine düşmesi veya tünelde bağlantıyı tamamen kaybetmesi (No Network) sık yaşanan senaryolardır.
Zayıf Ağ Koşulları (Poor Network): Uygulama düşük kaliteli bağlantılarda verileri yüklemeye çalışırken sonsuz bir döngüde (loading spinner) kalıyor mu? Yoksa kullanıcıya anlamlı bir zaman aşımı (Timeout) hatası gösteriyor mu?
Network Throttling ve Araç Kullanımı: Bu senaryoları manuel olarak test etmek için Charles Proxy, Fiddler veya Xcode/Android Studio içinde yer alan Network Link Conditioner gibi araçlar kullanılır. Bu araçlarla ağ hızı yapay olarak 2G/3G seviyelerine sınırlandırılır (throttling) ve uygulamanın veri yenileme hızı ile önbellek (cache) yönetimi incelenir.
2. Durum Yönetimi (State Management & Retention) Bozulmaları
Yukarıda bahsettiğimiz kesintiler ve ağ dalgalanmaları, uygulamaların durum yönetiminde (state) kırılmalara yol açabilir. Uygulamanın, kesinti anındaki "hafızasını" koruma yeteneği doğrudan kullanıcı bağlılığını etkiler.
State Kaybı: Uygulama kesinti sonrasında kullanıcıyı en başa (Splash veya Login ekranına) mı atıyor, yoksa mevcut durumunu koruyor mu?
Veri Tutarlılığı: Ağın kesilip tekrar geldiği senaryolarda, kullanıcının yaptığı istekler (request) sunucuya mükerrer (çift) şekilde mi gidiyor yoksa veri bütünlüğü korunuyor mu?
Örnek Senaryo: Bir e-ticaret uygulamasında kullanıcı sepetine ürün eklerken tam o esnada internet bağlantısı koparsa; bağlantı geri geldiğinde veya uygulama yeniden açıldığında sepet bileşeninin güncel halini koruyup korumadığı ve senkronizasyon hatası verip vermediği titizlikle test edilmelidir.
Test Sürecinin Planlanması
Manuel testlerde bu kritik senaryoları sistematik hale getirmek için güçlü bir test planı oluşturulmalıdır:
Kesinti ve Negatif Senaryo Matrisleri Tanımlama: Her fonksiyon için "burada arama gelirse ne olur?", "internet koparsa ne olur?" gibi negatif ve uç senaryolar (Edge Cases) önceden dökümante edilmelidir.
Gözlemler İçin Metrikler Oluşturma: Test adımları; fonksiyonel doğruluk, performans (FPS/Bellek tüketimi) ve kullanıcı deneyimi (UX) olmak üzere üç farklı boyutta gözlemlenmelidir.
Gerçek Zamanlı Simülasyon: Emülatörler/Simülatörler bir yere kadar yardımcı olsa da, kesinti ve ağ simülasyonu testleri her zaman gerçek cihazlarda (Real Devices) ve gerçek yaşam koşullarına en yakın araçlarla icra edilmelidir.
Mobil uygulamalar için manuel testlerin önemi yadsınamaz. Uygulamanın sadece ideal şartlarda değil; düşük pil, zayıf internet ve anlık çağrılar altındaki dayanıklılığını test etmek, mağaza puanlarını ve kullanıcı memnuniyetini doğrudan artıran en kritik adımdır. Bu nedenle, test süreçlerinizde kesinti ve network simülasyonu senaryolarına geniş yer ayırmak, uygulama kalitenizi bir üst seviyeye taşıyacaktır.