Ricerca…


introduzione

Gherkin è un linguaggio leggibile dagli utenti per l'automazione dei test e la documentazione di test. È compreso da Cucumber e insieme esiste come uno strumento di sviluppo guidato dal comportamento.

Sintassi

  • Funzionalità: questa parola chiave indica che quanto segue è una descrizione o un nome di base della funzionalità testata o documentata.
  • Sfondo: questa parola chiave indica i passaggi che verranno eseguiti prima di ogni scenario nella funzione.
  • Scenario: questa parola chiave rappresenta il nome o la descrizione di base di uno scenario particolare che verifica la funzione.
  • Scenario Struttura: questa parola chiave significa che lo scenario verrà eseguito N volte per ogni argomento elencato negli esempi esplicitamente passati per nome di colonna racchiuso tra parentesi angolate.
  • Esempi: questa parola chiave prende nota dell'elenco di argomenti statici che verranno passati in uno schema di scenario.
  • Dato: questa parola chiave rappresenta un determinato passo, o presupposto che si presume prima di continuare. Nel paradigma Disponi, Agita, Assert, indicato rappresenta "Disponi".
  • Quando: questa parola chiave rappresenta un passo quando, o il comportamento che deve essere dichiarato contro. Nel paradigma Disponi, Agisci, Assert, indicato rappresenta "Act".
  • Quindi: questa parola chiave rappresenta un passaggio, o in altre parole, il passo in cui viene convalidato il risultato di un comportamento. Nel paradigma Disponi, Agisci, Assert, indicato rappresenta "Assert".
  • E: questa parola chiave viene utilizzata insieme a una qualsiasi delle parole chiave sopra. Se hai due dichiarazioni date, invece di chiamare esplicitamente Dato due volte, puoi dire "Dato A e B".

Le basi

Questo esempio analizzerà la struttura di base di un file di feature Cucumber in Gherkin. I file di caratteristiche utilizzano più parole chiave nella sintassi di base.

Vediamo le parole chiave di base:

  • Funzionalità: questa parola chiave indica che quanto segue è una descrizione o un nome di base della funzionalità testata o documentata.
  • Scenario: questa parola chiave rappresenta il nome o la descrizione di base di uno scenario particolare che verifica la funzione.
  • Data questa parola chiave rappresenta un determinato passo, o presupposto che si presume prima di continuare. Nel paradigma Disponi, Agita, Assert, indicato rappresenta "Disponi".
  • Quando questa parola chiave rappresenta un passo quando, o il comportamento che deve essere affermato contro. Nel paradigma Disponi, Agisci, Assert, indicato rappresenta "Act".
  • Quindi questa parola chiave rappresenta un passaggio, o in altre parole, il passo in cui viene convalidato il risultato di un comportamento. Nel paradigma Disponi, Agisci, Assert, indicato rappresenta "Assert".
  • E questa parola chiave viene utilizzata insieme a una qualsiasi delle parole chiave sopra. Se hai due dichiarazioni date, invece di chiamare esplicitamente Dato due volte, puoi dire "Dato A e B".
  • Ma questa parola chiave viene utilizzata insieme a Given , When e Then per indicare che qualcosa non dovrebbe accadere. Quindi A But not B.

Tutte le parole chiave devono essere su una nuova riga e devono essere la prima parola su una nuova riga per essere riconosciute dal parser Gherkin. Le parole chiave Feature e Scenario devono avere subito due punti, come nell'esempio seguente. Dato, quando, poi, e E non richiedono due punti.

Oltre alle parole chiave, puoi scrivere descrizioni e commenti. Le descrizioni si verificano dopo la parola chiave ma sulla stessa riga, dove i commenti si presentano sulle linee sotto le parole chiave. Quando si scrivono commenti di feature, è consuetudine fornire regole esplicite che definiscano i bordi e le condizioni che conducono a diversi esiti di comportamenti.

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

Passi parametrizzati

