Gherkin not only for eating - introduction to Gherkin
I'm been working as a developer in tests for 4 years. So I decided that it's time to QA's posts. I would like to share my knowledge with us. If you have proposition of posts, please share in the comment :)
Jako, że pracuję jako tester automatyczny od 4 lat postanowiłam otworzyć cykl wpisów poświęconych działowi QA. Jeśli macie jakieś propozycje na wpisy z zakresu QA, piszcie w komentarzu.
Introduction to Gherkin
Have you ever hear about Gherkin? Did you use it? Did you know what is it? It's easy to learn :)
It's non-technical language which business can understand. It makes for description behavior of the system using test cases. How looks like Gherkin? Below you can see one of the examples.
Czy kiedykolwiek słyszeliście o Gherkinie? Używaliście w pracy? Gherkin jest prosty do nauki! :)
To nietechniczny język, który powinien być zrozumiały dla biznesu. Za pomocą przypadków testowych, służy do opisywania zachowania systemu. Jak wygląda Gherkin? Poniżej możecie zobaczyć fragment kawałka napisanego w Gherkinie.
Feature: Payment
Scenario Outline: Attempt to pay with debit card
Given I have <initial_amount> in my bank account
And my card is valid
When I want to pay <payment>
Then my request should be <accepted>
Then I should have on my bank account <decreased_amount>
Examples:
|initial_amount | payment | accepted | decreased_amount|
| 123 | 250 | false | 123 |
Semantics of Gherkin
Each of lines can't be empty, it must contain one of the following keywords:
Każda linia nie może być pusta, musi zawierać jedno z poniższych słów kluczowych:
- Feature
- As, I want, In order
- Background
- Scenario
- Given, When, Then, And, But
- Example
How looks like syntax of Gherkin?
1. Feature
The word Feature should be started each of files (only comments and tags can be before feature). Afterward can be block with narration in the form of As, I Want, In Order. It's important because it's allowed to understand the context of our test cases. It's not obligatory but it's helpful.
Słowo _feature powinno zawsze rozpoczynać plik (komentarze i tagi to wyjątki, które mogą poprzedzać Feature). Następnie, może (ale nie musi) pojawić się blok związany z narracją w postaci słów kluczowych: As, I Want, In Order. Taki blok jest istotny, ale nie obowiązkowy. Pozwala zrozumieć kontekst wszystkich scenariuszy pisanych w danym pliku.
Example of features
2. Background
The Background isn't also mandatory. It's common block for every test cases in the file. Here, the lines can be started using Given, And, But, because none of activities and validations don't perform.
Blok Background nie jest obowiązkowy. Jest to wspólny blok dla każdego scenariusza w danym pliku. Każda linii, może zaczynać się jedynie od Given, And, But, ponieważ żadna czynność ani walidacja nie ma prawa tutaj się wykonać.
Example of background
3. The same test cases with other keywords
Every scenario starts from using Given, When, Then. It can be exceeded by And, But. We should remember, that Then can't be before When, and When can't be before Given.
Każdy scenariusz rozpoczyna się od Given, When, Then, może zostać rozszerzony przez And, But. Nalezy pamiętać, że Then nie może wystąpić przed When, a When nie może się pojawić przed Given.
4. Scenario Outline
It's like a Scenario but Scenario Outline contains examples. The examples contains information for each iteration of test cases.
Blook spełnia takie same warunki jak Scenario, z tym, że zawiera konkretne wartości dla użytych zmiennych dla każdej iteracji w scenariuszu.

That's all for today. In the next post, I'm going to describe other elements of Gherkin language. I hope that my post was interesting and clear. If you have any questions, feel free to put a comment. See you in the next post!
To tyle na dzisiaj. W następnym poście chciałabym opisać pozostałe elementy Gherkina. Mam nadzieję, że post był interesujący i prosty w zrozumieniu. Jeśli masz pytania, śmiało pisz w komentarzu. Do zobaczenia w następnym poście!
Cool.
Bardzo jestem zainteresowany tym tematem.
Jak wiele da się zrobić w tym Gherkinie? Albo inaczej: gdybym chciał się zająć QA to czy biegłe posługiwanie się Gherkiniem pokrywa jakiś istotny obszar QA, czy też jest to tylko jedno z wielu narzędzi, które trzeba znać?
Samym Gherkinem zrobisz niewiele, ot opiszesz swoje scenariusze w kontekście biznesowym. Ale od tego już jest prosta droga do automatyzacji Twoich testów, a to warto stosować i umieć, chociażby z punktu widzenia obecnego rynku pracy.
Gherkin to furtka do testów automatycznych z uzyciem BDD. Tak jak napisał @imperfect-one, fajne znać. Sama uczestniczę w rozmowach jako ekspert techniczny i wiem, że to bardzo pomaga potencjalnym kandydatom. Niemniej jednak, Gherkin jest bardzo prosty i w szybki sposób mozna go ogarnąć, nie trzeba go znać, aby dostać się do firmy X :)