SlideShare a Scribd company logo
1 of 24
Download to read offline
Gherkin - jak zostać
“poetą” w IT
O mnie
● Tomasz Górski
● Pracuję na stanowisku testerskim, w firmie The Software House
● Doświadczenie w BDD:
Przez okres około sześciu miesięcy zajmowałem się pisaniem testów w
Gherkinie, na potrzeby klienta działającego w branży transportowej.
Obecnie zaczynam jako QAA.
Wstęp
1. O mnie
2. Czym jest BDD?
3. Założenia BDD
4. Czym jest Gherkin?
5. Korzyści stosowania BDD
6. Czym jest historyjka?
7. Historyjka - budowanie kroków
8. Pisanie w Gherkinie
9. Jak NIE pisać w Gherkinie
10. Podsumowanie
Wstęp - opis prezentacji
Celem prezentacji będzie pokazanie, jak poprawnie pisać testy w stylu BDD.
Pokażę jak konstruować zrozumiałe kroki, które będzie można wykorzystać
podczas dalszej pracy.
Poruszony temat zostanie rozwinięty przez Szymona, od strony technicznej.
BDD – Behaviour Driven Development
● proces wytwarzania oprogramowania, powstały na podstawie TDD
● opracowany przez: Dan North
BDD – Behaviour Driven Development
„Behaviour-driven Development polega na tworzeniu oprogramowania przez
opisywanie jego zachowania, z perspektywy jego udziałowców.”
Dan North
BDD – Behaviour Driven Development
Założenia:
● podstawą całego procesu jest utworzenie wymagań
● najważniejszą cechą systemu jest jego zachowanie
● chęć zrozumienie potrzeb klienta
● uzyskanie maksymalnego zrozumienia pomiędzy programistami,
analitykami oraz klientem
● automatyzacja
Czym jest Gherkin?
● nietechniczny język zrozumiały dla “biznesu”
● wykorzystywany przez Cucumber (narzędzie)
● służy do opisywania zachowania systemu za pomocą przypadków
testowych
Korzyści stosowania BDD
● zespół programistyczny jest na bieżąco informowany o poprawności kodu
● wspieranie aplikacji w środowisku produkcyjnym (automatyzacja)
● “pomost” pomiędzy biznesem i programistą (Gherkin)
Czym jest historyjka?
Czyli spisane wymaganie klienta.
Składa się z:
● tytułu (powinien być zrozumiały dla każdego)
● narracji
● kryteriów akceptacji
Narracja historyjki
Powinna zawierać:
● opis funkcjonalności (co ma robić)
● kto jest użytkownikiem
● korzyści jakie przynosi funkcjonalność
Kryteria akceptacji - czyli nasz scenariusz
Scenariusz ma nazwę oraz zazwyczaj składa się z:
● Given - określa warunki początkowe, przedstawia aktora
● When - opisuje akcje, występujące zdarzenie
● Then - informuje o oczekiwanych rezultatach
Historyjka - budowanie kroków
Ogólne założenia oraz cele:
● krok powinien być generyczny
● krok powinien być zrozumiały
● krok powinien zawierać informacje o tym co ma się wykonać
● krok powinien zostać napisany w poprawnej angielszczyźnie
● kroki powinny być ze sobą spójne (sposób budowania zdań)
Historyjka - budowanie kroków
Przykłady
● Given I am logged in as a "$user"
● When I click the "$elementName" element
● Then the "$elementName" element is visible
Historyjka - budowanie kroków
Przykład implementacji kroku
● When I click the "$elementName" element
Pisanie w Gherkinie
Przed rozpoczęciem:
● należy sprawdzić wymagania dla konkretnej funkcjonalności
● stworzyć plik .feature (nazwa powinna się pokrywać)
● dodać narrację dla historyjki
● dodać nazwę nowego scenariusza
Pisanie w Gherkinie
Przykładowe flow:
● sprawdzić istniejące kroki
● składnię nowego kroku najlepiej przygotować podczas pisania scenariusza
● dodać logikę dla nowych kroków
Pisanie w Gherkinie
Przykład 1
Feature: Account Holder withdraws cash
Scenario: Account has enough funds
Given the account balance is $100
And the card is valid
When the Account Holder requests $20
Then the ATM should dispense $20
And the account balance should be $80
And the card should be returned
Pisanie w Gherkinie
Przykład 2
Feature: Refund item
Scenario: Jeff returns a microwave
Given Jeff has bought a microwave for $100
And he has a receipt
When he returns the microwave
Then Jeff should be refunded $100
Jak NIE pisać w Gherkinie
Przykład
Feature: User actions
Scenario: Print ticket
Given the login page is displayed
When I enter userName
And I enter the userPassword
And I click the ticket button
And I click the enter button
And I click the enter button
Then the ticket should be printed
Podsumowanie
● oszczędność czasu
● aktualna i zrozumiała dokumentacja
● możliwość podpięcia pod Continuous Integration
● szybszy feedback od klienta
● wymuszenie lepszego kontaktu z klientem
Zagadka
BDD po niemiecku:
● verhaltensgetriebene Softwareentwicklung
PYTANIA???
Gherkin - jak zostać poetą w IT

