Szukaj…


Wprowadzenie

Korniszon jest czytelnym językiem dla automatyzacji testów i dokumentacji testów. Jest rozumiany przez Cucumber i razem istnieje jako narzędzie rozwoju sterowane zachowaniem.

Składnia

  • Cecha: to słowo kluczowe oznacza, że poniżej znajduje się podstawowy opis lub nazwa testowanej lub dokumentowanej funkcji.
  • Tło: to słowo kluczowe oznacza kroki, które zostaną uruchomione przed każdym scenariuszem w obiekcie.
  • Scenariusz: to słowo kluczowe reprezentuje nazwę lub podstawowy opis konkretnego scenariusza testującego tę funkcję.
  • Zarys scenariusza: to słowo kluczowe oznacza, że scenariusz zostanie uruchomiony N razy dla każdego argumentu wymienionego w przykładach jawnie przekazanych przez nazwę kolumny owiniętą w nawiasach kątowych.
  • Przykłady: to słowo kluczowe odnotowuje listę statycznych argumentów, które zostaną przekazane do konspektu scenariusza.
  • Biorąc pod uwagę: to słowo kluczowe reprezentuje dany krok lub warunek wstępny, który należy przyjąć przed kontynuowaniem. W paradygmacie Arrange, Act, Assert podana reprezentuje „Arrange”.
  • Kiedy: to słowo kluczowe reprezentuje krok kiedy lub zachowanie, które ma zostać potwierdzone. W paradygmacie „Arange, Act”, „Assert”, podana reprezentuje „Akt”.
  • Następnie: to słowo kluczowe reprezentuje krok wtedy, czyli innymi słowy, krok, w którym wynik zachowania jest sprawdzany. W paradygmacie Arrange, Act, Assert podana reprezentuje „Assert”.
  • Oraz: to słowo kluczowe jest używane w połączeniu z dowolnym z powyższych słów kluczowych. Jeśli masz dwa podane wyrażenia, zamiast jednoznacznego wywołania Given dwa razy, możesz powiedzieć „Biorąc pod uwagę A i B”.

Podstawy

Ten przykład omówi podstawową strukturę pliku funkcji Ogórek w Korniszonie. Pliki funkcji używają kilku słów kluczowych w podstawowej składni.

Spójrzmy na podstawowe słowa kluczowe:

  • Cecha: to słowo kluczowe oznacza, że poniżej znajduje się podstawowy opis lub nazwa testowanej lub dokumentowanej funkcji.
  • Scenariusz: to słowo kluczowe reprezentuje nazwę lub podstawowy opis konkretnego scenariusza testującego tę funkcję.
  • Dane słowo kluczowe reprezentuje dany krok lub warunek wstępny, który należy przyjąć przed kontynuowaniem. W paradygmacie Arrange, Act, Assert podana reprezentuje „Arrange”.
  • Kiedy to słowo kluczowe reprezentuje krok kiedy lub zachowanie, które ma zostać potwierdzone. W paradygmacie „Arange, Act”, „Assert”, podana reprezentuje „Akt”.
  • To słowo kluczowe oznacza następnie krok, czyli innymi słowy, etap, w którym wynik zachowania jest sprawdzany. W paradygmacie Arrange, Act, Assert podana reprezentuje „Assert”.
  • A Ten parametr jest używany w połączeniu z dowolnym z powyższych słów kluczowych. Jeśli masz dwa podane wyrażenia, zamiast jednoznacznego wywołania Given dwa razy, możesz powiedzieć „Biorąc pod uwagę A i B”.
  • Ale to słowo kluczowe jest używane łącznie z Danym , Kiedy i Następnie, aby wskazać, że coś nie powinno się wydarzyć. To A But not B.

Wszystkie słowa kluczowe muszą znajdować się w nowym wierszu i muszą być pierwszym słowem w nowym wierszu, aby mogły zostać rozpoznane przez analizator korniszonu. Słowa kluczowe Feature i Scenario muszą znajdować się bezpośrednio po dwukropku, jak pokazano w poniższym przykładzie. Biorąc pod uwagę, kiedy, a następnie i nie wymagają dwukropka.

Oprócz słów kluczowych możesz pisać opisy i komentarze. Opisy występują po słowie kluczowym, ale w tym samym wierszu, gdy komentarze pojawiają się w wierszach pod słowami kluczowymi. Podczas pisania komentarzy do Funkcji zwykle podaje się wyraźne reguły określające krawędzie i warunki, które prowadzą do różnych wyników zachowań.

