Behavior Driven Development...

Post on 19-Jul-2020

12 views 0 download

Transcript of Behavior Driven Development...

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Behavior Driven Development (BDD)

Bartłomiej Gajowczyk, Sylwester Grabowski

Wydział Informatyki i Zarządzania

Wrocław, 12 marca 2010

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Agenda

1 Wprowadzenie2 Idea BDD3 Historyjki i scenariusze4 BDD w Javie5 Przykłady6 Podsumowanie

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Cele prezentacjiPrawda o projektach

Cele prezentacji

przedstawienie podejścia BDD

wyjaśnienie cyklu w BDD

określenie zasad dotyczących BDD

omówienie historyjek użytkownika i scenariuszy

zaprezentowanie mechanizmów BDD stosowanych w Javie

wyjaśnienie praktyki BDD na przykładach

wykazanie korzyści płynących ze stosowania BDD

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Cele prezentacjiPrawda o projektach

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Behavior Driven DevelopmentCykl w BDD

Idea BDD

Historia

Założenia, główne zasady

Cykl w BDD

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Behavior Driven DevelopmentCykl w BDD

Historia

stosunkowo nowe podejście wywodzące się z TDD i ATDD

początki: 2003 rok - Dan Northodpowiedź na trudności w TDD:

’czym obiekt jest?’ kontra ’co obiekt robi?’

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Behavior Driven DevelopmentCykl w BDD

Założenia, główne zasady

liczy się przede wszystkim zachowanie

minimalizacja formalizmów, maksymalizacja zrozumienia

naturalny język zrozumiały dla każdego

nazwy metod testowych powinny być zdaniami

łatwiejsze czytanie kodu i interpretacja testów

kod stanowi dokumentację

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Behavior Driven DevelopmentCykl w BDD

Cykl w BDD (1)

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Behavior Driven DevelopmentCykl w BDD

Cykl w BDD (2) - poziom aplikacji

Zewnętrzny cykl:

tzw. wysokopoziomowy

dotyczy zachowania aplikacji

związany ze scenariuszem konkretnej historyjki użytkownika

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Behavior Driven DevelopmentCykl w BDD

Cykl w BDD (3) - poziom obiektów

Wewnętrzny cykl:

tzw. niskopoziomowy

dotyczy zachowania obiektów

związany z akcjami wykonowanymi podczas pojedyńczegokroku w scenariuszu

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Behavior Driven DevelopmentCykl w BDD

Cykl w BDD (4)

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Czym jest historyjka?Jak powstają historyjki?Jak powinna wyglądać dobra historyjka?Scenariusze

Historyjki i scenariusze

Czym jest historyjka?

Jak powstają historyjki

Jak powinna wyglądać dobra historyjka

Scenariusze

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Czym jest historyjka?Jak powstają historyjki?Jak powinna wyglądać dobra historyjka?Scenariusze

Czym jest historyjka?

1 wymaganie dotyczące systemu zapisane przez klienta2 składa się z trzech części:

tytułunarracjikryteriów akceptacji

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Czym jest historyjka?Jak powstają historyjki?Jak powinna wyglądać dobra historyjka?Scenariusze

Budowa historyjki

1 tytuł - najlepiej w jednej lini, opisujący historyjkę

2 narracja - rola, opis funkcjonalności, korzyści:

As a [ROLE]I want [FEATURE]So that [BENEFIT]

3 kryteria akceptacji - zapisane jako scenariusz, określają kiedyhistoryjka jest kompletna:

Scenario 1: TitleGiven [context] And [some more context]...When [event]Then [outcome] And [another outcome]...

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Czym jest historyjka?Jak powstają historyjki?Jak powinna wyglądać dobra historyjka?Scenariusze

Budowa historyjki

1 tytuł - najlepiej w jednej lini, opisujący historyjkę2 narracja - rola, opis funkcjonalności, korzyści:

As a [ROLE]I want [FEATURE]So that [BENEFIT]

3 kryteria akceptacji - zapisane jako scenariusz, określają kiedyhistoryjka jest kompletna:

Scenario 1: TitleGiven [context] And [some more context]...When [event]Then [outcome] And [another outcome]...

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Czym jest historyjka?Jak powstają historyjki?Jak powinna wyglądać dobra historyjka?Scenariusze

Budowa historyjki

1 tytuł - najlepiej w jednej lini, opisujący historyjkę2 narracja - rola, opis funkcjonalności, korzyści:

As a [ROLE]I want [FEATURE]So that [BENEFIT]

3 kryteria akceptacji - zapisane jako scenariusz, określają kiedyhistoryjka jest kompletna:

Scenario 1: TitleGiven [context] And [some more context]...When [event]Then [outcome] And [another outcome]...

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Czym jest historyjka?Jak powstają historyjki?Jak powinna wyglądać dobra historyjka?Scenariusze

Jak powstają historyjki?

Historyjka powinna być produktem konwersacji kilku osób:

1 Analityk biznesowy rozmawia z udziałowcem o tym, jakacecha bądź wymaganie jest potrzebne (pomagającuporządkować to jako narrację).

2 Nastepnie tester pomaga zdefiniować krztałt historyjki wpostaci kryteriów akceptacji, determinując, które scenariuszemają znaczenie, a które można pominać.

