S.a. Arkadaşlar,
İlk yazısına 1 Nisan'da başladığımız kod basitliği kitabının nihayet sonuna gelmiş bulunuyoruz. Bu kitaba başlamama vesile olan İbrahim Kürce'ye de buradan bir teşekkürü borç bilirim. Şimdi de kitabı bitirmenin heyecanıyla son yazıyı ele alıyoruz. 9.bölüm olan son yazımızda testi ele alacağız. Ayrıca bu yazımız yılın da son yazısı olacak. Şimdi sizi yazıyla baş başa bırakalım.
Programın ileride çalışacağının bir garantisi yoktur. Garanti olan tek şey programın şuan çalıştığıdır. Bir kez çalıştırsanız dahi bir sonraki sefere çalışmayabilir. Bunu etkileyen çevresel faktörler vardır. Bir bilgisayarda çalışsa dahi bir başkasında çalışmayabilir. Bununla birlikte bu belirsizliğin sonu gelmez Bunu aşağıdaki şekilde ifade edebiliriz.
Yazılımın çalışma derecesi, onu ne kadar iyi test ettiğinize bağlıdır.
Ne kadar sıklıkta(yakın zamanlarda) projenizi test ederseniz çalışması o kadar olasıdır. Ne kadar farklı şartlarda yazılımı test ederseniz çalışması yine o derece olasıdır. Tüm bunlarla birlikte yazılımın çalışması ne kadar farklı koşullarda, hangi ortamlarda ne kadar sıklıkla test etmenize bağlıdır.
Test etmediğiniz sürece çalıştığını bilemezsiniz.
Yazılımın tamamen çalışıyor denmesi belirsiz bir şeydir. Yazılımı test ettiğinizde ne istediğinizi iyi bilmelisiniz. Bu yüzden yazılımın amacını iyi saptamalısınız. Bunu açıkça, herkesin anlayacağı şekilde, belirtmekte fayda vardır. Her soru için özel cevap verebilmelisiniz. Örneğin; programı ilk çalıştırdığınızda buradaki butona tıkladığınızda ne ile karşılaşıyorsunuz? Oraya tıkladığımızda merhaba dünya yazısı ile karşılıyoruz gibi bir cevap almalıyız.
Böylece sizin bir sorunuz ve buna verilen bir cevabınız var. Bunu dışında bir cevap alıyorsanız demek ki yazılımınız çalışmıyor. Unit testleri hatırlayalım buradan. Girilen belirli koşullar var ve bu koşullar karşısında beklediğimiz cevaplar var. Eğer girdiğimize karşı aynı çıktıyı üretiyorsa testleri geçiyoruz aksi halde bize hata verecektir.
Ayırca testlerinizi iyi yapmalısınız. Doğru çıktı ürettiğinizde yanlış üretiyor, yanlış ürettiğinizde doğru ürettiğini söylüyorsa burada testleriniz yanlış demektir. Onları düzeltmeniz gerekecektir. Aksi halde sizi yanıltacaktır. Son olarak testlerinizin sonuçlarını gözlemlemelisiniz. Her hangi bir problemle karşılaştığınızda neden bu problemle karşılaştı diye sormanız gerekir. Bunun cevabını özel olarak bilmeniz icap eder.
Testlerin gözden kaçması kolaydır. Biz kodlar yazıyoruz, kaydediyoruz, fakat zamanla onları unutuyoruz. Ne kadar zeki yazılımcılar olursak olalım, kodun çalıştığına dair ne kadar kanıtınız olursa olsun, onu test etmedikçe doğru çalıştığını söylemeniz işe yaramaz.
Yazılımda her hangi bir nokta değiştirirseniz artık o parçanın çalışıp çalışmadığını bilmiyorsunuz demektir. Kod tekrardan test edilmelidir. Bu küçük bir değişiklikse belki bunu yönetmek kolay olabilir, fakat test ettiğiniz parça büyükse değiştirdiğiniz bir parça bir başka yeri o da başka yeri etkilemiş olabilir. O yüzden tüm yazılımı tekrardan test etmeniz gerekir (maliyete bakar mısınız ?) Test yazmayan bir çoğumuzun başına gelmiştir. Bir yeri fix'leyip gönderdiğimizde canlı'da patlaması. Maalesef hala bu işin ciddiyetinin farkında değiliz.
Açıkçası küçük bir değişiklik yaptığınızda tüm programı elle kontrol etmek istemezsiniz. Dolayısıyla modern zamanlarda geliştiriciler yazdıkları her metodun testini de yazmışlardır. Bunun en güzel yanı her değişiklikten sonra testleri otomatik olarak çalıştırabilmektir. Bu testler her değişiklikten sonra yazılımın çalışıp çalışmaması hakkında size doğru bilgiyi vereceklerdir.
İnternet'te bununla ilgili bir çok doküman vardır. Bu çok önemli, okunmaya değer bir alandır. Test yasası neden, ne zaman ve hangi bilgileri test etmemiz gerektiğini bize açıklar.
Böylece kitabımızın sonuna geldik. Bunu başarabildiğim gerçekten çok mutlu oldum. Umarım hepimize faydalı olmuştur.
Testlerin ihmal edilmediği yazılımlar geliştirmek dileğiyle. Hoşça kalın.
Hiç yorum yok:
Yorum Gönder