Rozwój oparty na zachowaniu - korniszon

Korniszon to język, którego używa się do pisania Features, Scenarios, and Steps. Celem Gherkin jest pomoc w pisaniu konkretnych wymagań.

Aby zrozumieć, co rozumiemy przez konkretne wymagania, rozważ następujący przykład -

Klienci powinni być chronieni przed wprowadzaniem nieprawidłowych danych karty kredytowej.

Przeciw

Jeśli klient wprowadzi numer karty kredytowej, który nie jest dokładnie 16-cyfrowy, przy próbie przesłania formularza powinien zostać ponownie wyświetlony z komunikatem o błędzie informującym o prawidłowej liczbie cyfr.

Ta ostatnia nie jest dwuznaczna, pozwala uniknąć błędów i jest znacznie bardziej testowalna.

Korniszon ma na celu stworzenie bardziej konkretnych wymagań. W Gherkin powyższy przykład wygląda następująco -

Feature

Informacja zwrotna przy wprowadzaniu nieprawidłowych danych karty kredytowej Feature Definition

Podczas testów użytkowników widzieliśmy wiele osób, które popełniają błędy Dokumentacja

Background True for all Scenarios Below

Given Wybrałem przedmiot do kupienia,

And Mam zamiar wprowadzić numer mojej karty kredytowej

Scenario - Zbyt krótki numer karty kredytowejScenario Definition

When Wpisuję numer karty, który ma mniej niż 16 cyfr

And wszystkie inne szczegóły są poprawne

And Przesyłam formularzSteps

Then formularz powinien zostać ponownie wyświetlony

And Powinien zostać wyświetlony komunikat informujący o prawidłowej liczbie cyfr

Format i składnia Gherkin

Pliki Gherkin są zwykłymi plikami tekstowymi i mają rozszerzenie .feature. Każdy wiersz, który nie jest pusty, musi zaczynać się słowem kluczowym Gherkin, po którym następuje dowolny tekst. Słowa kluczowe to -

  • Feature

  • Scenario

  • Biorąc pod uwagę, kiedy, wtedy i, ale (kroki)

  • Background

  • Zarys scenariusza

  • Examples

  • „” ”(Ciągi dokumentów)

  • | (Tabele danych)

  • @ (Tagi)

  • # (Komentarze)

  • *

Funkcja

Plik Featuresłowo kluczowe służy do opisywania funkcji oprogramowania i grupowania powiązanych scenariuszy. Funkcja ma trzy podstawowe elementy -

  • Słowo kluczowe - funkcja.

  • Nazwa funkcji podana w tym samym wierszu, co słowo kluczowe Funkcja.

  • Opcjonalny (ale wysoce zalecany) opis, który może obejmować wiele wierszy, tj. Cały tekst między wierszem zawierającym słowo kluczowe Cecha a wierszem rozpoczynającym się od scenariusza, tła lub konspektu scenariusza.

Oprócz nazwy i opisu Funkcje zawierają listę scenariuszy lub ich zarysów oraz opcjonalne tło.

Zwykle nazywa się nazwę .featureplik, przyjmując nazwę funkcji, konwertując ją na małe litery i zastępując spacje podkreśleniami. Na przykład,

feedback_when_entering_invalid_credit_card_details.feature

W celu zidentyfikowania funkcji w systemie można użyć tak zwanego „szablonu wprowadzania funkcji”.

Aby <osiągnąć jakiś cel> jako <typ użytkownika> potrzebuję <a funkcji>

Opisy

Niektóre części dokumentów Gherkin nie muszą zaczynać się słowem kluczowym.

W wierszach następujących po funkcji, scenariuszu, zarysie scenariusza lub przykładach możesz napisać cokolwiek zechcesz, o ile żadna linia nie zaczyna się od słowa kluczowego. To jest sposób dołączania opisów.

Scenariusz

Aby wyrazić zachowanie systemu, do każdej funkcji dołączasz jeden lub więcej scenariuszy. Typowe jest wyświetlenie od 5 do 20 scenariuszy na funkcję, aby całkowicie określić wszystkie zachowania wokół tej funkcji.

Scenariusze są zgodne z następującym wzorcem -

  • Opisz początkowy kontekst

  • Opisz wydarzenie

  • Opisz oczekiwany wynik

Zaczynamy od kontekstu, opisujemy akcję i sprawdzamy wynik. Odbywa się to za pomocą kroków. Korniszon zawiera trzy słowa kluczowe opisujące każdy z kontekstów, działań i wyników jako kroki.

  • Given - Ustal kontekst

  • When - Wykonaj akcję

  • Then - Sprawdź wynik

Te słowa kluczowe zapewniają czytelność scenariusza.

Example

Scenario - Wypłać pieniądze z konta.

  • Given Mam na koncie 100 $.

  • When Proszę o 20 dolarów.

  • Then Należy wydać 20 dolarów.

Jeśli istnieje wiele plików Given lub When kroki jeden pod drugim, możesz użyć And lub But. Pozwalają szczegółowo określić scenariusze.

Example

Scenario - Spróbuj wypłaty za pomocą skradzionej karty.

  • Given Mam na koncie 100 $.

  • But moja karta jest nieważna.

  • When Proszę o 50 dolarów.

  • Then moja karta nie powinna zostać zwrócona.

  • And Powinienem dostać się do banku.

Tworząc scenariusze, pamiętaj, że „każdy scenariusz musi mieć sens i być możliwy do wykonania niezależnie od innych scenariuszy”. To znaczy -

  • Warunek sukcesu jednego scenariusza nie może zależeć od tego, że wcześniej wykonano inny scenariusz.

  • Każdy scenariusz tworzy swój konkretny kontekst, wykonuje jedną rzecz i testuje wynik.

Takie scenariusze zapewniają następujące korzyści -

  • Testy będą prostsze i łatwiejsze do zrozumienia.

  • Możesz uruchomić tylko podzbiór swoich scenariuszy i nie musisz się martwić o zerwanie zestawu testowego.

  • W zależności od systemu możesz przeprowadzić testy równolegle, skracając czas potrzebny do wykonania wszystkich testów.

Zarys scenariusza

Jeśli musisz pisać scenariusze z kilkoma danymi wejściowymi lub wyjściowymi, możesz w końcu utworzyć kilka scenariuszy, które różnią się tylko ich wartościami. Rozwiązaniem jest skorzystanie z konspektu scenariusza. Aby napisać zarys scenariusza,

  • Zmienne w krokach konspektu scenariusza są oznaczone znakami <i>.

  • Różne wartości zmiennych podano jako przykłady w tabeli.

Example

Przypuśćmy, że piszesz funkcję dodawania dwóch liczb na kalkulatorze.

Feature - Dodaj.

Scenario Outline: Add two numbers.
Given the input "<input>"
When the calculator is run
Then the output should be <output>"
Examples
| input    | output |
| 2+2      | 4      | 
| 98+1     | 99     |
| 255+390  | 645    |

Po sekcji konspektu scenariusza zawsze następuje jedna lub więcej sekcji przykładów, które są kontenerem dla tabeli. Tabela musi mieć wiersz nagłówka odpowiadający zmiennym w krokach konspektu scenariusza. Każdy z poniższych wierszy utworzy nowy scenariusz, wypełniając wartości zmiennych