Wprowadzenie do Behaviordriven

Podobne dokumenty
Behavior Driven Development (BDD)

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia

Program szkolenia: Receptury testowania automatycznego - problemy, strategie, taktyki, techniki, narzędzia

REFERAT PRACY DYPLOMOWEJ

Techniki efektywnego testowania kodu dla programistów Java (Spock

Acceptance Test Driven Development wspierane przez narzędzie ROBOT Framework. Edyta Tomalik Grzegorz Ziemiecki

Całościowe podejście do testowania automatycznego dla programistów. /C#/PHP (TDD, BDD, Spec. by Example, wzorce, narzędzia)

METODY PROGRAMOWANIA

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Główne założenia XP. Prostota (Simplicity) Komunikacja (Communication) Sprzężenie zwrotne (Feedback) Odwaga (Agressiveness)

REQB POZIOM PODSTAWOWY PRZYKŁADOWY EGZAMIN

Program szkolenia: Test Driven Development (TDD) using Spock or JUnit 5

Program szkolenia: Tworzenie aplikacji w Ruby on Rails z wykorzystaniem zwinnych metodyk

JUnit TESTY JEDNOSTKOWE. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Michał Olejnik. 22 grudnia 2009

Automatyzacja bez nadmiernego bólu. Piotr Januszek

Programowanie Zespołowe

know 5 W, : filary wzrostu WHAT WHEN WHO WHY WHERE model biznesowy

Rozdział 5: Zarządzanie testowaniem. Pytanie 1

Inżynieria oprogramowania II

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

Programowanie zespołowe

Analityk i współczesna analiza

Procesowa specyfikacja systemów IT

Testowanie Akceptacyjne

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Projektowanie interakcji

Testowanie. Ryszard Beczek & Piotr Miłkowski 1 04/11/07

Szybkość w biznesie. Zwinne testowanie oprogramowania (Agile) Mateusz Morawski (mateusz.morawski@hp.com) 14 kwietnia 2015

Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)

Zagadnienia. Inżynieria Oprogramowania

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Programowanie kontraktowe w Javie

Narzędzia CASE dla.net. Łukasz Popiel

Testy automatyczne. Korzystające z junit

Wszystkie problemy leżą w testach. ForProgress spółka z ograniczoną odpowiedzialnością sp.k.

Szkolenie wycofane z oferty

Inżynieria oprogramowania. Wykład 7 Inżynieria wymagań: punkty widzenia, scenariusze, przypadki użycia

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Niecertyfikowany tester Plan poziomu zerowego

Weryfikacja i walidacja. Metody testowania systemów informatycznych

Projektowanie obiektowe oprogramowania Testowanie oprogramowania Wykład 13 Wiktor Zychla 2014

Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

Jak patrzymy na testy czyli Jak punkt widzenia zależy od punktu siedzenia. Click Piotr Kałuski to edit Master subtitle style

Spis treści. Przedmowa Karolina Zmitrowicz, Adam Roman. Część I. Organizacja i procesy 1

Maciej Oleksy Zenon Matuszyk

Jarosław Żeliński analityk biznesowy, projektant systemów

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Overlord - Plan testów

Outsourcing kadry IT. w branżach: finanse, bankowośd i ubezpieczenia

Wprowadzenie do testów jednostkowych. Marcin Dziedzic, Wiktor Żołnowski

Przypadki bez przypadków. Jak dobierać scenariusze testowe.

Omówienie założeń procesu Design Thinking i przeprowadzenie wstępnego warsztatu. Mariusz Muraszko i Mateusz Ojdowski Logisfera Nova

I N S T Y T U T I N F O R M A T Y K I S T O S O W A N E J 2016

Projekt dotyczy stworzenia zintegrowanego, modularnego systemu informatycznego wspomagającego zarządzanie pracownikami i projektami w firmie

Narzędzia informatyczne wspierające przedsięwzięcia e-commerce

WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java

Warsztaty FRAME. Sygnatura warsztatu: W1 (W3) Czas trwania: 3 dni

Dokument Detaliczny Projektu

Testowanie oprogramowania

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Zakres wykładu. Podstawy InŜynierii Oprogramowania

Inżynieria wymagań. Wykład 3 Zarządzanie wymaganiami w oparciu o przypadki użycia. Część 5 Definicja systemu

Organizacja procesu projektowania, rozwoju i serwisowania systemu wspomagającego zarzadzanie uczelnią

