Test Odaklı Geliştirme Nedir?
Standart kodlama süreci şuna benzer:
Talep doğrultusunda bir koda çatapat girer kodu yazar ve run ederiz, eğer görünürde her şey iyi gözüküyor ve kabul ediliyorsa yolumuza devam ederiz.
Oysa bir TDD iş akışı şöyle görünür:
Test odaklı geliştirme , üç aktivitenin karıştırıldığı bir programlama stilini ifade eder: kodlama , test etme ve tasarım . Kodun ne yapacağını tanımlamak ve doğrulamak için test senaryolarının geliştirildiği bir yaklaşımdır. Yani önce testler yazmamız, ardından üretim kodunu yazmamız gerekiyor. Geliştiricilerin işlevsellik yazmadan önce test senaryolarını kullanması fikrine dayanır.
TDD’de testleri birim testleri olarak adlandırıyoruz. Birim testi, “birimlerin” (bireysel yazılım bileşenleri) test edildiği bir yazılım test yöntemidir . Programcılar, kodun doğru çalıştığından emin olmak için birim testleri yazarlar. Ayrıca, birim testleri yazmak, kodun kendisini daha sağlam ve bakımı daha kolay hale getirmeye de yardımcı olur.
Test Odaklı Geliştirmenin Faydaları
Artık TDD ile tanıştığımıza göre, kodumuzda neden TDD’yi uygulamamız gerektiğini merak edebiliriz. Güçlü yanlarını ve en iyi nerede kullanıldığını anlamak için sunduğu temel faydaları gözden geçirelim.
1. Yüksek düzeyde kullanılabilir yazılım geliştirmek
Önce test yaklaşımı sayesinde, geliştiricilere, kullanıcıların karşılaşabileceği kullanılabilirlik zorluklarını daha dikkatli düşünme fırsatı verilir.
2. Hataları azaltın
Bu, TDD’yi uygulamanın yadsınamaz bir faydasıdır. Testler, geliştirmenin her aşamasında kodun açık kalmasını sağlar. Ayrıca testler, geliştiricilerin sorunları hemen tespit etmesine ve ardından hızla düzeltmesine yardımcı olur. Hata bulmak için daha az kaynak harcanarak ekipler bir projenin sonraki aşamasına geçebilir
3. Kod tekrarından kaçının
Kod, yeniden düzenleme yoluyla sürekli olarak temizlenir ve yeni kodun eklenmesi için yer açılır. Ayrıca bu , programınızın temiz kod özelliğini de geliştirir . Yeniden kullanılabilir kod herkes için bir kazançtır: Temiz, verimli ve tutarlıdır.
4. Kodu basitleştirin
TDD, kodun basitleştirilmesini teşvik eder. Fazla Kodu sınırlayabilir ve kodun kullanımını kolay tutmaya yardımcı olur.
5. Kodun kalitesini kontrol edin
Testler, kod için kalite metrikleri oluşturur. Geliştirici ekibi, kodun ne kadar iyi olduğunu etkili bir şekilde belirlemek için TDD’yi kullanabilir. Ayrıca, birim testi kod kapsamını iyileştirir. Bu, birim testleri yazarak, bir projenin veya işlevin toplam kapsama yüzdesini kontrol edip belirleyebileceğimiz anlamına gelir.
Yukarıdaki tüm noktalara rağmen, kod karmaşıklığını azaltmak, performansı ölçmek, vb. gibi TDD’nin sunabileceği birçok avantaj vardır .
Test Odaklı Geliştirme Nasıl Gerçekleştirilir?
Artık TDD’nin ne olduğunu ve faydalarını öğrendiğinize göre, TDD testinin nasıl yapılacağına ilişkin adımları görelim. guru99’a göre, TDD’nin nasıl gerçekleştirileceğine ilişkin adımlar şunlardır:
- Bir test ekle. (Birimlerini ve fonksiyonlarını oluştur.)
- Testlerini çalıştır ve başarısız olup olmadıklarını gözlemle.
- Biraz kod yaz.
- Test ve Refactor Code
- Tekrarla
Kırmızı -Yeşil-Refactor
Bunun dışında, TDD’deki kırmızı-yeşil-refactor döngüsüne de aşina olabilirsiniz . Sorumluluk reddi için, trafik ışıklarından bahsetmiyoruz. Şimdi şu grafiğe bir göz atın:
Şimdi, kırmızı-yeşil-refactor nedir?
- Kırmızı → Burada neyi geliştirmek istediğinizi düşünün . Genellikle testleri oluşturur, çalıştırırız ve henüz kodu uygulamadığımız için başarısız olurlar.
- Yeşil → Bu aşama, testinizi geçmek için kodu uyguladığınız yerdir. Amaç, uygulamanızı optimize etme konusunda endişelenmeden bir çözüm bulmaktır.
- Refactor → Refactor aşamasında, hala “yeşildesiniz”. Ancak, kodunuz hala dağınık olabilir. Burada, kodunuzu nasıl düzgün veya verimli bir şekilde uygulayacağınızı düşünmeye başlayabilirsiniz.
Son sözler
Sonuç olarak, TDD’yi uygulamak, yazılım geliştirmede birçok fayda sağlar. Hataları, hataları azaltır ve kod oluştururken kesinlikle zaman kazandıracaktır. Ayrıca, TDD’yi kullanmak, daha fazla iyileştirme için kodunuzu büyütmenize de yardımcı olabilir.
Kaynak : https://medium.com/@jeromezebua/software-methodology-test-driven-development-359009dcc47c