More Related Content

Viewers also liked

e2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końcee2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końceThe Software House
 
Inżynieria społeczna jako element testów bezpieczeństwa - tylko teoria, czy j...
Inżynieria społeczna jako element testów bezpieczeństwa - tylko teoria, czy j...Inżynieria społeczna jako element testów bezpieczeństwa - tylko teoria, czy j...
Inżynieria społeczna jako element testów bezpieczeństwa - tylko teoria, czy j...The Software House
 
Deploy appki na iOS, czyli magia publikacji
Deploy appki na iOS, czyli magia publikacjiDeploy appki na iOS, czyli magia publikacji
Deploy appki na iOS, czyli magia publikacjiThe Software House
 
Confd - Uszanowanko Programowanko
Confd - Uszanowanko ProgramowankoConfd - Uszanowanko Programowanko
Confd - Uszanowanko ProgramowankoThe Software House
 
Dependency Injection w Androidzie
Dependency Injection w AndroidzieDependency Injection w Androidzie
Dependency Injection w AndroidzieThe Software House
 
Tester - przyjaciel czy wróg programisty?
Tester - przyjaciel czy wróg programisty?Tester - przyjaciel czy wróg programisty?
Tester - przyjaciel czy wróg programisty?The Software House
 
Design dla estetycznie ograniczonych
Design dla estetycznie ograniczonychDesign dla estetycznie ograniczonych
Design dla estetycznie ograniczonychThe Software House
 
Wielkie protokoły wielkich ludzi
Wielkie protokoły wielkich ludziWielkie protokoły wielkich ludzi
Wielkie protokoły wielkich ludziThe Software House
 
Bitcoin - (nie)udany eksperyment?
Bitcoin - (nie)udany eksperyment?Bitcoin - (nie)udany eksperyment?
Bitcoin - (nie)udany eksperyment?The Software House
 
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...The Software House
 
Angular 2.0 – Kochaj albo rzuć!
Angular 2.0 – Kochaj albo rzuć!Angular 2.0 – Kochaj albo rzuć!
Angular 2.0 – Kochaj albo rzuć!The Software House
 
Pi razy drzwi - o szacowaniu projektów
Pi razy drzwi - o szacowaniu projektówPi razy drzwi - o szacowaniu projektów
Pi razy drzwi - o szacowaniu projektówThe Software House
 
Gulp.js - alternatywa do Grunta
Gulp.js - alternatywa do GruntaGulp.js - alternatywa do Grunta
Gulp.js - alternatywa do GruntaThe Software House
 
Angular restmod – wygodny sposób na komunikację z API
Angular restmod – wygodny sposób na komunikację z APIAngular restmod – wygodny sposób na komunikację z API
Angular restmod – wygodny sposób na komunikację z APIThe Software House
 
AngülarJS – Czyli o czym warto pamiętać programując za Odrą
AngülarJS – Czyli o czym warto pamiętać programując za OdrąAngülarJS – Czyli o czym warto pamiętać programując za Odrą
AngülarJS – Czyli o czym warto pamiętać programując za OdrąThe Software House
 
You Shall Not Pass - Security in Symfony
You Shall Not Pass - Security in SymfonyYou Shall Not Pass - Security in Symfony
You Shall Not Pass - Security in SymfonyThe Software House
 

Viewers also liked (20)

e2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końcee2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końce
 
Inżynieria społeczna jako element testów bezpieczeństwa - tylko teoria, czy j...
Inżynieria społeczna jako element testów bezpieczeństwa - tylko teoria, czy j...Inżynieria społeczna jako element testów bezpieczeństwa - tylko teoria, czy j...
Inżynieria społeczna jako element testów bezpieczeństwa - tylko teoria, czy j...
 
