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

Paylaş
Balıkta Beklemek ile Bug Aramak Arasındaki O İnce Çizgi: Sabır
Photo by Alan Emery / Unsplash

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ı sertleşir. Dışarıdan bakan biri için yapılan iş son derece tekdüze ve sıkıcı görünebilir: Saatlerce aynı hareketi tekrarlayan, suya bir parça silikon fırlatıp geri çeken bir adam.

Oysa suyun başında bekleyen insanın zihni asla tekdüze değildir. Parmak uçlarınız misinadaki en ufak bir titreşimi, kurşunun dibe vurduğu anı, yosuna takılma hissiyle bir balığın dokunuşu arasındaki o mikro farkı okumaya çalışır.

Yazılım testinde de durum bundan farksızdır.

Yüzeyin Sakinliği, Derinin Akıntısı

Bir ekranda her şey yolunda görünebilir. Butonlar yerindedir, formlar post ediliyordur, sayfalar hızlı yükleniyordur. Dışarıdan bakan bir göz için ortada test edilecek pek bir şey kalmamış gibidir.

Ama tecrübeli bir testçinin zihni yüzeyle yetinmez.

O, sistemin görünmeyen derinliklerindeki akıntıyı kollar:

  • Bu işlem tam veritabanının yavaşladığı bir anda tetiklenirse ne olur?
  • Ağ bağlantısı bir saniyeliğine kopup geri geldiğinde o session ayakta kalır mı?
  • Kullanıcı işlemi tamamlamadan tarayıcıyı kapatırsa arkadaki kuyrukta ne birikir?

Tıpkı denizin dibindeki ilişkileri tahmin etmeye çalışan bir balıkçı gibi, test mühendisi de kodun arkasında sessizce dönen çarkların yarattığı dip akıntılarını hissetmeye çalışır. Yüzeydeki sükunet, derindeki fırtınanın olmadığını göstermez.

Sabır: Beklemek Değil, Dikkatle İzlemektir

İnsanlar sabrı genelde pasif bir eylem sanır; oturup zamanın geçmesini beklemek gibi.

Oysa sahada sabır son derece aktif, tetikte bir zihin durumudur.

Kıyı balıkçılığında rastgele at-çek yaparak günün sonunda bir şey yakalayamazsınız. Suya baktığınızda dibin yapısını, suyun ısısını, yemin yüzüş açısını sürekli hesaplarsınız. Vuruş alamadığınız her atış, aslında bir sonraki atış için elinizdeki veriyi günceller: "Burada dip taşlık değil, akıntı sağa çekiyor, yemi biraz daha derine indirmeliyim."

Yazılımda bir edge-case ararken de aynı sabır devrededir. Karmaşık bir entegrasyonu sınarken ilk beş denemenizde sistem beklendiği gibi çalışabilir. Kolay yoldan "Tamam, çalışıyor" deyip geçmek sabırsızlığın en büyük tuzağıdır.

İyi bir testçi orada durmaz; parametreleri azar azar değiştirir, zamanlamaları kaydırır, asenkron süreçlerin arasına girer. Her başarısız deneme, hatanın saklandığı alanı biraz daha daraltan bir gözleme dönüşür. O açık bir gün ortaya çıkacaksa, şans eseri değil; sabırla örülmüş bu sistematik arayışın sonunda yakalanır.

O Tek An: Vuruşu Kaçırmamak

Saatlerce süren sakinliğin ardından o an gelir. Misinada çok hafif, neredeyse fark edilmeyecek bir boşalma ya da sert bir kafa atışı hissedersiniz. O saniyenin onda birinde doğru tasmalamayı yapmazsanız, balık iğneden kurtulur ve derinliğe geri döner.

Test yaparken de öyledir.

Konsol loglarında bir anlığına beliren ve sayfayı yenileyince kaybolan bir uyarı... Yüz işlemden sadece birinde saniyelik bir gecikmeyle dönen 500 hatası...

Dikkati dağınık ya da sabırsız bir göz onu görmezden gelir, "Anlık bir ağ glitch’idir" der ve geçer. Ama avının peşindeki zihin o anı yakalar. Ekran görüntüsünü alır, o ana ait network trafiğini kilitler ve sorunun peşine düşer. Çünkü bilir ki prod ortamında sistemi çökertecek olan şey, her gün görünen bariz hatalar değil; işte o saatlerce saklanıp bir anlığına kafasını uzatan anomalilerdir.

Sahilden Masaya Kalan

Günün sonunda oltayı toplayıp eve dönerken çantanızın dolu olup olmaması bazen önemli değildir. Önemli olan, o birkaç saat boyunca zihninizi ne kadar berrak, dikkatinizi ne kadar diri tutabildiğinizdir.

Mühendislik dünyası sürekli bir hız, acelecilik ve "hemen canlıya çıkalım" baskısıyla dolup taşıyor. Herkesin koştuğu bir yerde durup bakabilmek, bekleyebilmek ve ayrıntının hakkını verebilmek giderek kaybolan bir erdeme dönüşüyor.

İster kıyıda bir kayanın üstünde elinizde olta olsun, ister gece yarısı karmaşık bir mikroservis mimarisinin başında ekrana bakın; gerçeği yakalayan şey telaş değil, sabrın arkasına saklanmış o sakin ve ısrarcı dikkat oluyor.

Serinin ikinci bölümünde, doğa ile yazılım arasındaki bir diğer sert kesişmeye geçeceğiz: Doğada Eksik Malzeme, Yazılımda Eksik Test: Hazırlıksız Yakalanmanın Bedeli.

Devamını oku

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