3 Technik po analizie danej hisotoryjki określa jej koszt i możezaproponować inne rozwiązanie.

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Czym jest historyjka?Jak powstają historyjki?Jak powinna wyglądać dobra historyjka?Scenariusze

Jak powstają historyjki?

Historyjka powinna być produktem konwersacji kilku osób:1 Analityk biznesowy rozmawia z udziałowcem o tym, jaka

cecha bądź wymaganie jest potrzebne (pomagającuporządkować to jako narrację).

2 Nastepnie tester pomaga zdefiniować krztałt historyjki wpostaci kryteriów akceptacji, determinując, które scenariuszemają znaczenie, a które można pominać.

3 Technik po analizie danej hisotoryjki określa jej koszt i możezaproponować inne rozwiązanie.

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Czym jest historyjka?Jak powstają historyjki?Jak powinna wyglądać dobra historyjka?Scenariusze

Jak powstają historyjki?

Historyjka powinna być produktem konwersacji kilku osób:1 Analityk biznesowy rozmawia z udziałowcem o tym, jaka

cecha bądź wymaganie jest potrzebne (pomagającuporządkować to jako narrację).

2 Nastepnie tester pomaga zdefiniować krztałt historyjki wpostaci kryteriów akceptacji, determinując, które scenariuszemają znaczenie, a które można pominać.

3 Technik po analizie danej hisotoryjki określa jej koszt i możezaproponować inne rozwiązanie.

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Czym jest historyjka?Jak powstają historyjki?Jak powinna wyglądać dobra historyjka?Scenariusze

Jak powstają historyjki?

Historyjka powinna być produktem konwersacji kilku osób:1 Analityk biznesowy rozmawia z udziałowcem o tym, jaka

cecha bądź wymaganie jest potrzebne (pomagającuporządkować to jako narrację).

2 Nastepnie tester pomaga zdefiniować krztałt historyjki wpostaci kryteriów akceptacji, determinując, które scenariuszemają znaczenie, a które można pominać.

3 Technik po analizie danej hisotoryjki określa jej koszt i możezaproponować inne rozwiązanie.

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Czym jest historyjka?Jak powstają historyjki?Jak powinna wyglądać dobra historyjka?Scenariusze

Jak powinna wyglądać dobra historyjka? (1)

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Czym jest historyjka?Jak powstają historyjki?Jak powinna wyglądać dobra historyjka?Scenariusze

Jak powinna wyglądać dobra historyjka? (2)

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Czym jest historyjka?Jak powstają historyjki?Jak powinna wyglądać dobra historyjka?Scenariusze

Jak powinna wyglądać dobra historyjka? (3)

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Czym jest historyjka?Jak powstają historyjki?Jak powinna wyglądać dobra historyjka?Scenariusze

Scenariusze

Grupowanie scenariuszy podobnych:

Klient pobiera gotówkę (zakładamy że: bankomat działa ikarta jest ważna)

Klient pobiera gotówkę z nieważna kartą (zakładamy że:bankomat działa)

Klient pobiera gotówkę z niedziałającego bankomatu(zakładamy że: karta jest ważna)

Dalsza rozbudowa:

Co się stanie gdy karta będzie przeterminowana?

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Narzędzia do BDDBDD w JavieAdnotacje

Narzędzia

Narzędzia do BDD

BDD w Javie

Adnotacje kroków (na poziomie obiektów)

Adnotacje scenariuszy (na poziomie aplikacji)

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Narzędzia do BDDBDD w JavieAdnotacje

Narzędzia do BDD

Frameworki wspierające BDD w różnych językach:

dla Ruby’ego - RSpec + Cucumber (http://rspec.info)

dla PHP - PHPSpec (http://www.phpspec.org)

dla Javy - JBehave (http://jbehave.org)

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Narzędzia do BDDBDD w JavieAdnotacje

BDD w Javie

JUnit - framework do testów jednostkowych

JBehave - framework do BDD

Hamcrest - lub inna ’biblioteka dopasowań’

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Narzędzia do BDDBDD w JavieAdnotacje

Adnotacje kroków (na poziomie obiektów)

@Given

@When

@Then

@Alias

@Aliases

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Narzędzia do BDDBDD w JavieAdnotacje

Adnotacje scenariuszy

@BeforeScenario

@AfterScenario

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Korzyści

Korzyści stosowania BDD

nacisk położony na to, co obiekt ma robić, a nie jak ma torobić

ułatwienie komunikacji pomiędzy osobami zaangażowanymi wprojekt (wspólny język)

kod staje się dokumentacją

scenariusze stanowią dodatkowe testy

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Przykładowe scenariuszePrzykłady w Eclipse

Przykładowe scenariusze

Scenariusze mogą mieć dowolną formę!

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Przykładowe scenariuszePrzykłady w Eclipse

Przykłady w Eclipse

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)

WprowadzenieIdea BDD

Historyjki i scenariuszeNarzędzia

PodsumowaniePrzykłady

Przykładowe scenariuszePrzykłady w Eclipse

Bartłomiej Gajowczyk, Sylwester Grabowski Behavior Driven Development (BDD)