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.
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”.
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