Deployment z Ansible
Deployment z AnsibleDeployment z Ansible
Deployment z Ansible
 
Deploy appki na iOS, czyli magia publikacji
Deploy appki na iOS, czyli magia publikacjiDeploy appki na iOS, czyli magia publikacji
Deploy appki na iOS, czyli magia publikacji
 
Confd - Uszanowanko Programowanko
Confd - Uszanowanko ProgramowankoConfd - Uszanowanko Programowanko
Confd - Uszanowanko Programowanko
 
Docker
DockerDocker
Docker
 
Dependency Injection w Androidzie
Dependency Injection w AndroidzieDependency Injection w Androidzie
Dependency Injection w Androidzie
 
Tester - przyjaciel czy wróg programisty?
Tester - przyjaciel czy wróg programisty?Tester - przyjaciel czy wróg programisty?
Tester - przyjaciel czy wróg programisty?
 
Design dla estetycznie ograniczonych
Design dla estetycznie ograniczonychDesign dla estetycznie ograniczonych
Design dla estetycznie ograniczonych
 
TDD w iOS
TDD w iOS TDD w iOS
TDD w iOS
 
Varnish
VarnishVarnish
Varnish
 
Wielkie protokoły wielkich ludzi
Wielkie protokoły wielkich ludziWielkie protokoły wielkich ludzi
Wielkie protokoły wielkich ludzi
 
Bitcoin - (nie)udany eksperyment?
Bitcoin - (nie)udany eksperyment?Bitcoin - (nie)udany eksperyment?
Bitcoin - (nie)udany eksperyment?
 
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
Praktyczne porady na temat optymalizacji wydajności aplikacji tworzonych z u...
 
Angular 2.0 – Kochaj albo rzuć!
Angular 2.0 – Kochaj albo rzuć!Angular 2.0 – Kochaj albo rzuć!
Angular 2.0 – Kochaj albo rzuć!
 
Pi razy drzwi - o szacowaniu projektów
Pi razy drzwi - o szacowaniu projektówPi razy drzwi - o szacowaniu projektów
Pi razy drzwi - o szacowaniu projektów
 
Gulp.js - alternatywa do Grunta
Gulp.js - alternatywa do GruntaGulp.js - alternatywa do Grunta
Gulp.js - alternatywa do Grunta
 
Angular restmod – wygodny sposób na komunikację z API
Angular restmod – wygodny sposób na komunikację z APIAngular restmod – wygodny sposób na komunikację z API
Angular restmod – wygodny sposób na komunikację z API
 
AngülarJS – Czyli o czym warto pamiętać programując za Odrą
AngülarJS – Czyli o czym warto pamiętać programując za OdrąAngülarJS – Czyli o czym warto pamiętać programując za Odrą
AngülarJS – Czyli o czym warto pamiętać programując za Odrą
 
You Shall Not Pass - Security in Symfony
You Shall Not Pass - Security in SymfonyYou Shall Not Pass - Security in Symfony
You Shall Not Pass - Security in Symfony
 

Similar to Gherkin - jak zostać poetą w IT

Równoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | CodesushiRównoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | CodesushiKrzysztof (Chris) Ozog
 
[BDD] Introduction to Behat (PL)
[BDD] Introduction to Behat (PL)[BDD] Introduction to Behat (PL)
[BDD] Introduction to Behat (PL)Piotr Pelczar
 
Jak technika user story & acceptance criteria pozwala definiować wymagania w ...
Jak technika user story & acceptance criteria pozwala definiować wymagania w ...Jak technika user story & acceptance criteria pozwala definiować wymagania w ...
Jak technika user story & acceptance criteria pozwala definiować wymagania w ...Rafal Stanczak »scrumdo(.)pl
 
Girls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćGirls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćmonterail
 
AngularJS szkolenie wewnętrzne (into)
AngularJS szkolenie wewnętrzne (into)AngularJS szkolenie wewnętrzne (into)
AngularJS szkolenie wewnętrzne (into)Marcin Baran
 
Ale o co chodzi?
Ale o co chodzi?Ale o co chodzi?
Ale o co chodzi?3camp
 
Modele wdrażania i zarządzania projektami erp
Modele wdrażania i zarządzania projektami erpModele wdrażania i zarządzania projektami erp
Modele wdrażania i zarządzania projektami erpJaroslaw Zelinski
 
