Page 181 - Yazılım Teknolojileri Araştırma Bülteni 2023
P. 181
Yazılım Testleri ve Test Odaklı Geliştirme Yaklaşımının Kullanımı | 181
Waterfall modeli yönetim sürecinde ilk önce program için gerekli tasarım oluşturulur. Sonra bu
tasarım uygulanır. Son aşama olarak sistem hatalarını bulabilmek için testler yapılır. TDD bu süreci
tam tersine çevirmektedir. Şekil 5’te TDD aşamalarına yer verilmiştir.
Test Ekle Kodla Yeniden Yapılandır
Şekil 5. TDD Aşamaları
TDD’nin temelinde yatan ise kodu yazmaya başlamadan önce ona ait bir test yazmak ve daha
sonra bu testi karşılayacak kadar yeterli kodu yazmaktır. Bu yöntemdeki ilk adım kodun başarısız
olmasına yetecek kadar kısa bir test yazmaktır. Daha sonra bu testleri koşturarak başarısız
olduğundan emin olduktan sonra, ikinci adım kodu güncelleyerek bu testin geçmesini sağlamaktır.
Testleri tekrar koştuktan sonra eğer kodumuz halen başarısız ise kodu güncelleyip yeniden test
etmek gerekir. Kod gözden geçirilir dizayn ve gereksinimlere uymayan kısımları düzeltilir.
1. Uygulama Yöntemi
TDD geleneksel yazılım tarzını tamamen tersine çevirir ve yazılıma testler ile başlanır. Kent Beck’in
tanımladığı gibi herhangi bir satır program kodu oluşturmadan önce bir test sınıfı oluşturularak
yazılım işlemine başlanmaktadır. Bu süreci daha iyi anlayabilmek için kırmızı döngü (red cycle),
yeşil döngü (green cycle) ve yeniden yapılandırma (refactoring) kavramları anlaşılmalıdır.
Kırmızı döngü (red cycle) yani hatalı sonuç döndüren test kavramı; bu aşamada yazılım
geliştirici kendisine verilmiş gereksinimlerden sıradaki gereksinime ait birim testi yazar. Yazılan
test, daha öncesinden yazılmış olan tüm birim testler ile çalıştırılır. En son yazılan birim teste ait
uygulama (implementasyon) henüz gerçekleşmediği için ilgili test başarısız sonuçlanır.
Yeşil döngü (green cycle) yani başarılı sonuç döndüren test kavramı; yazılım geliştirici
gereksinimi karşılayacak yazılımın uygulamasını en az kodla yapar. Yazılan kodun sadece şimdiye
kadar birim testi yazılmış gereksinimleri karşılaması beklenir. Gelecekte yazılımı yapılacak
durumların kodlaması önceden yazılmaz ve düşünülmez. Uygulaması tamamlandıktan sonra
yazılımın gereksinimi karşılayıp karşılamadığını kontrol etmek için tüm birim testler çalıştırılır.
Beklenen durum tüm birim testlerin başarıyla geçmesidir. Bu testler başarıyla çalıştığı takdirde
yazılım geliştirici bir sonraki aşamaya geçebilir. Aksi takdirde gereksinim ile yazılım arasında
uyumsuzluk olduğunu gösterir.
Yeniden yapılandırma (refactor) yani tasarımı iyileştir kavramı; yazılım geliştirici bu aşamada
testlerinde değişiklik yapmadan kodunu yeniden gözden geçirerek tasarımını iyileştirmeye çalışır.
Bu kapsamda yazılım geliştirici kullandığı metod, değişken ve sınıf isimlerini düzenleyebilir. Var
olan kod tekrarlarını giderir ve kodunu daha test edilebilir hala getirir. Böylece kodun bağımlılığını
azaltırken amaca yönelik metod ve sınıfların ortaya çıkmasını sağlar. Bu aşamada dikkat edilmesi