Feature: Product Login
    As a user, I would like to be able to use my credentials to successfully 
    login. 
    
    Rules:
    - The user must have a valid username
    - The user must have a valid password
    - The user must have an active subscription 
    - User is locked out after 3 invalid attempts
    - User will get a generic error message following 
      login attempt with invalid credentials 

    Scenario: The user successfully logs in with valid credentials 
        This scenario tests that a user is able to successfully login
        provided they enter a valid username, valid password, and 
        currently have an active subscription on their account. 

        Given the user is on the login page
        When the user signs in with valid credentials
        Then the user should be logged in

Sparametryzowane kroki

Pisząc Korniszon, mogą zdarzyć się sytuacje, w których chcesz sparametryzować swoje kroki w celu ponownego wykorzystania przez inżyniera, który wdraża plany testów. Kroki otrzymują parametry poprzez grupy przechwytujące wyrażenia regularne. (Inżynieria Uwaga: Jeśli nie ma dopasowania parametrów dla każdej grupy przechwytywania w wyrażeniach regularnych można oczekiwać „CucumberException: arity niedopasowania” do rzucania) W poniższym przykładzie, zdecydowaliśmy się owinąć argumentów w cudzysłowach, a także jako akceptuj liczby całkowite jako argumenty.

 Feature: Product Login
    As a user, I would like to be able to use my credentials to successfully 
    login. 
    
    Rules:
    - The user must have a valid username
    - The user must have a valid password
    - The user must have an active subscription 
    - User is locked out after 3 invalid attempts
    - User will get a generic error message following 
      login attempt with invalid credentials 

    Scenario: The user successfully logs in with valid credentials 
        This scenario tests that a user is able to successfully login
        provided they enter a valid username, valid password, and 
        currently have an active subscription on their account. 

        Given the user is on the login page
        When the user signs in with "valid" credentials
        Then the user should be logged in

    Scenario: The user attempts to log in with invalid credentials 
        This scenario tests that a user is not able to log in when
        they enter invalid credentials

        Given the user is on the login page
        When the user signs in with "invalid" credentials
        Then the user should be logged in

    Scenario: The user is locked out after too many failed attempts
        This scenario validates that the user is locked out
        of their account after failing three consecutive 
        attempts to log in

        Given the user is on the login page
        When the user fails to log in 3 times
        Then the user should be locked out of their account

Tło funkcji

Jak można zauważyć w powyższym przykładzie, przepisujemy ten sam krok wiele razy:

Given the user is on the login page

Może to być wyjątkowo uciążliwe, szczególnie jeśli mamy więcej niż jeden dany krok, który jest ponownie wykorzystywany. Korniszon zapewnia rozwiązanie tego problemu, podając nam inne słowo kluczowe do pracy z: Tło:.

Słowo kluczowe w tle służy do uruchomienia kroków zadeklarowanych pod nim przed każdym scenariuszem w Funkcji. Pamiętaj, aby nie dodawać kroku w tle, chyba że masz pewność, że jest to konieczne w każdym scenariuszu. Podobnie jak inne słowa kluczowe, Tło zawiera opis lub nazwę, a poniżej mogą znajdować się komentarze. Podobnie jak funkcja i scenariusz, tło musi być poprzedzone dwukropkiem.

Feature: Product Login
    As a user, I would like to be able to use my credentials to successfully 
    login. 
    
    Rules:
    - The user must have a valid username
    - The user must have a valid password
    - The user must have an active subscription 
    - User is locked out after 3 invalid attempts
    - User will get a generic error message following 
      login attempt with invalid credentials 

    Background: The user starts out on the login page
        Given the user is on the login page

    Scenario: The user successfully logs in with valid credentials 
        This scenario tests that a user is able to successfully login
        provided they enter a valid username, valid password, and 
        currently have an active subscription on their account. 

        When the user signs in with "valid" credentials
        Then the user should be logged in

    Scenario: The user attempts to log in with invalid credentials 
        This scenario tests that a user is not able to log in when
        they enter invalid credentials

        When the user signs in with "invalid" credentials
        Then the user should be logged in

    Scenario: The user is locked out after too many failed attempts
        This scenario validates that the user is locked out
        of their account after failing three consecutive 
        attempts to log in

        When the user fails to log in 3 times
        Then the user should be locked out of their account

Zarys scenariusza

W niektórych przypadkach możesz chcieć wielokrotnie powtarzać ten sam scenariusz, zastępując argumenty. W tym przypadku Korniszon udostępnia kilka nowych słów kluczowych, aby uwzględnić tę sytuację, Zarys scenariusza: i Przykład:. Słowo kluczowe Schemat scenariusza informuje Cucumber, że scenariusz zostanie uruchomiony wielokrotnie, zastępując argumenty z listy. Słowo kluczowe Przykłady jest wywoływane przed jawnym zanotowaniem listy. Argumenty dotyczące konturów scenariuszy powinny być owinięte w nawiasy kątowe. W poniższym przykładzie zwróć uwagę, że nazwy argumentów owinięte w nawiasach kątowych odpowiadają nazwom kolumn wymienionym w sekcji Przykłady. Każda kolumna jest oddzielona pionowymi paskami, z nazwami kolumn w pierwszym rzędzie.

