Wydział Informatyki i Zarządzania Wrocław, 12 marca 2010
Agenda Wprowadzenie 1 Wprowadzenie 2 3 4 BDD w Javie 5 6
Cele prezentacji Wprowadzenie Cele prezentacji Prawda o projektach 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
Cele prezentacji Prawda o projektach
Wprowadzenie Behavior Driven Development Cykl w BDD Historia Założenia, główne zasady Cykl w BDD
Historia Wprowadzenie Behavior Driven Development Cykl w BDD stosunkowo nowe podejście wywodzące się z TDD i ATDD początki: 2003 rok - Dan North odpowiedź na trudności w TDD: czym obiekt jest? kontra co obiekt robi?
Założenia, główne zasady Behavior Driven Development Cykl w BDD 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ę
Cykl w BDD (1) Wprowadzenie Behavior Driven Development Cykl w BDD
Cykl w BDD (2) - poziom aplikacji Behavior Driven Development Cykl w BDD Zewnętrzny cykl: tzw. wysokopoziomowy dotyczy zachowania aplikacji związany ze scenariuszem konkretnej historyjki użytkownika
Cykl w BDD (3) - poziom obiektów Behavior Driven Development Cykl w BDD Wewnętrzny cykl: tzw. niskopoziomowy dotyczy zachowania obiektów związany z akcjami wykonowanymi podczas pojedyńczego kroku w scenariuszu
Cykl w BDD (4) Wprowadzenie Behavior Driven Development Cykl w BDD
Czym jest historyjka? Jak powinna wyglądać dobra historyjka? Scenariusze Czym jest historyjka? Jak powstają historyjki Jak powinna wyglądać dobra historyjka Scenariusze
Czym jest historyjka? Wprowadzenie Czym jest historyjka? Jak powinna wyglądać dobra historyjka? Scenariusze 1 wymaganie dotyczące systemu zapisane przez klienta 2 składa się z trzech części: tytułu narracji kryteriów akceptacji
Budowa historyjki Wprowadzenie Czym jest historyjka? Jak powinna wyglądać dobra historyjka? Scenariusze 1 tytuł - najlepiej w jednej lini, opisujący historyjkę
Budowa historyjki Wprowadzenie Czym jest historyjka? Jak powinna wyglądać dobra historyjka? Scenariusze 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]
Budowa historyjki Wprowadzenie Czym jest historyjka? Jak powinna wyglądać dobra historyjka? Scenariusze 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ą kiedy historyjka jest kompletna: Scenario 1: Title Given [context] And [some more context]... When [event] Then [outcome] And [another outcome]...
Czym jest historyjka? Jak powinna wyglądać dobra historyjka? Scenariusze Historyjka powinna być produktem konwersacji kilku osób:
Czym jest historyjka? Jak powinna wyglądać dobra historyjka? Scenariusze 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ąc uporządkować to jako narrację).
Czym jest historyjka? Jak powinna wyglądać dobra historyjka? Scenariusze 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ąc uporządkować to jako narrację). 2 Nastepnie tester pomaga zdefiniować krztałt historyjki w postaci kryteriów akceptacji, determinując, które scenariusze mają znaczenie, a które można pominać.
Czym jest historyjka? Jak powinna wyglądać dobra historyjka? Scenariusze 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ąc uporządkować to jako narrację). 2 Nastepnie tester pomaga zdefiniować krztałt historyjki w postaci kryteriów akceptacji, determinując, które scenariusze mają znaczenie, a które można pominać. 3 Technik po analizie danej hisotoryjki określa jej koszt i może zaproponować inne rozwiązanie.
Czym jest historyjka? Jak powinna wyglądać dobra historyjka? Scenariusze Jak powinna wyglądać dobra historyjka? (1)
Czym jest historyjka? Jak powinna wyglądać dobra historyjka? Scenariusze Jak powinna wyglądać dobra historyjka? (2)
Czym jest historyjka? Jak powinna wyglądać dobra historyjka? Scenariusze Jak powinna wyglądać dobra historyjka? (3)
Scenariusze Wprowadzenie Czym jest historyjka? Jak powinna wyglądać dobra historyjka? Scenariusze Grupowanie scenariuszy podobnych: Klient pobiera gotówkę (zakładamy że: bankomat działa i karta 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?
Wprowadzenie do BDD BDD w Javie Adnotacje do BDD BDD w Javie Adnotacje kroków (na poziomie obiektów) Adnotacje scenariuszy (na poziomie aplikacji)
do BDD Wprowadzenie do BDD BDD w Javie Adnotacje 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)
BDD w Javie Wprowadzenie do BDD BDD w Javie Adnotacje JUnit - framework do testów jednostkowych JBehave - framework do BDD Hamcrest - lub inna biblioteka dopasowań
do BDD BDD w Javie Adnotacje Adnotacje kroków (na poziomie obiektów) @Given @When @Then @Alias @Aliases
Adnotacje scenariuszy Wprowadzenie do BDD BDD w Javie Adnotacje @BeforeScenario @AfterScenario
Korzyści stosowania BDD Korzyści nacisk położony na to, co obiekt ma robić, a nie jak ma to robić ułatwienie komunikacji pomiędzy osobami zaangażowanymi w projekt (wspólny język) kod staje się dokumentacją scenariusze stanowią dodatkowe testy
Przykładowe scenariusze Przykładowe scenariusze w Eclipse Scenariusze mogą mieć dowolną formę!
w Eclipse Wprowadzenie Przykładowe scenariusze w Eclipse
Przykładowe scenariusze w Eclipse