Käitumisel põhinev arendus

Käitumisel põhinev arendus (ingl. behavior-driven development, lühendatult BDD) on tarkvaraarenduse meetod, mis on välja arenenud testimisel põhinevast arendusest. Käitumisel põhinev arendus kombineerib testimisel põhineva arenduse üldiseid tehnikaid ja põhimõtted. Selle eesmärk on pakkuda arendustiimile ja juhtivtiimile jagatud tööriista tarkvara arendamisel.

Käitumisel põhineva arenduse osana kasutatakse tavalise lause konstruktsiooni, mis väljendab käitumist või tulemust.

Ajalugu
Käitumisel põhinev arendus on testimisel põhineva arenduse laiendus . Selleks kasutatakse lihtsat valdkonnaspetsiifilist keelt, mis omakorda genereerib tavalised laused testideks. 

BDD kesksed küsimused on järgnevad.
 Kust alustada testimist?
 Mida testida ja mida mitte?
 Kui palju testida ühe korraga?
 Kuidas aru saada, miks test ebaõnnestub?

Paljud inimesed on aastate jooksul BDD raamistikku arendanud, lõpuks kujunes sellest suhtlemis- ja koostööraamistik tarkvaraprojektis arendajatele, testijatele ja tehnilise taustata inimestele (nt kliendid, äripartnerid).

BDD põhimõtted
Käitumisel põhinev testimine kasutab käitumise väljendamiseks poolformaalset vormingut, mis on võetud kasutusloost (ingl user story). BDD eeldab, et analüütikud ja arendajad teevad koostööd. Nende ülesanne on kirjutada käitumisel põhinevad laused vastavasse dokumenti.

Struktuur 
Pealkiri: Omadus peaks olema selge ja kõigile arusaadav.
Sündmustik Lühike, sissejuhatav osa.
 Kes on loo põhitegelane (klient, kasutaja, administraator jne)?
 Mida ta tahab teha?
 Miks ta seda teha tahab?
Stsenaarium Kirjeldus stsenaariumist. 
 Vajaliku konditsiooni spetsifikatsioon stsenaariumi alguses.
 Stsenaariumi algatav tegevus.
 Oodatav tulemus.

  
 
   
 Omadus: Tagastatud kaubad lähevad lattu
 
 Mina poe omanikuna
 Tahan hoida laol toimuval silma peal  
 Selleks tuleb tagastatud tooted lisada lattu.
 
 Stsenaarium: Tagasimakstud tooted peaksid olema laos
 Antud klient ostis kampsuni
 Ja lattu jäi 10 kampsunit
 Kui üks klient tagastab kampsuni
 Siis laos peaks olema 11 kampsunit
 
 Stsenaarium: Väljavahetatud tooted peaks olema laos
 Antud klient ostis enne lühikesed püksid
 Ja nüüd on kolm paari lühikesi pükse laos
 Ja nüüd on neli paari pikki pükse laos
 Kui klient tahab lühikesed püksid pikkade vastu vahetada
 Siis nüüd peaks olema neli paari lühikesi pükse laos
 Ja kolm paari pikki pükse

Formaat on Gherkini keele järgi.
Näide esimese stsenaariumi järgi testimiseks Javas.

    @Antud("klient ostis kampsuni")
    public void klient_ostis_kampsuni() {
        //vastav kood
    }
    @Ja("lattu jäi 10 kampsunit")
    public void lattu_jäi_10_kampsunit() {
        //vastav kood
    }
    @Kui("üks klient tagastab kampsuni")
    public void üks_klient_tagastab_kampsuni() {
        //vastav kood
    }
    @Siis("laos peaks olema 11 kampsunit")
    public void laos_peaks_olema_11_kampsunit() {
        //vastav kood
    }
 

Omaduse fail juhtumitega.

  Raamstsenaarium: Kurgi söömine
  Antud alguses on <kurke> kurki
  Kui ma söön <söön> kurki ära
  Siis peaks alles jääma <alles> kurki
  Juhtumid:
    | kurke | söön | alles |
    |    12 |   5 |    7 |
    |    20 |   5 |   15 |

Viited

Tarkvaraarendus