Szegény ember BDD-je

Kicsit komolyabban megismerkedtem Cucumber BDD rendszerrel. Pontosabban elolvastam egy igen érdekes könyvet. És most már tudom miért fontos, hogy a teszt inkább olvasható legyen, mint könnyen írható.

Azelőtt nem tudtam mi is az a BDD. Most már csak majdnem nem tudom.

Kicsit összesűritve és emiatt leegyszerűsítve: Építsd fel a tesztjeidet a GIVEN-WHEN-THEN struktúra alapján, ami egy könnyen olvasható tesztesetet ad. Neked “csak” az implementációt kell mellé tenned. Ezáltal úgynevezet “executable specification”-t kapunk, ami kéz a kézben jár “Specification by Example“-vel ( könyv is van róla ).

Iskolapéldának a Cucumber-t hozzák fel, mint az egyik legjobb implementációt. Java implementáció is létezik!

De azért nem kell nagyon elszálni. Magának a BDD tesztnek a felépítésében nincs semmi különleges. A struktúrát (GIVEN-WHEN-THEN) követni kell minden teszt esetében. Az igazi váltás a szemléletben van. Végre egy módszer, kiemel egy igen fontos szempontot:

A tesztnek elsősorban olvashatónak kell lennie a könnyen írhatóság helyett.

Gondolj bele milyen sok pénzt lehet elkölteni úgynevezett teszt autómatizáló toolokra. De azok a toolok leginkább a record-replay kategóriába tartoznak.

Ha esetleg kedvet kaptál, akkor azért nem kell nagyon messzire menned. Nem kell minden áron Cucumber-t használnod. Elég ha csak a teszted belső struktúráját alakítod át egy kicsit.

A következő példa teljesen hagyomás JUnit-ban íródott.

1@Test
2public void user_field_empty() throws Exception {
3    given_empty_user_id();
4    given_user_text("otto");
5    when_validate();
6    then_got_error_message("User is mandatory");
7}
8// metódus implementációk...

Miért is jó:

Hát nem nagyszerű!

Jul 26, 2013
comments powered by Disqus

Links

Cool

RSS