Güven İyidir Ama Kontrol Daha Iyidir

Güven iyidir, ama kontrol daha iyidir der almanlar.

Ben yapay zekanin yazdigi koda bakmiyorum, dogru yaptigina güveniyorum. Lakin kontrolü de elden birakmiyorum, ama bunu kodu okuyarak yapmiyorum. Kod okuyarak zaten hatalarin cok kücük bir kismi bulunabilir.

Ben yazilan kodu dolayli olarak kontrol ediyorum. Burada her uygulama özelligi icin onay / kabul kriterleri tanimliyorum. Daha sonra bu kriteleri yansitan given/when/then lerden olusan bir test spec yaziyorum. Akabinde yapay zekaya bunu test koduna cevirmesini söylüyorum. Cikan test kodu uygulamayi bir kara kutu gibi test ediyor ve dolayli olarak kullanilan her kod parcasi test edilmis oluyor.

Bunun sagladigi bir diger avantaj artik kirilgan test kodlari ile ugrasmiyor olmam. Söyle bir örnek vereyim:

@given:
Müsteri login sayfasinda

@When:
Ismini girdiginde

@And:
Sifresini girmediginde

@Then:
Lütfen sifrenizi giriniz hata mesaji gösterilir

Bu bir test spec. Buradan test kodunu yazip, uygulamayi blackbox olarak test etmek yapay zekanin görevi. Ben cok yüksek bir seviyede bir uygulama davranisindan beklentilerimi belirliyorum. Eger uygulama bu davranisi benim beklentilerim dogrultusunda saglayabiliyorsa, ona “aferin, yazdigin, kod calisiyor” diyorum. Testler calismiyorsa, “git suna bir bak” diyorum.

Yazilimci olarak benim artik isim:

– Kod yazmak degil,
– Onay / kabul kriteleri tanimlama,
– Bunlari ihtiva eden specleri yazmak,
– Test sonuclarina bakip, kodun islevselligini degerlendirmek

Gerisi yapay zekanin isi.

Not: %95 oraninda aferini hak ediyor :)