Durante la scrittura di Gherkin, ci possono essere momenti in cui si desidera parametrizzare i passaggi per la riusabilità da parte dell'ingegnere che sta implementando i piani di test. I passaggi ricevono i parametri attraverso i gruppi di acquisizione di espressioni regolari. ( Nota di progettazione: se non si dispone di parametri di corrispondenza per ciascun gruppo di acquisizione nell'espressione regolare, è possibile che venga generata una "CucumberException: mismatch di Arity") Nell'esempio seguente, abbiamo deciso di includere gli argomenti tra virgolette doppie come accettare gli interi come argomenti.

 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

Feature Background

Come avrai notato nell'esempio sopra, stiamo riscrivendo lo stesso passo più volte:

Given the user is on the login page

Questo può essere eccezionalmente noioso, specialmente se abbiamo più di un dato passaggio che viene riutilizzato. Gherkin fornisce una soluzione per questo dandoci un'altra parola chiave con cui lavorare: Background:.

La parola chiave background serve per eseguire i passaggi dichiarati al di sotto di esso prima di ogni scenario nella Feature. Assicurati di non aggiungere passaggi in background a meno che tu non sia positivo, è necessario per ogni scenario. Come le altre parole chiave, Sfondo è seguito da una descrizione o nome e può contenere commenti sotto di esso. Molto simile a Feature and Scenario, Background deve essere preceduto da due punti.

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

Scenario

In alcuni casi è possibile ripetere lo stesso scenario più e più volte, sostituendo gli argomenti. In questo caso, Gherkin fornisce diverse nuove parole chiave per soddisfare questa situazione, Profilo Scenario: ed Esempio:. La parola chiave Scenario Outline indica a Cucumber che lo scenario verrà eseguito più volte sostituendo gli argomenti da un elenco. La parola chiave Examples viene chiamata prima che l'elenco sia esplicitamente notificato. Gli argomenti per i contorni degli scenari devono essere racchiusi tra parentesi angolari. Nell'esempio seguente, si noti che i nomi degli argomenti racchiusi tra parentesi angolari corrispondono ai nomi delle colonne elencati in Esempi. Ogni colonna è separata da barre verticali, con i nomi delle colonne sulla prima riga.

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     |

tag

Ai fini della documentazione, è possibile filtrare i piani di test o gli scenari per categorie. Gli sviluppatori potrebbero voler eseguire test basati su quelle stesse categorie. Gherkin consente di classificare le funzionalità e i singoli scenari tramite l'utente dei tag. Nell'esempio seguente, si noti quanto sopra la parola chiave Feature è il tag "@Automation". Gherkin riconosce questo come un tag dall'utente del simbolo "@". In questo esempio, l'ingegnere vuole chiarire che questi test sono utilizzati per l'automazione, dove non tutti i test sono automatizzati, alcuni test devono essere eseguiti dal QA manuale.

Si noti inoltre che il tag @Production è stato aggiunto allo scenario testing user lock out. In questo esempio, questo è perché questo scenario è attivo solo nell'ambiente di produzione dell'applicazione. Gli sviluppatori non vogliono che i loro account sandbox vengano bloccati durante lo sviluppo. Questo tag consente loro di far rispettare questo test solo con l'ambiente di produzione.

Infine, lo Scenario Outline ha il tag @Staging. Ai fini di questo esempio, questo è dovuto al fatto che gli account utilizzati sono account di gestione temporanea e non funzioneranno negli altri ambienti. Come il tag @Production, ciò garantisce che questi test vengano eseguiti solo nell'ambiente di gestione temporanea.

Questi sono solo alcuni esempi di dove, come e perché potresti usare i tag. In definitiva questi tag avranno significato per te e per gli sviluppatori e possono essere qualsiasi cosa e utilizzati per categorizzare come ritieni opportuno.

@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     |

Punte di cetriolino

  • Ogni scenario verifica un comportamento
  • Gli scenari sono scritti in modo dichiarativo
  • Evita dettagli accidentali all'interno dello scenario
  • Ometti l'ovvio
  • Evita i passaggi congiuntivi
  • Mantieni i tuoi scenari brevi
  • Non avere molti scenari nella stessa funzione
  • Usa nomi di scenari descrittivi
  • Ne hai solo uno Quando passo
  • Utilizzare il "dovrebbe" in Quindi passaggi


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow