E-Ticaret Sepet ve Ödeme Akışlarında Edge Case Testleri
E-ticaret platformlarında kullanıcı deneyiminin ve finansal güvenliğin en kritik olduğu yerler sepet ve ödeme (checkout) sayfalarıdır. Kullanıcının satın alma kararını verdiği ve paranın el değiştirdiği bu aşamalarda yaşanacak en ufak bir hata, doğrudan ciro kaybına ve müşteri güveninin sarsılmasına yol açar. Bu kritik akışlarda, normal şartlar altında beklenmeyen ancak gerçekleştiğinde sistemi kilitleyebilecek sınır durumları (Edge Case) test etmek hayati önem taşır.
1. Sepet Hesaplama ve Kupon Limitleri
Sepet sayfası, arka planda dinamik fiyatlandırma, vergi oranları, indirim kuponları ve kargo ücretleri gibi birçok matematiksel hesabı aynı anda döndürür.
Sınırda Kupon Kullanımı: Sepet tutarı, indirim kuponunun alt limitinin tam sınırındayken (örneğin 1000 TL limitli kupon için sepetin tam 1000 TL olması veya 999.99 TL olması) sistemin indirim oranını doğru yansıtıp yansıtmadığı doğrulanmalıdır.
Kupon Saniyeleri ve Mükerrer Kullanım: Tek kullanımlık bir kupon kodunun, kullanıcının tarayıcıda açtığı iki farklı sekmeden saniyeler farkıyla aynı anda uygulanmaya çalışılması (Race Condition) durumunda sistemin kuponu sadece bir kez kabul etmesi sağlanmalıdır.
Kademeli Fiyat ve Vergi Yuvarlamaları: Sepetteki birden fazla indirimli ürünün küsuratlı fiyatları (örneğin 100.33 TL ve 50.67 TL) toplandığında, vergi (KDV) hesaplaması ve yuvarlamaların genel toplamı kuruşu kuruşuna doğru çıkarıp çıkarmadığı test edilmelidir.
2. Stok Rezervasyonu ve Sepet Güncellemeleri
Ödeme aşamasına geçen bir kullanıcının sepetindeki ürünlerin anlık stok durumu, siparişin tamamlanabilmesi için doğru yönetilmelidir.
Ödeme Sayfasında Stok Kilitleme (Stock Locking): Kullanıcı ödeme formunu doldururken stokta kalan son ürünün o kullanıcıya ne kadar süreyle rezerve edildiği test edilmelidir. Kullanıcı ödeme yapmadan sayfayı kapattığında stok saniyeler içinde diğer alıcılar için boşa çıkmalıdır.
Eşzamanlı Son Ürün Satışı: Stokta sadece 1 adet kalan ürünü, iki farklı kullanıcının aynı anda sepetine ekleyip aynı saniyede ödeme butonuna basması durumunda sistemin siparişi kime onaylayacağı ve diğer kullanıcıya nasıl bir hata mesajı döneceği kontrol edilmelidir.
Sepetteyken Stoğun Tükenmesi: Kullanıcı ürünü sepetine ekledikten sonra, ödeme yapmadan önce ürünün stoğu tükenirse veya fiyatı güncellenirse; ödeme sayfasında kullanıcının güncel fiyatla karşılaşması ya da "Ürün tükendi" uyarısıyla engellenmesi sağlanmalıdır.
3. Ödeme Entegrasyonu (Payment Gateway) ve API Sınırları
Ödeme geçitleri (PayTR, iyzico, Stripe vb.) ile yapılan entegrasyonlar, dış servis bağımlılığı nedeniyle en çok hata üreten alanlardır.
Ödeme Anında Bağlantı Kopması: Kullanıcı kart bilgilerini girip "Öde" (3D Secure onayı dahil) butonuna bastığı an internetin kesilmesi durumunda, bankadan para çekilip siparişin oluşmaması veya mükerrer ödeme (çift çekim) yapılması gibi kritik finansal hatalar test edilmelidir.
Yetersiz Kart Limiti ve 3D Zaman Aşımı: Kullanıcının kart limiti yetersiz olduğunda veya 3D Secure şifre giriş ekranında süreyi aşarak işlemi yarım bıraktığında, sepetin bozulmadan kalıp kalmadığı ve kullanıcıya doğru hata mesajının iletildiği doğrulanmalıdır.
Kredi Kartı Limit ve Taksit Sınırları: Bankacılık kurallarına göre taksit yapılamayan ürün kategorileri (örneğin altın, kozmetik, gıda vb.) sepete eklendiğinde, ödeme sayfasında taksit seçeneklerinin otomatik olarak devre dışı kalıp kalmadığı test edilmelidir.
4. Kesinti ve Tarayıcı Hareketleri
Kullanıcıların ödeme esnasındaki beklenmedik tarayıcı hareketleri, veri tutarlılığını bozmamalıdır.
Ödeme Esnasında "Geri" Butonuna Basmak: Kullanıcı ödeme onay ekranındayken tarayıcının "Geri" butonuna bastığında, sistemin işlemi iptal edip sepeti koruması ve tekrarlanan isteklerin önüne geçmesi sağlanmalıdır.
Oturum Kapanması (Session Timeout): Ödeme formunu doldururken kullanıcının oturumu zaman aşımına uğrarsa, hassas kart verilerinin formda kalıp kalmadığı ve kullanıcının güvenli bir şekilde login ekranına yönlendirilip yönlendirilmediği test edilmelidir.
Arka Plan Servislerinin Çökmesi: Bankadan ödeme başarıyla çekilmesine rağmen, sitenin sipariş kayıt veritabanı veya fatura servisi o an yanıt vermezse; sistemin bu durumu loglayıp siparişi güvenli bir kuyruk yapısına (Queue) alarak veri kaybını önlemesi doğrulanmalıdır.
Özetle; e-ticaret sitelerinde sepet ve ödeme akışları, en küçük hatanın doğrudan maddi zarara dönüştüğü alanlardır. Edge case senaryolarını bu aşamalarda titizlikle simüle etmek, sistemi olası istisnalara karşı bağışık hale getirir. Hem kullanıcı deneyimini korumak hem de finansal süreçleri güvence altına almak, bu sınır durumların düzenli ve metodolojik olarak test edilmesiyle mümkündür.