Jak przygotować zadania do testów użyteczności?
Jak przygotować zadania do testów użyteczności?Jak przygotować zadania do testów użyteczności?
Jak przygotować zadania do testów użyteczności?Project: People
 
Domain Driven Development
Domain Driven DevelopmentDomain Driven Development
Domain Driven DevelopmentKonrad Russa
 
PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]Droptica
 
Tajniki współpracy z (trudnym) klientem
Tajniki współpracy z (trudnym) klientemTajniki współpracy z (trudnym) klientem
Tajniki współpracy z (trudnym) klientemKatarzyna Mrowca
 
Szkolenie zarządzanie projektami wersja
Szkolenie zarządzanie projektami wersjaSzkolenie zarządzanie projektami wersja
Szkolenie zarządzanie projektami wersjaRoman Morawski-Jagram
 
Strona w rękach klienta: o czym pamiętać, aby ułatwić pracę edytorom treści [PL]
Strona w rękach klienta: o czym pamiętać, aby ułatwić pracę edytorom treści [PL]Strona w rękach klienta: o czym pamiętać, aby ułatwić pracę edytorom treści [PL]
Strona w rękach klienta: o czym pamiętać, aby ułatwić pracę edytorom treści [PL]Droptica
 

Similar to Gherkin - jak zostać poetą w IT (20)

J behave presentation
J behave presentationJ behave presentation
J behave presentation
 
Behat
BehatBehat
Behat
 
Równoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | CodesushiRównoległy rozwój Aplikacji Webowych | Codesushi
Równoległy rozwój Aplikacji Webowych | Codesushi
 
[BDD] Introduction to Behat (PL)
[BDD] Introduction to Behat (PL)[BDD] Introduction to Behat (PL)
[BDD] Introduction to Behat (PL)
 
Jak technika user story & acceptance criteria pozwala definiować wymagania w ...
Jak technika user story & acceptance criteria pozwala definiować wymagania w ...Jak technika user story & acceptance criteria pozwala definiować wymagania w ...
Jak technika user story & acceptance criteria pozwala definiować wymagania w ...
 
Girls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćGirls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząć
 
WarszawQA_#9
WarszawQA_#9WarszawQA_#9
WarszawQA_#9
 
AngularJS szkolenie wewnętrzne (into)
AngularJS szkolenie wewnętrzne (into)AngularJS szkolenie wewnętrzne (into)
AngularJS szkolenie wewnętrzne (into)
 
Zwinny_Analityk_SIW_Panel
Zwinny_Analityk_SIW_PanelZwinny_Analityk_SIW_Panel
Zwinny_Analityk_SIW_Panel
 
Getting Things Programmed
Getting Things ProgrammedGetting Things Programmed
Getting Things Programmed
 
Ale o co chodzi?
Ale o co chodzi?Ale o co chodzi?
Ale o co chodzi?
 
Modele wdrażania i zarządzania projektami erp
Modele wdrażania i zarządzania projektami erpModele wdrażania i zarządzania projektami erp
Modele wdrażania i zarządzania projektami erp
 
Jak przygotować zadania do testów użyteczności?
Jak przygotować zadania do testów użyteczności?Jak przygotować zadania do testów użyteczności?
Jak przygotować zadania do testów użyteczności?
 
Domain Driven Development
Domain Driven DevelopmentDomain Driven Development
Domain Driven Development
 
PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]PHPUnit - jak zacząć pisać testy automatyczne [PL]
PHPUnit - jak zacząć pisać testy automatyczne [PL]
 
university day 1
university day 1university day 1
university day 1
 
Tajniki współpracy z (trudnym) klientem
Tajniki współpracy z (trudnym) klientemTajniki współpracy z (trudnym) klientem
Tajniki współpracy z (trudnym) klientem
 
Szkolenie zarządzanie projektami wersja
Szkolenie zarządzanie projektami wersjaSzkolenie zarządzanie projektami wersja
Szkolenie zarządzanie projektami wersja
 
Ale o co Chodzi?
Ale o co Chodzi?Ale o co Chodzi?
Ale o co Chodzi?
 
Strona w rękach klienta: o czym pamiętać, aby ułatwić pracę edytorom treści [PL]
Strona w rękach klienta: o czym pamiętać, aby ułatwić pracę edytorom treści [PL]Strona w rękach klienta: o czym pamiętać, aby ułatwić pracę edytorom treści [PL]
Strona w rękach klienta: o czym pamiętać, aby ułatwić pracę edytorom treści [PL]
 

