.NET Cüzdan Kitinde 162 Test 3 Gerçek Hatayı Buldu
Bir.NET cüzdan kiti yazarken başlangıçta stress-test endpoint'i vardı: 50 thread, 100 dolarlık hesaptan 10 dolar çekmeye çalışıyor, sonuç "passed": true. Sorun şu: bu test sadece kontrol ettiği senaryoda dürüst davranıyordu. Gerçek dünyadaki karmaşıklığın çoğunu hiç görmüyordu.
Bu yüzden tam bir entegrasyon test paketi yazıldı ve bir kural kondu: önce test yaz, CI'de başarısız olduğunu gör, sonra kodu düzelt. Bugün 162 test var ve bunlar demo'nun hiçbir zaman bulamayacağı 3 gerçek hatayı ortaya çıkardı.
Test kurulumu basit ama etkili: her test kendi PostgreSQL 16 veritabanını alıyor. Bellek sağlayıcı yok, mock yok. İstekler idempotency filtresi de dahil olmak üzere gerçek HTTP pipeline'ından geçiyor. Bağlantı havuzu kapalı, bu da eşzamanlı isteklerin ayrı bağlantı kullanmasını garantiliyor. Race condition'ları ortak bir bariyerin arkasında başlatıyoruz, böylece istekler tam aynı anda çalışmaya zorlanıyor.
Bir Audit yardımcısı her senaryonun ardından tüm işlemleri kontrol ediyor: iki giriş, farklı cüzdanlar, sıfır toplamı, tek para birimi. Eğer bir şey tutarsızsa test başarısız oluyor. Bunun gibi gerçekçi testler, sahte ortamlar kadar kolay görünen ama gerçekte tehlikeli olan ısmarlama durumları yakaladı. Mesela, eşzamanlı para transferlerinde bakiye güncelleme sırası, idempotent isteklerin yeniden işlenmesi ve işlem izolasyonunda ince sorunlar.
Praktik tarafı şu: entegrasyon testleri yazarken gerçek altyapı kullan ve testleri kodu yazmadan önce yaz. Unit test'ler hızlı ve güvenli hissettiriyor, ama eşzamanlılık ve veri tutarlılığı hatalarını genelde kaçırıyor. Gerçek veritabanı, gerçek ağ ve gerçek zaman bu hataları ortaya çıkartır.
0 yorum