Wykaz osób w postępowaniu o udzielenie zamówienia publicznego nr 32-CPI-WZP-2244/13. Podstawa do dysponowania osobą

IO - Plan wdrożenia. M.Jałmużna T.Jurkiewicz P.Kasprzyk M.Robak. 5 czerwca 2006

Projektowanie oprogramowania. Termin zajęć: poniedziałek, a podstawie materiału ze strony.

Inżynieria oprogramowania (Software Engineering)

szkolenia pod drzewem Wybrane Techniki XP bnd 2008 Tomasz Włodarek. Materiał udostępniany na podstawie licencji Creative Commons (by-nc-nd) 1.00.

Jak uczyć się na błędach? Łukasz Malina WEBCON

Wykład 1 Inżynieria Oprogramowania

Plan Testów Systemu SOS

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Tworzenie i wykorzystanie usług sieciowych

Projekty IT w praktyce biznesowej

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Metodyka wdrożenia. Bartosz Szczęch. Starszy Konsultant MS Dynamics NAV

Metodyka Sure Step. Agenda:

Studia podyplomowe PROGRAM NAUCZANIA PLAN STUDIÓW

Inżynieria oprogramowania (Software Engineering)

Zarządzanie testowaniem wspierane narzędziem HP Quality Center

Podstawy programowania III WYKŁAD 4

Usługa: Testowanie wydajności oprogramowania

Testowanie aplikacji JAVA Laboratorium 8 (Tabele w scenariuszach JBehave. Projekt z podstaw BDD oraz atrap.)

Analiza i projektowanie obiektowe 2017/2018. Wykład 3: Model wiedzy dziedzinowej

Testowanie oprogramowania cz. 1

Inżynieria Oprogramowania w Praktyce

Projektowanie Zorientowane na Dziedzinę. ang. Domain Driven Design

Konwerter Plan testów. Jakub Rauch Tomasz Gołębiowski Adam Busch Bartosz Franaszek 1 czerwca 2008

Myślicie Państwo o inwestycji w zakup nowej obrabiarki? Najbliższe 60 sekund może dać oszczędność sporej sumy pieniędzy!

Jak uchronić architekturę i wymagania przed chaosem? Warszawa, 27 stycznia 2016 roku

Praca magisterska Jakub Reczycki. Opiekun : dr inż. Jacek Rumiński. Katedra Inżynierii Biomedycznej Wydział ETI Politechnika Gdańska

Program szkolenia: Wprowadzenie do Domain Driven Design dla biznesu (część 0)

Transkrypt:

Wprowadzenie do Behaviordriven development Jakub Kosiński Email: ja@ghandal.net

Czym jest BDD? praktyka, powstała na podstawie TDD, wykorzystywana w zwinnych metodykach stworzona przez Dana Northa w 2003 roku

Czym jest BDD? Behaviour-driven Development polega na tworzeniu oprogramowania przez opisywanie jego zachowania, z perspektywy jego udziałowców. [D. North]

Na co kładzie nacisk BDD? potrzeba zrozumienia potrzeb klienta i poznania jego języka i punktu widzenia sposobu, w jaki opisuje to, jak oprogramowanie ma się zachowywać

Na co kładzie nacisk BDD? potrzeba zrozumienia potrzeb klienta i poznania jego języka i punktu widzenia sposobu, w jaki opisuje to, jak oprogramowanie ma się zachowywać wielu udziałowców - patrzymy na projekt z perspektywy wszystkich ludzi zaangażowanych i zainteresowanych projektem

3 zasady BDD 1.Enough is enough 2.Deliver stakeholder value 3.It s all behaviour

Enough is enough analizujemy, planujemy i projektujemy tyle, ile naprawdę trzeba nie tracimy czasu na na wyspecyfikowanie od razu całego zakresu projektu wymagania i tak będą się pewnie zmieniać robimy tylko tyle, ile trzeba

Deliver stakeholder value wszystko, co robimy ma nieść ze sobą realną wartość biznesową jeśli robimy coś, co tej wartości nie przynosi, warto zająć się czymś innym jeżeli funkcjonalność pojawia się w projekcie, to znaczy, że jest wartościowa

It s all behaviour potrzeba mówienia wszechobecnym językiem (ang. ubiquitous language) wszyscy uczestnicy projektu powinni odwoływać i myśleć o systemie w ten sam sposób opisując jego zachowanie tym samym słownictwem dzięki temu zmniejszana jest bariera komunikacyjna między nietechnicznym klientem, a technicznymi programistami wymagania definiujemy w formie historyjek użytkownika

