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.[1][2][3] 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.[1][4]

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

Ajalugu muuda

Käitumisel põhinev arendus on testimisel põhineva arenduse laiendus .[1] 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).[5]

BDD põhimõtted muuda

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.[6]

Struktuur muuda

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.[7]

   @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.[7]

 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 muuda

  1. 1,0 1,1 1,2 "Behaviour-Driven Development". Originaali arhiivikoopia seisuga 1.09.2015. Vaadatud 6.12.2018. {{netiviide}}: |arhiivimisurl= ja |archiveurl= dubleerivad üksteist (juhend)
  2. Haring, Ronald. de Ruiter, Robert (toim). "Behavior Driven development: Beter dan Test Driven Development". Java Magazine (hollandi). Veen Magazines. Lk 14–17. ISSN 1571-6236. {{netiviide}}: parameeter |vaadatud= nõuab parameetrit |url= (juhend); puuduv või tühi |url= (juhend)
  3. Solis, Carlos; Wang, Xiaofeng. "A Study of the Characteristics of Behaviour Driven Development". Software Engineering and Advanced Applications (SEAA), 2011 37th EUROMICRO Conference on. Lk 383–387. DOI:10.1109/SEAA.2011.76. Vaadatud 6.12.2018.
  4. Bellware, Scott. "Behavior-Driven Development". Code Magazine. Vaadatud 6.12.2018.
  5. http://forums.pragprog.com/forums/95/topics/3035 The RSpec Book – Question about Chapter 11: Writing software that matters | Kasutatud=6.12.2018
  6. North, Dan. "What's in a Story?". Dan North. Vaadatud 6.12.2018.
  7. 7,0 7,1 "Gherkin". Originaali arhiivikoopia seisuga 16.12.2018. Vaadatud 6.12.2018.