Bevezetés
A Behavior-Driven Development (röviden BDD) már egy 2000-es évek elejétől létező
módszer. Még a mai napig is sokan használják, sőt vezetik be létező vagy
új projekteken.
Sajnos azonban azt vettem észre, hogy sokan félreértik és hibásan használják.
Az Interneten is rengeteg rossz példa terjed, sőt a különböző nagy nyelvi
modellek is hibás megoldásokat hoznak (nyilván az előbbi példák alapján), ezekből is
fogok többet is mutatni.
Ezzel azonban nem segíti, hanem inkább hátráltatja a projekt előrehaladását.
Ebben a posztomban megpróbálom összegyűjteni, hogy hol lehet elrontani a BDD
használatát, valamint milyen rossz gyakorlatokat látok a mai napig.
Saját tapasztalatokat és erősen szubjektív elemeket is tartalmaz.
Ez a korábbi Fejlesztőként mivel akadályozom a tesztelők munkáját?
írásom folytatásaként is felfogható.
Röviden a BDD-ről
Nem célom a BDD részletes kifejtése, csak amennyi feltétlenül szükséges a megértéshez.
Hivatalos definíció hiányában a kialakulásának céljait érdemes megérteni.
Ez olyan módszer, megközelítés, melynek célja hogy a szoftver elvárt viselkedését
példákon keresztül mindenki számára érthető, természetes nyelvi formában fogalmazza meg.
Gyakran emlegetik a Three Amigos (magyarul: Három Barát) kulcsszereplőket is,
ami arra utal, hogy az üzleti szereplők, fejlesztők és tesztelők közösen
dolgoznak annak érdekében, hogy mindenki ugyanazt értse “kész alatt”. (Utalva itt
az elfogadási kritériumokra - angolul: acceptance criteria.) Általánosan elterjedt még
a Given-When-Then használata, mely szavak segítségével struktúrálni tudjuk
az üzleti követelmények leírását. Elterjed eszköz a polyglott, azaz több
programozási nyelven is használható Cucumber eszköz, valamint a nagyon egyszerű Gherkin
nyelv.
Cucumber esetén a követelményeket ún. feature fájlban lehet leírni, mely forgatókönyveket, példákat (scenario) tartalmaz. Ezek lépésekből (step) állnak, az előbb említett Given-When-Then
struktúrában. A természetes nyelven megfogalmazott lépést implementálni kell
valamilyen programozási nyelven, ez az ún. step definition.