Bir Şeyi İnşa Etmek ile Onu Sınamak: Bozma Korkusunu Aşmak

Paylaş
Bir Şeyi İnşa Etmek ile Onu Sınamak: Bozma Korkusunu Aşmak
Photo by Brett Jordan / Unsplash

Seri 3: Testçinin Zihni – Bölüm 3

İnsan, kendi elleriyle sıfırdan bir şey var ettiğinde ona karşı garip bir duygusal bağ geliştirir.

Çocukken saatlerce uğraşıp kurduğunuz bir LEGO kulesini, ahşaptan yonttuğunuz bir parçayı ya da günlerce satır satır dokuduğunuz karmaşık bir yazılım modülünü düşünün. Ortaya çıkan şey sadece fiziksel bir nesne ya da birkaç yüz satır kod değildir; sizin zamanınız, emeğiniz ve zihninizdir.

Tam da bu yüzden, inşa eden insan o yapıya kıyamaz. Onu korumak, nazik davranmak ve kusursuz olduğuna inanmak ister.

İşte yazılım dünyasındaki en büyük zihinsel çatışma tam olarak bu noktada başlar: Çünkü mühendislik, bir şeyi sadece inşa etmekle bitmez; onun gerçek dünyada ayakta kalıp kalamayacağını anlamak için onu acımasızca sınamayı gerektirir.

İnşa Edenin Körlüğü

Geliştiricinin zihni "oldurmak" üzerine kuruludur. Bir problem vardır; o problemi çözen algoritma tasarlanır, servisler bağlanır ve istenen çıktı elde edilir. İş bittiğinde zihindeki varsayım şudur: "Ben bunu kurallara göre kurdum, dolayısıyla kurallara göre çalışacak."

Bu, bir mimarın tasarladığı köprünün üzerinden sadece izin verilen ağırlıkta, nizami hızla giden araçların geçeceğini varsaymasına benzer.

Oysa gerçek dünya nizami değildir.

İyi bir test mühendisinin zihni ise tam tersine "olmayanı görmek" üzerine programlanmıştır. İnşa edenin o korumacı şefkatinden sıyrılmak zorundadır. Testçinin mesleki olgunluğu, ortaya çıkan ürüne hayran hayran bakmayı bırakıp, "Ben bu yapıyı en hızlı ve en beklenmedik şekilde nereden çökertebilirim?" sorusunu sorabildiği an başlar.

Bozma eylemi bir yıkıcılık değil; gerçeğin peşine düşmektir.

"Bozarsam Emekler Boşa Gider" Çekingenliği

Mesleğe adım atan genç mühendislerde sıkça gördüğüm bir çekingenlik vardır: Sistemi kırmaya, olağan dışı senaryolar denemeye ya da sınırları gerçekten zorlamaya korkarlar. Sanki bulacakları her hata, o kodu yazan arkadaşının emeğine yapılmış bir saygısızlık ya da projeyi sekteye uğratacak bir felaketmiş gibi gelir.

Bu korku, testi mekanik bir "onay mekanizmasına" dönüştürür. Formlara sadece doğru karakterler girilir, butonlara sadece sırasıyla basılır ve mutlu senaryo (happy path) tamamlanınca rapor yeşile boyanır.

Oysa bir şeyi gerçekten sınamak, ona nazik davranmamaktır.

Bir çadırın rüzgara dayanıp dayanmayacağını rüzgarsız bir günde anlayamazsınız. Bir oltanın gücünü kıyıya takılmadan çekilen boş bir kurşunla ölçemezsiniz. Bir sistemin ne kadar sağlam olduğunu da sadece kurallara uygun davrandığınızda değil; sistemi en olmadık yerinden çekiştirdiğinizde, hafızasını doldurduğunuzda, bağlantısını aniden kestiğinizde görürsünüz.

Bozmak, Aslında Yeniden ve Daha Güçlü Kurmaktır

Japonların meşhur bir sanatı vardır: Kintsugi. Kırılan seramikleri altın tozuyla karıştırılmış özel bir reçineyle tamir ederler. Amaç kırığı gizlemek değil; tam aksine, o kırığın ve onarımın hikayesini görünür kılarak nesneyi eskisinden çok daha değerli ve dayanıklı hale getirmektir.

Yazılım testinde "bozmak" tam olarak bu Kintsugi felsefesine benzer.

Biz bir sistemi kırdığımızda, geliştiricinin emeğini çöpe atmayız. Tam aksine; o sistemin kırılgan, zayıf ve saklı kalmış bir çatlağını gün yüzüne çıkarırız ki, o çatlak canlı ortamda, binlerce kullanıcının önünde bir felakete yol açmasın. Laboratuvarda bozulan her parça, mimariyi prod ortamının sert rüzgarlarına karşı biraz daha çelikleştirir.

İnşa eden ile sınayan kişi birbirinin düşmanı değil, aynı eseri kusursuzlaştırmaya çalışan iki farklı gözdür. Biri yapının kolonlarını diker, diğeri o kolonların depreme dayanıp dayanamayacağını test eder.

Zihinsel Eşik

Korkarak test yapılmaz. Bozma korkusu, bir test mühendisinin elindeki en büyük kozu —yani merakı ve şüpheyi— elinden alır.

Gerçek kalite; kırılmaktan korkmayan, sınırlarıyla yüzleşebilen ve aldığı her darbeden sonra daha sağlam ayağa kalkan sistemlerde filizlenir. Masadaki yapı ne kadar zarif, ne kadar emek verilmiş olursa olsun; bir testçinin o yapıya gösterebileceği en büyük saygı, onu yıkılmayacağından emin olana kadar en sert sınavlara tabi tutmaktır.

Böylece Seri 3: Testçinin Zihni serisini de tamamladık.

Sırada güncel tartışmaların tam göbeğinde duran, yapay zekânın yazılım kalitesindeki sınırlarını ve gerçekliğini ele alacağımız Seri 4: Yapay Zekâ Çağında Kalite: Hype ve Gerçekler var.

Devamını oku

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

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

Savaş Avcu tarafından
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