Ana içeriğe geç

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ı oku

Davranış 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ı oku

Test Odaklı Geliştirme ve Davranış Odaklı Geliştirme karşılaştırması

ÖzellikTest Odaklı GeliştirmeDavranış Odaklı Geliştirme
OdakDoğru ve iyi tasarlanmış kod birimleriKullanıcıların ve işin beklediği davranış
Kim yazarGeliştiricilerGeliştiriciler, test uzmanları ve ürün sahipleri birlikte
BiçimProjenin programlama dilinde test koduSade dille Given-When-Then senaryoları
Tipik düzeyBirim testleriKabul 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 faydaGeliştiriciler için daha iyi tasarım ve hızlı geri bildirimEkip 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.

Daha fazla

Ayarlar