More from The Software House

Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...The Software House
 
Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?The Software House
 
O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?The Software House
 
Chat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon ChimeChat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon ChimeThe Software House
 
Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?The Software House
 
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWSAnaliza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWSThe Software House
 
Feature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptFeature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptThe Software House
 
Typowanie nominalne w TypeScript
Typowanie nominalne w TypeScriptTypowanie nominalne w TypeScript
Typowanie nominalne w TypeScriptThe Software House
 
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLAutomatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLThe Software House
 
Serverless Compose vs hurtownia danych
Serverless Compose vs hurtownia danychServerless Compose vs hurtownia danych
Serverless Compose vs hurtownia danychThe Software House
 
Testy API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięciTesty API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięciThe Software House
 
Jak skutecznie read model. Case study
Jak skutecznie read model. Case studyJak skutecznie read model. Case study
Jak skutecznie read model. Case studyThe Software House
 
Firestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny KrzemowejFirestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny KrzemowejThe Software House
 
Jak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzachJak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzachThe Software House
 
O łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.jsO łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.jsThe Software House
 
Amazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurzeAmazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurzeThe Software House
 
Od Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduOd Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduThe Software House
 

More from The Software House (20)

Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
Jak kraść miliony, czyli o błędach bezpieczeństwa, które mogą spotkać również...
 
Uszanowanko Podsumowanko
Uszanowanko PodsumowankoUszanowanko Podsumowanko
Uszanowanko Podsumowanko
 
Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?Jak efektywnie podejść do certyfikacji w AWS?
Jak efektywnie podejść do certyfikacji w AWS?
 
O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?O co chodzi z tą dostępnością cyfrową?
O co chodzi z tą dostępnością cyfrową?
 
Chat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon ChimeChat tekstowy z użyciem Amazon Chime
Chat tekstowy z użyciem Amazon Chime
 
Migracje danych serverless
Migracje danych serverlessMigracje danych serverless
Migracje danych serverless
 
Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?Jak nie zwariować z architekturą Serverless?
Jak nie zwariować z architekturą Serverless?
 
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWSAnaliza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
 
Feature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScriptFeature flags na ratunek projektu w JavaScript
Feature flags na ratunek projektu w JavaScript
 
Typowanie nominalne w TypeScript
Typowanie nominalne w TypeScriptTypowanie nominalne w TypeScript
Typowanie nominalne w TypeScript
 
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLAutomatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
 
Serverless Compose vs hurtownia danych
Serverless Compose vs hurtownia danychServerless Compose vs hurtownia danych
Serverless Compose vs hurtownia danych
 
Testy API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięciTesty API: połączenie z bazą danych czy implementacja w pamięci
Testy API: połączenie z bazą danych czy implementacja w pamięci
 
Jak skutecznie read model. Case study
Jak skutecznie read model. Case studyJak skutecznie read model. Case study
Jak skutecznie read model. Case study
 
Firestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny KrzemowejFirestore czyli ognista baza od giganta z Doliny Krzemowej
Firestore czyli ognista baza od giganta z Doliny Krzemowej
 
Jak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzachJak utrzymać stado Lambd w ryzach
Jak utrzymać stado Lambd w ryzach
 
Jak poskromić AWS?
Jak poskromić AWS?Jak poskromić AWS?
Jak poskromić AWS?
 
O łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.jsO łączeniu Storyblok i Next.js
O łączeniu Storyblok i Next.js
 
Amazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurzeAmazon Step Functions. Sposób na implementację procesów w chmurze
Amazon Step Functions. Sposób na implementację procesów w chmurze
 
Od Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduOd Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki kodu
 

