Yan yana
Test Odaklı GeliştirmevsDavranış Odaklı Geliştirme
TDD ile BDD arasındaki fark nedir?
Güncellendi 2 dk okuma6 fark
Kısaca
TDD'de geliştirici testi geçirecek koddan önce başarısız bir test yazar; BDD ise bunun üzerine kurulup davranışı ekibin okuyabileceği sade senaryolarla anlatır.
Test Odaklı Geliştirme
Test odaklı geliştirme, önce başarısız bir test yazdığınız, sonra onu geçirecek kadar kod yazıp ardından tasarımı temizlediğiniz bir kodlama pratiğidir.
Test Odaklı Geliştirme sayfasını okuDavranış Odaklı Geliştirme
Davranış odaklı geliştirme, geliştiricilerin, test uzmanlarının ve iş tarafının otomatik testlere dönüşen sade dilli örneklerde anlaştığı bir pratiktir.
Davranış Odaklı Geliştirme sayfasını okuTest Odaklı Geliştirme ve Davranış Odaklı Geliştirme karşılaştırması
| Özellik | Test Odaklı Geliştirme | Davranış Odaklı Geliştirme |
|---|---|---|
| Odak | Doğru ve iyi tasarlanmış kod birimleri | Kullanıcıların ve işin beklediği davranış |
| Kim yazar | Geliştiriciler | Geliştiriciler, test uzmanları ve ürün sahipleri birlikte |
| Biçim | Projenin programlama dilinde test kodu | Sade dille Given-When-Then senaryoları |
| Tipik düzey | Birim testleri | Kabul ve özellik düzeyinde testler |
| Başlangıç noktası | Yazılacak sonraki kod parçası için küçük bir başarısız test | İstenen davranışın örnekleri üzerine bir konuşma |
| Ana fayda | Geliştiriciler için daha iyi tasarım ve hızlı geri bildirim | Ekip genelinde gereksinimlerin ortak anlaşılması |
Fark, açıklamalı
Test güdümlü geliştirme (TDD), kırmızı, yeşil, yeniden düzenle (red, green, refactor) denen kısa bir döngüye dayanan bir kodlama pratiğidir: küçük bir başarısız test yaz, onu geçirecek kadar kod yaz, sonra temizle. Davranış güdümlü geliştirme (BDD) TDD'den doğmuştur ve sistemin bir kullanıcının bakış açısından nasıl davranması gerektiğine odaklanır; çoğunlukla Given-When-Then (Verilen-Olduğunda-O zaman) senaryoları olarak yazılır.
Fark, hedef kitlede ve düzeydedir. TDD, kodun tasarımını bir programlama dilinde yazılan birim testleriyle şekillendiren, esasen bir geliştirici aracıdır. BDD ise bir iş birliği pratiğidir: geliştiriciler, test uzmanları ve ürün sahipleri davranışın somut örnekleri üzerinde sade dille anlaşır ve bu senaryolar otomatik kabul testlerine dönüşür.
İkisi birbirine iyi uyar. Bir ekip, bir özelliğin ne yapması gerektiğini tanımlamak için BDD senaryoları yazabilir, sonra bu senaryoları geçirecek parçaları kod düzeyinde kurmak için TDD kullanabilir. Gherkin söz dizimini kullanan BDD araçları, sade dille yazılmış her adımı bir test kodu parçasına bağlar.
Sık yapılan bir yanlış, BDD'nin belirli bir aracı kullanmak ya da testleri describe ve it ile yazmak anlamına geldiği düşüncesidir. BDD'nin özü, kodlama başlamadan önce ortak örnekler üreten konuşmadır; o olmadan Given-When-Then dosyaları yalnızca daha uzun yazılmış testlerdir.
Hangisini kullanmalısınız?
Test Odaklı Geliştirme şu durumlarda doğru seçim:
- Kod düzeyinde sıkı geri bildirim ve daha iyi tasarım istiyorsunuz.
- Gereksinimler, bir kütüphane ya da algoritma gibi teknik.
- Testleri esas olarak geliştiricilerin okuması gerekiyor.
Davranış Odaklı Geliştirme şu durumlarda doğru seçim:
- Geliştirici olmayanların da beklenen davranışı okuyup üzerinde anlaşması gerekiyor.
- Gereksinimler iş ile mühendislik arasında sık yanlış anlaşılıyor.
- Özelliklerin nasıl davranması gerektiğine dair yaşayan bir dokümantasyon istiyorsunuz.
Sık sorulan sorular
BDD, TDD'den daha mı iyi?
Farklı sorunları çözerler. TDD kod tasarımını iyileştirir ve geliştiricilere hızlı geri bildirim verir; BDD ise gereksinimlerin ortak anlaşılmasını iyileştirir. Birçok ekip ikisini de kullanır.
TDD olmadan BDD yapılabilir mi?
Evet. Önce birim testleri yazmadan da davranış senaryoları yazıp otomatikleştirebilirsiniz; yine de ikisini birleştirmek hem özellik hem kod düzeyinde kapsam sağlar.
Given-When-Then ne demek?
Davranışı tarif etmek için bir şablondur: Given başlangıç durumunu kurar, When eylemi tarif eder, Then de beklenen sonucu belirtir.