BDD vs. TDD

Cykl BDD Jeżeli skorzystamy z dwóch typów narzędzi: wysokopoziomowego do specyfikowania na poziomie aplikacji niskopoziomowego do specyfikowania na poziomie obiektów możemy nieco zmodyfikować nasz cykl tworzenia oprogramowania

Cykl BDD

Historyjki użytkownika Historyjka jest spisanym wymaganiem klienta

Historyjki użytkownika Każda historyjka składa się z kilku części: tytułu narracji kryteriów akceptacji

Historyjka użytkownika - narracja w narracji powinniśmy zawrzeć: opis funkcjonalności korzyści, jakie płyną z danej funkcjonalności osobę (rolę), która będzie czerpać te korzyści

Historyjka użytkownika narracja Wypłata pieniędzy z bankomatu Jako klient Chcę wypłacić pieniądze z bankomatu Aby nie musieć stać w kolejce do kasy

Historyjki użytkownika kryteria akceptacji kryteria akceptacji określają moment, w którym historyjka jest kompletna spisywane są w postaci scenariuszy, których pozytywne przejście gwarantuje osiągnięcie celu

Historyjki użytkownika kryteria akceptacji zwykle scenariusze składają się z trzech bloków: Given określający kontekst When określający zdarzenie Then określający rezultat

Historyjki użytkownika kryteria akceptacji Scenariusz: Konto posiada odpowiednią ilość środków Zakładając, że na koncie jest odpowiednia ilość środków Oraz, że karta jest poprawna Oraz, że w kasecie są pieniądze Jeżeli klient zażąda wypłaty gotówki Wtedy konto zostanie obciążone Oraz pieniądze zostaną wypłacone Oraz karta zostanie zwrócona klientowi

Historyjki użytkownika kluczem do sukcesu jest spowodowanie, by kryteria akceptacji poszczególnych historyjek były wykonywalne dzięki temu będziemy mogli je zautomatyzować

Czym są specyfikacja obiektów? testy jednostkowe, pisane według pewnych konwencji: nazwy metod testowych są zdaniami nazwy metod korzystają z wszechobecnego języka opisują zachowanie i są zrozumiałe dla wszystkich udziałowców specyfikujemy to, co klasa powinna robić

Specyfikacja obiektu przykład public class CustomerLookupBehavior { @Test public void shouldfindcustomerbyid() { } } @Test(expected=DuplicatedCustomerException.class) public void shouldfailforduplicatecustomers() { }

Co dają specyfikacja obiektów? jeśli obiekt nie przeszedł testu, mamy podpowiedź, dlaczego tak się stało pomagają w projektowaniu klas stanowią dokumentację klas są specyfikacjami wykonywalnymi

Jak weryfikować coś, czego nie ma? Co zrobić, gdy testujemy funkcjonalność odwołującą się do części aplikacji, która nie została jeszcze zaimplementowana?

Mocks & stubs Stubs: Klasy, zawierające implementacje interfejsów Mocks: Klasy, dla których możemy określić, jakie metody lub właściwości będą wykonywane, jakie wartości mają być przyjmowane i jakie zwracane

BDD w Java (JBehave + JUnit) [Przykład dostępny w serwisie Github: http://github.com/ghandal/jbehave-example]

Zalety stosowania BDD Specyfikacje klas stają się testami i dokumentacją (specyfikacją wykonywalną)

Zalety stosowania BDD Specyfikacje klas stają się testami i dokumentacją (specyfikacją wykonywalną) Scenariusze stają się automatycznymi testami akceptacyjnymi, które stają się testami regresyjnymi oraz dokumentacją

Podsumowanie BDD jest techniką pisania oprogramowania, ale może być również traktowana jako pełna zwinna metodyka opiera się na trzech zasadach: Enough is enough Deliver stakeholder value It s all behaviour skupia się na polepszeniu komunikacji między poszczególnymi osobami zaangażowanymi w projekt

Literatura i zasoby 1. David Chelimsky, The RSpec Book. Bahaviour Driven Development with RSpec, Cucumber and Friends, The Pragmatic Programmers LLC., 2009. 2. Eric Evans, Domain driven design, 2002 3. Dan North, Introducing BDD, http://dannorth.net/introducing-bdd, 2006. 4. http://behaviour-driven.org JBehave http://jbehave.org Przykłady - http://github.com/ghandal/jbehaveexample