Gherkin - jak zostać poetą w IT

  • 1. Gherkin - jak zostać “poetą” w IT
  • 2. O mnie ● Tomasz Górski ● Pracuję na stanowisku testerskim, w firmie The Software House ● Doświadczenie w BDD: Przez okres około sześciu miesięcy zajmowałem się pisaniem testów w Gherkinie, na potrzeby klienta działającego w branży transportowej. Obecnie zaczynam jako QAA.
  • 3. Wstęp 1. O mnie 2. Czym jest BDD? 3. Założenia BDD 4. Czym jest Gherkin? 5. Korzyści stosowania BDD 6. Czym jest historyjka? 7. Historyjka - budowanie kroków 8. Pisanie w Gherkinie 9. Jak NIE pisać w Gherkinie 10. Podsumowanie
  • 4. Wstęp - opis prezentacji Celem prezentacji będzie pokazanie, jak poprawnie pisać testy w stylu BDD. Pokażę jak konstruować zrozumiałe kroki, które będzie można wykorzystać podczas dalszej pracy. Poruszony temat zostanie rozwinięty przez Szymona, od strony technicznej.
  • 5. BDD – Behaviour Driven Development ● proces wytwarzania oprogramowania, powstały na podstawie TDD ● opracowany przez: Dan North
  • 6. BDD – Behaviour Driven Development „Behaviour-driven Development polega na tworzeniu oprogramowania przez opisywanie jego zachowania, z perspektywy jego udziałowców.” Dan North
  • 7. BDD – Behaviour Driven Development Założenia: ● podstawą całego procesu jest utworzenie wymagań ● najważniejszą cechą systemu jest jego zachowanie ● chęć zrozumienie potrzeb klienta ● uzyskanie maksymalnego zrozumienia pomiędzy programistami, analitykami oraz klientem ● automatyzacja
  • 8. Czym jest Gherkin? ● nietechniczny język zrozumiały dla “biznesu” ● wykorzystywany przez Cucumber (narzędzie) ● służy do opisywania zachowania systemu za pomocą przypadków testowych
  • 9. Korzyści stosowania BDD ● zespół programistyczny jest na bieżąco informowany o poprawności kodu ● wspieranie aplikacji w środowisku produkcyjnym (automatyzacja) ● “pomost” pomiędzy biznesem i programistą (Gherkin)
  • 10. Czym jest historyjka? Czyli spisane wymaganie klienta. Składa się z: ● tytułu (powinien być zrozumiały dla każdego) ● narracji ● kryteriów akceptacji
  • 11. Narracja historyjki Powinna zawierać: ● opis funkcjonalności (co ma robić) ● kto jest użytkownikiem ● korzyści jakie przynosi funkcjonalność
  • 12. Kryteria akceptacji - czyli nasz scenariusz Scenariusz ma nazwę oraz zazwyczaj składa się z: ● Given - określa warunki początkowe, przedstawia aktora ● When - opisuje akcje, występujące zdarzenie ● Then - informuje o oczekiwanych rezultatach
  • 13. Historyjka - budowanie kroków Ogólne założenia oraz cele: ● krok powinien być generyczny ● krok powinien być zrozumiały ● krok powinien zawierać informacje o tym co ma się wykonać ● krok powinien zostać napisany w poprawnej angielszczyźnie ● kroki powinny być ze sobą spójne (sposób budowania zdań)
  • 14. Historyjka - budowanie kroków Przykłady ● Given I am logged in as a "$user" ● When I click the "$elementName" element ● Then the "$elementName" element is visible
  • 15. Historyjka - budowanie kroków Przykład implementacji kroku ● When I click the "$elementName" element
  • 16. Pisanie w Gherkinie Przed rozpoczęciem: ● należy sprawdzić wymagania dla konkretnej funkcjonalności ● stworzyć plik .feature (nazwa powinna się pokrywać) ● dodać narrację dla historyjki ● dodać nazwę nowego scenariusza
  • 17. Pisanie w Gherkinie Przykładowe flow: ● sprawdzić istniejące kroki ● składnię nowego kroku najlepiej przygotować podczas pisania scenariusza ● dodać logikę dla nowych kroków
  • 18. Pisanie w Gherkinie Przykład 1 Feature: Account Holder withdraws cash Scenario: Account has enough funds Given the account balance is $100 And the card is valid When the Account Holder requests $20 Then the ATM should dispense $20 And the account balance should be $80 And the card should be returned
  • 19. Pisanie w Gherkinie Przykład 2 Feature: Refund item Scenario: Jeff returns a microwave Given Jeff has bought a microwave for $100 And he has a receipt When he returns the microwave Then Jeff should be refunded $100
  • 20. Jak NIE pisać w Gherkinie Przykład Feature: User actions Scenario: Print ticket Given the login page is displayed When I enter userName And I enter the userPassword And I click the ticket button And I click the enter button And I click the enter button Then the ticket should be printed
  • 21. Podsumowanie ● oszczędność czasu ● aktualna i zrozumiała dokumentacja ● możliwość podpięcia pod Continuous Integration ● szybszy feedback od klienta ● wymuszenie lepszego kontaktu z klientem
  • 22. Zagadka BDD po niemiecku: ● verhaltensgetriebene Softwareentwicklung