Page 180 - Yazılım Teknolojileri Araştırma Bülteni 2023
P. 180
180 | Yazılım Testleri ve Test Odaklı Geliştirme Yaklaşımının Kullanımı
• TDD’yi uygulamak için teknik bilgiye sahip olmamız gerekir. BDD ve ATDD ise herhangi bir
teknik bilgi gerektirmez. BDD ve ATDD’nin faydası, bu özelliği geliştirmeye hem teknik hem
de teknik olmayan kişilerin katılabilmesidir.
• TDD geliştiğinden, iyi tasarım için alan sağlar ve gereksinim karşılama yönüne odaklanır.
BDD ve ATDD ise kullanıma uygun olan farklı bir yönüne odaklanır.
Bundan sonraki bölümde TDD detaylı olarak açıklanmış ve uygulama yöntemine yer verilmiştir.
Test Driven Development Yaklaşımı
TDD, Kent Beck tarafından XP’nin bir parçası olarak bulunmuş olan bir programlama tekniğidir.
Tarih açısından bakıldığında 1994’te Kent Beck, Smalltalk için SUnit test çerçevesini (framework)
yazmıştır. 1998 yılında XP’de “testlerin çoğunu ilk sırada yazmalıyız” diye ifade ettiği Önce Test
(Test First) kavramını ortaya atmıştır. 2002 Kasım’ında piyasaya çıkan “Test Driven Development:
By Example” isimli kitabında Önce Test (Test First) kavramını Test Driven Development olarak
daha da detaylı bir teknik olarak ele almıştır.
Kent Beck “Test Driven Development: By Example” isimli kitabında test odaklı geliştirmeyi şu
şekilde tanımlamaktadır:
“Test odaklı geliştirme, herhangi bir yazılım mühendisinin takip edebileceği, basit tasarımı ve
güven veren test paketlerini teşvik eden bir dizi tekniktir. ”
Kent Beck aynı kitapta TDD için şu iki kuralı tanımlamaktadır:
1. Herhangi bir kod yazmadan önce çalışmayan bir test yazın.
2. Tekrarlanmış kodu kaldırın.
Michael Feathers “Working Effectively with Legacy Code” adlı 2005 yılında yayınlanan kitabında,
testin gerekliliğinden şöyle bahsetmiştir:
“Testi olmayan kod, kötü koddur. Ne kadar iyi yazılmış olduğu önemli değil; ne kadar güzel veya
nesne yönelimli veya iyi kapsülleme yapılmış olduğu da önemli değil. Testlerle, kodumuzun
davranışını hızlı ve doğrulanabilir bir şekilde değiştirebiliriz. Onlar olmadan, gerçekten kodumuzun
daha iyi mi yoksa daha kötü mü hale geldiğini bilmiyoruz.”
TDD geliştirme süreci, çevik (agile) süreçler ile geliştirme sürecine dahil olmuştur. Daha önce
şelale (waterfall) modeli yönetim sürecindeki aşamalar Şekil 4’te sunulmuştur.
Tasarım Oluştur Kodla Test Et
Şekil 4. Şelale (Waterfall) Modeli Aşamaları