Doğada Eksik Malzeme, Yazılımda Eksik Test: Hazırlıksız Yakalanmanın Bedeli
Seri 3: Testçinin Zihni – Bölüm 2
Şehir hayatı insanı tembelleştirir. Evde unuttuğunuz bir şeyi bakkaldan alırsınız, arabanız bozulsa çekici çağırırsınız, elektrik gitse birkaç dakika sonra jeneratör devreye girer. Şehir, insanın eksiklerini ve dikkatsizliklerini örten devasa bir güvenlik ağı gibidir.
Ama karavanı bağlayıp ya da çadırı sırtlayıp medeniyetin bittiği yere, kıyıya veya dağın eteğine geçtiğiniz an bu kuralların tamamı değişir.
Doğada unuttuğunuz bir aletin, yanınıza almadığınız bir yedek sigortanın ya da "Nasılsa hava güzel, yağmurluğa gerek yok" dediğiniz bir ihmalin telafisi yoktur. Şehirdeki o minik detay, doğanın ortasında saatlerce soğukta kalmanıza ya da tüm kampı toplayıp dönmenize sebep olur. Çünkü doğa, hazırlıksız yakalananlara karşı son derece kayıtsızdır; bahane dinlemez.
Yazılımda canlı (prod) ortamı da tam olarak böyledir.
Konfor Alanı: Test Ortamının Rehaveti
Yazılım geliştirirken test ortamı bizim şehrimizdir.
Her şey kontrol altındadır; bir servis çökerse konsoldan yeniden başlatırsınız, veritabanı şişerse temizlersiniz, eksik bir konfigürasyon varsa Teams'ten altyapı ekibine iki satır yazıp beş dakikada çözersiniz. Bu steril ortam insana sahte bir konfor verir. İhmal edilen senaryolar, "Bunu zaten kimse böyle kullanmaz" denilerek atlanan sınır durumlar orada canınızı yakmaz.
Fakat kod canlıya çıktığında artık şehirde değilsinizdir.
Milyonlarca kullanıcının aynı anda sisteme yüklendiği, ağ gecikmelerinin tavan yaptığı, beklenmedik veri tiplerinin havada uçuştuğu vahşi doğadasınızdır. İşte o an, test aşamasında "Aman buna gerek yok, vaktimiz dar" diyerek yanınıza almadığınız o tek bir test senaryosu, sistemin en can alıcı yerinde fırtınaya dönüşür.
Eksik testin faturası, test ortamında değil; dönüşü olmayan o açık arazide kesilir.
Çantayı Hazırlamak: Doğru Ekipman mı, Çok Ekipman mı?
Kampa giderken bagajı ağzına kadar doldurmak iyi bir kampçı olduğunuz anlamına gelmez. Gereksiz onlarca eşya taşıyıp asıl kritik olan temiz su filtresini ya da ilk yardım çantasını unuttuysanız, o yük sadece sırtınızı ağrıtır.
Test süreçlerinde de benzer bir yanılgıya çok sık düşüyoruz.
Yüzlerce anlamsız form kontrolü, arayüzde bir pikselin yerini doğrulayan onlarca kırılgan UI testi yazıp sistemin omurgasını oluşturan ödeme akışındaki bir timeout senaryosunu test etmediyseniz, çantanız aslında boştur.
Doğada hayatta kalmayı sağlayan şey eşyanın çokluğu değil, hayati olanın eksiksiz olmasıdır. Bir test mühendisinin zihni de tam bu önceliklendirme refleksiyle çalışmalıdır:
- "Bu sistemin can damarı neresi?"
- "En kötü hava koşulunda (en yüksek yük altında ya da servis kesintisinde) ayakta kalmamızı sağlayacak asıl mekanizma ne?"
Kritik olanı güvenceye almadan teferruatla vakit kaybetmek, fırtına çıkacağını bile bile kamp alanına lüks masa sandalye kurup çadırın kazıklarını sağlam çakmamaya benzer.
Hazırlık Zihinde Başlar
Kampa çıkmadan önce yapılan en kıymetli şey kontrol listesi (checklist) çıkarmak değil; olası aksilikleri zihinde canlandırmaktır.
"Gece rüzgar aniden tersine dönerse ne yaparım?", "Akü biterse buzdolabını nasıl beslerim?", "Yedek aydınlatma nerede duruyor?"
İyi bir doğasever, sorun kapıyı çalmadan önce çözümün refleksini geliştirmiştir.
Yazılım testinde de testçiyi "operatör" olmaktan çıkarıp "mühendis" yapan şey bu zihinsel tatbikattır. Kod daha yazılmadan önce mimariye bakıp "Bu kuyruk servisi yanıt vermezse bu işlem nereye düşecek?", "Kullanıcı tam kart bilgilerini girdiği an bağlantısı koparsa para havada kalır mı?" diye sorabilmek, fırtınayı daha çıkmadan tahmin etmektir.
Bedel
Doğada geçirilen zaman insana tevazuyu ve tedbiri öğretir. Şansa yer olmadığını, her ihmalin bir karşılığı olduğunu yaşayarak anlarsınız.
Canlı ortam da böyledir. Hazırlığınız ne kadarsa, o kadar güvendesinizdir. Testi sadece bitirilmesi gereken rutin bir formalite gibi görenler, prod ortamında ilk sert rüzgar estiğinde çadırı elinde kalanlardır.
Oysa her senaryoyu bir tedbir, her sınır durumu bir emniyet kilidi gibi gören bir ekibin içi, dışarıda fırtına kopsa da rahattır. Çünkü onlar neyle karşılaşacaklarını bilirler ve çantalarını ona göre hazırlamışlardır.
Serinin üçüncü bölümünde, Bir Şeyi İnşa Etmek ile Onu Sınamak: Bozma Korkusunu Aşmak ile devam edeceğiz.