Doğada Eksik Malzeme, Yazılımda Eksik Test: Hazırlıksız Yakalanmanın Bedeli

Paylaş
Doğada Eksik Malzeme, Yazılımda Eksik Test: Hazırlıksız Yakalanmanın Bedeli
Photo by Tanja Tepavac / Unsplash

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.

Devamını oku

Balıkta Beklemek ile Bug Aramak Arasındaki O İnce Çizgi: Sabır

Balıkta Beklemek ile Bug Aramak Arasındaki O İnce Çizgi: Sabır

Seri 3: Testçinin Zihni – Bölüm 1 Sabahın çok erken saatlerinde, henüz gün ağarmadan bir kıyıda ya da kayalıkların üstünde durduysanız bilirsiniz; deniz size hemen cevap vermez. Takımı hazırlarsınız, sahteyi iğneye takarsınız, mesafeyi ayarlayıp atışı yaparsınız. Sonra sararsınız. Bir kez daha, bir kez daha... Dakikalar geçer, rüzgâr yön değiştirir, suyun akıntısı

Savaş Avcu tarafından
Prod’a Çıkış Gecesi Yaşananlar: En Kusursuz Plan Neden Patlar?

Prod’a Çıkış Gecesi Yaşananlar: En Kusursuz Plan Neden Patlar?

Seri 2: Sahadan Hatalar – Bölüm 3 Saat gece yarısını geçmiş. Teams kanalında veya toplantı odasında gergin ama aynı zamanda işi bitirmiş olmanın getirdiği yorgun bir rahatlama var. Tüm feature branch’ler birleştirilmiş, staging ortamında regression testleri başarıyla tamamlanmış, checklist’teki maddelerin yanına tek tek yeşil tikler atılmış. "Deployment Plan&

Savaş Avcu tarafından
Test Verisi Çöplüğü: Bir Ekip Kendi Yarattığı Veride Nasıl Boğulur?

Test Verisi Çöplüğü: Bir Ekip Kendi Yarattığı Veride Nasıl Boğulur?

Seri 2: Sahadan Hatalar – Bölüm 2 Yazılım geliştirme süreçlerinde çoğu zaman kodun kendisine, mimariye veya pipeline konfigürasyonlarına odaklanılır. Ancak bir test mühendisinin günlük mesaisini en çok tüketen, sabrını en çok sınayan gizli bir canavar vardır: Test verisi. Bir gün test ortamında koştuğumuz kritik bir ödeme akışının sürekli patladığını gördük. Kod

Savaş Avcu tarafından