Bir Şeyi İnşa Etmek ile Onu Sınamak: Bozma Korkusunu Aşmak
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.