Feature: Product Login
    As a user, I would like to be able to use my credentials to successfully 
    login. 
    
    Rules:
    - The user must have a valid username
    - The user must have a valid password
    - The user must have an active subscription 
    - User is locked out after 3 invalid attempts
    - User will get a generic error message following 
      login attempt with invalid credentials 

    Background: The user starts out on the login page
        Given the user is on the login page

    Scenario Outline: The user successfully logs in with their account
         This scenario outlines tests in which various users attempt
         to sign in successfully 

         When the user enters their <username>
         And the user enters their <password>
         Then the user should be successfully logged on

         Examples:
         | username | password |
         | frank    | 1234     |
         | jack     | 4321     |

Tagi

Do celów dokumentacji możesz filtrować plany testów lub scenariusze według kategorii. Programiści mogą chcieć przeprowadzać testy w oparciu o te same kategorie. Korniszon pozwala kategoryzować funkcje, a także poszczególne scenariusze za pomocą tagów. W poniższym przykładzie zauważ, że powyższym słowem kluczowym Feature jest tag „@Automation”. Korniszon rozpoznaje to jako znacznik użytkownika symbolu „@”. W tym przykładzie inżynier chce wyjaśnić, że testy te są wykorzystywane do automatyzacji, gdzie nie każdy test jest w stanie zautomatyzować, niektóre testy muszą być wykonane ręcznie w ramach kontroli jakości.

Zauważ też, że tag @Production został dodany do scenariusza blokowania użytkownika. W tym przykładzie dzieje się tak, ponieważ ten scenariusz jest aktywny tylko w środowisku produkcyjnym aplikacji. Deweloperzy nie chcą, aby ich konta w piaskownicy były blokowane podczas programowania. Te tagi pozwalają im wymusić, aby ten test był przeprowadzany tylko w środowisku produkcyjnym.

Na koniec Zarys scenariusza ma tag @Staging. Na potrzeby tego przykładu wynika to z faktu, że używane konta są kontami przejściowymi i nie będą działać w innych środowiskach. Podobnie jak tag @Production, zapewnia to, że testy te będą uruchamiane tylko w środowisku pomostowym.

To tylko kilka przykładów tego, gdzie, jak i dlaczego możesz używać tagów. Ostatecznie te tagi będą miały znaczenie dla Ciebie i programistów i mogą być dowolne i służyć do kategoryzacji według własnego uznania.

@Automation
Feature: Product Login
    As a user, I would like to be able to use my credentials to successfully 
    login. 
    
    Rules:
    - The user must have a valid username
    - The user must have a valid password
    - The user must have an active subscription 
    - User is locked out after 3 invalid attempts
    - User will get a generic error message following 
      login attempt with invalid credentials 

    Background: The user starts out on the login page
        Given the user is on the login page

    Scenario: The user successfully logs in with valid credentials 
        This scenario tests that a user is able to successfully login
        provided they enter a valid username, valid password, and 
        currently have an active subscription on their account. 

        When the user signs in with "valid" credentials
        Then the user should be logged in

    Scenario: The user attempts to log in with invalid credentials 
        This scenario tests that a user is not able to log in when
        they enter invalid credentials

        When the user signs in with "invalid" credentials
        Then the user should be logged in

    @Production
    Scenario: The user is locked out after too many failed attempts
        This scenario validates that the user is locked out
        of their account after failing three consecutive 
        attempts to log in

        When the fails to log in 3 times
        Then the user should be locked out of their account

    @Staging
    Scenario Outline: The user successfully logs in with their account
         This scenario outlines tests in which various users attempt
         to sign in successfully 

         When the user enters their <username>
         And the user enters their <password>
         Then the user should be successfully logged on

         Examples:
         | username | password |
         | frank    | 1234     |
         | jack     | 4321     |

Porady z korniszonu

  • Każdy scenariusz testuje jedno zachowanie
  • Scenariusze są pisane w sposób deklaratywny
  • Unikaj przypadkowych szczegółów w scenariuszu
  • Pomiń oczywiste
  • Unikaj kroków łączących
  • Krótkie scenariusze
  • Nie musisz mieć wielu scenariuszy w tej samej funkcji
  • Użyj opisowych nazw scenariuszy
  • Masz tylko jeden krok
  • Użyj „powinien” w krokach Następnie


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow