Haklısın. BDD, dil belirsizliğiyle ilgili sorunları hiç ortadan kaldırmaz - hiç değil. Diğerlerinin de belirttiği gibi, çevrilen snippet'lerin uygun şekilde tanımlanmasıyla eşleştirilmesi gerekir, ancak bu aynı zamanda altta yatan belirsizlik sorununu da ele almaz.
Şimdi BDD bu sorunu çözmemesine rağmen neden değerli? Bazı nedenler var ve bu liste kesinlikle tam değil.
Belirsizlik çözülmedi
Bu ne BDD lehine ne de ona karşı bir sebep değildir. Ancak bunu kullanıcı öyküleri veya gereksinimleri gibi diğer yaklaşımlarla karşılaştırdığınızda, tüm SW geliştirme yaklaşımları, doğal bir dil formülasyonu ile bir şekilde başladığı için dil belirsizliğinden muzdariptir.
Teknik olarak, dil belirsizliği sorunu lojban gibi yapay dillerle çözülmüştür , ancak daha sonra müşteriniz ve geliştiricileriniz bu dili bilmeyecektir.
Her yerde kullanılan dil
BDD her yerde bulunan bir dil fikriyle el ele gider. Senaryoları tüm müşteriler, testçiler ve geliştiricilerle birlikte belirleyebilmek, BDD'ye diğer yaklaşımlara göre bir avantaj sağlıyor.
Tüm gereksinimleri yazan geleneksel bir ihtiyaç mühendisini düşünün. Bir test cihazı veya müşteri olarak, 300 sayfalık belgeyi gözden geçirme gereksinimleriyle dolu hale getirdikten sonra, orada kullanılan terminolojiden çok daha acil sorunlarınız olacaktır.
Kullanıcı öyküleri bu cephede biraz daha iyi olur, çünkü yaratımlarına tüm paydaşları da dahil ederler. Her yerde kullanılan dil açısından, BDD'nin veya kullanıcı hikayelerinin daha iyi olduğunu söyleyemem - bir sonraki noktada önemli ölçüde farklılık gösterse de.
Testedilebilirlik
BDD'nin önemli bir özelliği spesifikasyonlarınızın gerçekten yürütülebilir olmasıdır (Salatalık veya benzeri). Ne gereksinimler ne de kullanıcı hikayeleri bu özelliği sunmaz. Şahsen benim için BDD'nin ana satış noktası bu.
Geleneksel gereksinimlerden farklı olarak, biz mühendislere çağlar boyunca gereksinimlerinin test edilebilir olması gerektiğini söylüyoruz. Yine de, her proje, hat test cihazlarının bir yerinde belirli bir gereksinimi nasıl test edeceklerine dair hiçbir fikirleri olmadığını fark ettikleri bir durum görür.
Kullanıcı hikayeleri, doğru yapılırsa, emin olmak için test cihazlarını erken oluşturma aşamalarına dahil edin. Ne yazık ki, bu gerçek dünyayla çatışan bir teori örneğidir, burada daha önce hiçbir test cihazının görmediği birçok hikaye gördüm.
Öte yandan BDD size otomatik olarak yürütülebilir bir test senaryosu verir. Hiçbir mazeret ve bunun hiçbir yolu yoktur (otomasyon katmanlarını tamamen görmezden gelmedikçe ve sadece süslü şiir için senaryolar yazmadıkça).
Daha genel olarak, Test First, yazılım geliştirmenin tüm aşamalarında çok faydalı olan bir prensiptir ve BDD, geliştirmenin en dış katmanına uygulanmasıdır (birim düzeyinde f.ex. TDD ile karşılaştırıldığında).
özet
Özetle, BDD sizi doğal dil belirsizliği sorunlarından kurtarmaz. Bununla birlikte, bu sorunu iki önemli noktadan ele almanıza yardımcı olur: Belirsizlikleri azaltmak için her yerde birden fazla dile odaklanmak (tamamen ortadan kaldırmaz, ancak bir ton yardımcı olur!) Ve yürütülebilir yazmanıza zorlayarak özellikleri. İkinci nokta, belirsizlik sorunlarının ele alınmasına yardımcı olmaktadır, çünkü belirsizliklerin aksi takdirde sorun olarak ortaya çıkmaya başladığı nokta budur.