Język korniszonowy: format, składnia i test korniszonowy w Cucumber
Co to jest język korniszonowy?
Korniszon jest językiem biznesowym, który pomaga opisać zachowania biznesowe bez wchodzenia w szczegóły implementacji. Jest to język specyficzny dla domeny, służący do definiowania testów w Cucumber format specyfikacji. Używa prostego języka do opisywania przypadków użycia i pozwala użytkownikom usuwać szczegóły logiki z testów zachowania.
Tekst w języku Gherkin pełni rolę dokumentacji i szkieletu Twoich testów automatycznych. Format korniszonów opiera się na gramatyce TreeTop, która istnieje w ponad 37 językach. Dlatego możesz napisać swój korniszon w ponad 37 językach mówionych.
Skrypt ten służy dwóm głównym celom:
- Dokumentuje scenariusze użytkownika
- Pisanie testu automatycznego (BDD)
Dlaczego korniszon?
Potrzebę Gherkina można łatwo wyjaśnić, korzystając z poniższych obrazków
Przed Korniszonem
Po Korniszonie
Składnia korniszona
Gherkin jest językiem zorientowanym liniowo, podobnie jak YAML i Python. Każda linia nazywa się step i zaczyna się od słowa kluczowego, a kończy kropką. Do wcięcia używa się tabulatora lub spacji.
W tym skrypcie komentarz można dodać w dowolnym miejscu, ale powinien zaczynać się od znaku #. Czyta każdą linię po usunięciu słów kluczowych Ghrekina zgodnie z podanymi wartościami, kiedy, następnie itp.
Wyglądają typowe kroki Korniszona
Skrypty korniszonowe: łączą ludzką koncepcję przyczyny i skutku z programową koncepcją wejścia/procesu/wyjścia.
Składnia korniszona
Feature: Title of the Scenario Given [Preconditions or Initial Context] When [Event or Trigger] Then [Expected output]
Dokument Gherkin ma rozszerzenie .feature i jest po prostu plikiem testowym z fantazyjnym rozszerzeniem. Cucumber czyta dokument Gherkin i wykonuje test w celu sprawdzenia, czy oprogramowanie zachowuje się zgodnie ze składnią Gherkina.
Ważne terminy używane w Korniszonie
- Cecha
- Tło
- Scenariusz
- Biorąc pod uwagę,
- Kiedy
- Następnie
- oraz
- Ale
- Przykłady zarysu scenariusza
W przypadku nazw funkcji stosowana jest konwencja nazewnictwa. Jednakże nie ma w nim ustalonych reguł Cucumber o imionach.
Cecha
Plik powinien mieć rozszerzenie .feature, a każdy plik funkcji powinien mieć tylko jedną funkcję. Słowo kluczowe funkcji jest z Cechą: a po tym dodaniu zostanie zapisana spacja i nazwa funkcji.
Scenariusz
Każdy plik funkcji może mieć wiele scenariuszy, a każdy scenariusz zaczyna się od Scenariusz:, po którym następuje nazwa scenariusza.
Tło
Słowo kluczowe tła pomaga dodać kontekst do scenariusza. Może zawierać pewne kroki scenariusza, ale jedyną różnicą jest to, że należy go uruchomić przed każdym scenariuszem.
Biorąc pod uwagę,
Użycie słowa kluczowego Give ma na celu wprowadzenie systemu w znajomy stan, zanim użytkownik rozpocznie interakcję z systemem. Można jednak pominąć zapisywanie interakcji użytkownika w podanych krokach, jeśli podano je w kroku „Warunek wstępny”.
Składnia:
Given
Given - a test step that defines the 'context Given I am on "/."
Kiedy
Kiedy krokiem jest zdefiniowanie akcji wykonywanej przez użytkownika.
Składnia:
When
A When - a test step that defines the 'action' performed When I perform "Sign In."
Następnie
Użycie słowa kluczowego „wtedy” polega na zobaczeniu wynik po akcji w którym kroku. Można jednak zweryfikować jedynie zauważalne zmiany.
Składnia:
Then
Then - test step that defines the 'outcome.' Then I should see "Welcome Tom."
I ale
Możesz mieć wiele podanych „When” lub „Then”.
Składnia:
But
A But - additional test step which defines the 'action' 'outcome.' But I should see "Welcome Tom."
And - additional test step that defines the 'action' performed And I write "EmailAddress" with "Tomjohn@gmail.com."
Biorąc pod uwagę, Kiedy, Następnie i, ale są etapami testowymi. Można ich używać zamiennie. Interpreter nie wyświetla żadnego błędu. Jednak po przeczytaniu z pewnością nie będą miały żadnego „sensu”.
Given The login page is opening When I input username, password and click the Login button Then I am on the Homepage
Przykłady korniszonów
1 przykład:
Feature: Login functionality of social networking site Facebook. Given: I am a facebook user. When: I enter username as username. And I enter the password as the password Then I should be redirected to the home page of facebook
Powyższy scenariusz dotyczy funkcji zwanej logowaniem użytkownika.
Korniszon przeanalizuje każdy krok zapisany w pliku definicji kroku. Dlatego kroki są podane w pliku funkcji, a plik definicji kroku powinien być zgodny.
2 przykład:
Feature: User Authentication Background: Given the user is already registered to the website Scenario: Given the user is on the login page When the user inputs the correct email address And the user inputs the correct password And the user clicks the Login button Then the user should be authenticated And the user should be redirected to their dashboard And the user should be presented with a success message
Najlepsze praktyki stosowania korniszona
- Każdy scenariusz należy wykonać osobno
- Każda funkcja powinna być możliwa do wykonania
- Informacje o krokach powinny być wyświetlane niezależnie
- Połącz swój scenariusz ze swoimi wymaganiami
- Śledź w pełni, jakie scenariusze powinny zostać uwzględnione w dokumencie wymagań
- Twórz modułowe i łatwe do zrozumienia kroki
- Spróbuj połączyć wszystkie typowe scenariusze
Zalety korniszona
- Korniszon jest na tyle prosty, że niebędący programistami mogą go zrozumieć
- Programiści mogą go wykorzystać jako bardzo solidną bazę do rozpoczęcia testów
- Dzięki temu Historie użytkowników są łatwiejsze do przyswojenia
- Skrypt korniszonowy może być łatwo zrozumiały dla kadry kierowniczej i programistów
- Gherkin Testing jest ukierunkowany na wymagania biznesowe
- Znaczna część specyfikacji funkcjonalnych jest napisana w formie historii użytkownika
- Nie musisz być ekspertem, aby zrozumieć mały zestaw poleceń Gherkin
- Przypadki testowe Gherkin łączą testy akceptacyjne bezpośrednio z testami automatycznymi
- Styl pisania przypadków testowych ułatwia ponowne wykorzystanie kodu w innych testach
Wady korniszona
- Wymaga wysokiego poziomu zaangażowania biznesowego i współpracy
- Może nie działać dobrze we wszystkich scenariuszach
- Źle napisane testy mogą łatwo zwiększyć koszty utrzymania testów
Podsumowanie
- Korniszon to format specyfikacji ogórków
- Gherkin jest językiem zorientowanym liniowo, podobnie jak YAML i Python
- Gherkin Scripts łączy ludzką koncepcję przyczyny i skutku z programową koncepcją danych wejściowych/procesu i wyników
- Cecha, Tło, Scenariusz, Biorąc pod uwagę, Kiedy, Następnie i Ale są ważne w Korniszonie
- W Gherkin każdy scenariusz powinien być wykonywany osobno
- Największą zaletą Gherkina jest na tyle prosta, że mogą ją zrozumieć osoby niebędące programistami
- Test Korniszona może nie działać dobrze we wszystkich typach scenariuszy