cucumber gherkin tutorial
Ten samouczek informacyjny wyjaśnia zalety Cucumber Gherkin Framework i jak pisać skrypty automatyzacji w języku Gherkin z jasnymi przykładami:
Cucumber to narzędzie oparte na frameworku Behavior Driven Development (BDD). BDD to metodologia umożliwiająca zrozumienie funkcjonalności aplikacji w postaci prostej reprezentacji tekstowej.
Głównym celem platformy Behavior Driven Development jest sprawienie, aby różne role projektowe, takie jak analitycy biznesowi, zapewnienie jakości, programiści itp., Zrozumieli aplikację bez zagłębiania się w aspekty techniczne.
Narzędzie Cucumber jest zwykle używane w czasie rzeczywistym do pisania testów akceptacyjnych aplikacji. Narzędzie Cucumber zapewnia obsługę wielu języków programowania, takich jak Java, Ruby, .Net itp. Może być zintegrowane z wieloma narzędziami, takimi jak Selenium, Capybara itp.
Czego się nauczysz:
Co to jest korniszon?
Gherkin to język używany przez narzędzie Cucumber. Jest to prosta angielska reprezentacja zachowania aplikacji. Cucumber używa koncepcji plików funkcji do celów dokumentacyjnych. Treść plików funkcji jest napisana w języku Gherkin.
W kolejnych tematach dowiemy się więcej o zaletach platformy Cucumber Gherkin, Integracji Cucumber z Selenium, Tworzenie pliku funkcji i odpowiadającego mu pliku definicji kroku oraz przykładowego pliku funkcji.
Wspólne warunki dla ogórka ogórkowego ramy
Framework Cucumber Gherkin używa pewnych słów kluczowych, które są niezbędne do napisania pliku funkcji.
W plikach funkcji najczęściej używane są następujące terminy:
# 1) Funkcja:
Plik funkcji musi zawierać opis wysokiego poziomu testowanej aplikacji (AUT). Pierwsza linia pliku funkcji musi zaczynać się słowem kluczowym „Funkcja” następującym po opisieAplikacjapod testem. Zgodnie ze standardami określonymi przez Cucumber, plik funkcji musi zawierać następujące trzy elementy jako pierwszy wiersz.
- Słowo kluczowe funkcji
- Nazwa funkcji
- Opis funkcji (opcjonalnie)
Po słowie kluczowym funkcji musi następować nazwa funkcji. Może zawierać opcjonalną sekcję opisu, która może obejmować wiele wierszy pliku funkcji. Plik funkcji ma rozszerzenie .feature.
# 2) Scenariusz:
Scenariusz to testowa specyfikacja testowanej funkcjonalności. W idealnym przypadku plik elementu może zawierać jeden lub więcej scenariuszy jako część elementu. Scenariusz obejmuje wiele kroków testowych. Zgodnie ze standardami ogórkowymi scenariusz musi obejmować 3-5 kroków testowych, ponieważ długie scenariusze mają tendencję do tracenia swojej mocy ekspresyjnej, gdy liczba kroków wzrasta.
Scenariusz może obejmować następujące kroki:
- Czynność do wykonania przez użytkownika.
- Oczekiwane wyniki działania.
W języku Gherkin scenariusz musi zawierać następujące słowa kluczowe:
- Dany
- Gdy
- Następnie
- I
Dany:
Słowo kluczowe Given jest używane do określenia warunków wstępnych wykonania określonego scenariusza. Scenariusz może zawierać więcej niż jedno określone stwierdzenia lub może nie być podanych instrukcji dla scenariusza.
Gdy:
To słowo kluczowe służy do określenia akcji lub zdarzenia wykonywanego przez użytkownika, takiego jak kliknięcie przycisku, wprowadzenie danych do pola tekstowego itp. W jednym scenariuszu może być wiele instrukcji when.
Następnie:
Następnie słowo kluczowe służy do określenia spodziewanego wyniku akcji wykonanej przez użytkownika. W idealnym przypadku po słowie kluczowym When musi występować słowo kluczowe Then, aby zrozumieć oczekiwany wynik działań użytkownika.
I:
Słowo kluczowe jest używane jako słowo kluczowe w połączeniu do łączenia wielu instrukcji. Na przykład, Wiele stwierdzeń Given i When w scenariuszu można łączyć za pomocą słowa kluczowego „And”.
# 3) Zarys scenariusza:
Zarys scenariusza jest sposobem parametryzacji scenariuszy.
c ++ konwertuj znak na ciąg
Jest to idealnie używane, gdy ten sam scenariusz musi zostać wykonany dla wielu zestawów danych, ale kroki testowe pozostają takie same. Po konspekcie scenariusza należy umieścić słowo kluczowe „Przykłady”, które określa zestaw wartości dla każdego parametru.
Poniżej znajduje się przykład, aby zrozumieć koncepcję konspektu scenariusza:
Przykład:
Zarys scenariusza: Prześlij plik
Dany że użytkownik jest na ekranie przesyłania plików.
Gdy użytkownik klika przycisk Przeglądaj.
I użytkownik wchodzi do pola tekstowego przesyłania.
I użytkownik klika przycisk Enter.
Następnie sprawdza, czy przesyłanie pliku się powiodło.
Przykłady:
| nazwa pliku |
| plik1 |
| plik2 |
Parametry w zarysie scenariusza należy określić za pomocą znaków „”. Lista wartości danych dla parametru musi być określona za pomocą symbolu Pipe (|).
# 4) Tło:
Słowo kluczowe w tle służy do grupowania wielu podanych instrukcji w jedną grupę.
Jest to zwykle używane, gdy ten sam zestaw danych instrukcji jest powtarzany w każdym scenariuszu pliku funkcji. Zamiast wielokrotnie podawać dane stwierdzenia dla każdego scenariusza, można je określić za pomocą słowa kluczowego „Tło” przed pierwszym scenariuszem.
Przykład:
Tło:
Podany użytkownik znajduje się na stronie logowania do aplikacji
Zalety Cucumber Gherkin Framework
Poniżej podano zalety platformy Cucumber Gherkin, która sprawia, że Cucumber jest idealnym wyborem dla szybko rozwijającej się metodologii Agile w dzisiejszym świecie korporacyjnym:
- Cucumber to narzędzie typu open source.
- Reprezentacja zwykłego tekstu ułatwia użytkownikom nietechnicznym zrozumienie scenariuszy.
- Wypełnia lukę komunikacyjną między różnymi interesariuszami projektu, takimi jak analitycy biznesowi, programiści i personel ds. Zapewnienia jakości.
- Przypadki testowe automatyzacji opracowane przy użyciu narzędzia Cucumber są łatwiejsze do utrzymania i zrozumienia.
- Łatwa integracja z innymi narzędziami, takimi jak selen i kapibara.
Integracja ogórka z selenem
Ogórek i selen to dwa najpotężniejsze narzędzia do testowania funkcjonalnego. Integracja Cucumber z Selenium Webdriver pomaga różnym nietechnicznym członkom zespołu projektowego w zrozumieniu przepływu aplikacji.
Poniżej podano kroki, które należy wykonać, aby zintegrować Cucumber z Selenium Webdriver:
Krok 1:
Ogórek można zintegrować z Selenium Webdriver, pobierając niezbędne pliki JAR.
Poniżej znajduje się lista plików JAR, które należy pobrać, aby używać Cucumber z Selenium Webdriver:
- zasięg-2.1.1.jar
- ogórek-rdzeń-1.2.2.jar
- cucumber-java-1.2.2.jar
- ogórek-junit-1.2.2.jar
- ogórek-jvm-deps-1.0.3.jar
- ogórek-raportowanie-0.1.0.jar
- korniszon-2.12.2.jar
- hamcrest-core-1.3.jar
- junit-4.11.jar
Powyższe pliki JAR można pobrać z Maven stronie internetowej .
Każdy z powyższych plików JAR należy pobrać indywidualnie z powyższej witryny internetowej.
Krok 2:
Utwórz nowy projekt w Eclipse i dodaj powyższe pliki JAR do projektu. Aby dodać pliki JAR do projektu, kliknij prawym przyciskiem myszy plik projekt -> Ścieżka budowania -> Konfiguruj ścieżkę budowania.
Kliknij Dodaj zewnętrzne pliki JAR i dodaj listę powyższych plików JAR do projektu.
Krok 3:
Przed utworzeniem plików funkcji i plików definicji kroków musimy zainstalować wtyczkę Natural do Eclipse. Można to zrobić, kopiując i wklejając plik URL na Pomoc -> Zainstaluj nowe oprogramowanie -> URL
najlepszy darmowy program do czyszczenia rejestru systemu Windows 10
Kliknij na Następny przycisk aby zainstalować wtyczkę w Eclipse.
Tworzenie pliku funkcji
Utwórz osobne foldery dla plików elementów i plików definicji kroków w strukturze projektu. Pliki definicji Step zawierają linie kodujące Java, a plik funkcji zawiera instrukcje w języku angielskim w postaci języka Gherkin.
- Utwórz oddzielny folder do przechowywania pliku funkcji, klikając projekt prawym przyciskiem myszy -> Nowy -> Pakiet .
- Plik funkcji można utworzyć, przechodząc do prawego przycisku myszy na projekcie / pakiecie -> Nowy -> Plik .
- Podaj nazwę pliku funkcji. Po pliku funkcji musi następować rozszerzenie .feature
- Struktura projektu musi wyglądać jak struktura poniżej.
Tworzenie pliku definicji kroku
Każdy krok pliku elementu musi być odwzorowany na odpowiednią definicję kroku. Tagi używane w pliku Ogórek Korniszon muszą być odwzorowane na jego definicję kroku za pomocą tagów @Given, @When i @Then.
Poniżej przedstawiono składnię pliku definicji kroku:
Składnia:
@TagName („^ Nazwa kroku $”)
Public void methodName ()
{
Definicja metody
}
Nazwy stopni muszą być poprzedzone symbolem karat (^) i zakończone symbolem ($). Nazwą metody może być dowolna poprawna nazwa, która jest akceptowana zgodnie ze standardami kodowania Java. Definicja metody obejmuje instrukcje kodowania w Javie lub dowolnym innym języku programowania wybranym przez testera.
Plik funkcji i przykłady pliku definicji kroku
W celu utworzenia pliku elementu i pliku definicji kroku można zastosować następujący scenariusz:
Scenariusz:
- Otwórz stronę logowania testowanej aplikacji.
- Wprowadź nazwę użytkownika
- Podaj hasło
- Kliknij przycisk Zaloguj.
- Sprawdź, czy logowanie użytkownika powiodło się.
Plik funkcji:
Powyższy scenariusz można zapisać w postaci pliku funkcji, jak poniżej:
Funkcja: Zaloguj się do testowanej aplikacji.
Scenariusz: Zaloguj się do aplikacji.
Dany Otwórz przeglądarkę Chrome i uruchom aplikację.
Gdy Użytkownik wprowadza nazwę użytkownika w polu Nazwa użytkownika.
I Użytkownik wprowadza hasło w polu Hasło.
Gdy Użytkownik klika przycisk Zaloguj.
Plik definicji kroku:
W powyższej funkcji plik można odwzorować na odpowiadający mu plik definicji kroku, jak pokazano poniżej. Należy pamiętać, że aby zapewnić łącze między plikiem funkcji a plikiem definicji kroku, należy utworzyć plik programu uruchamiającego test.
Poniżej znajduje się reprezentacja pliku definicji kroku zgodnie z jego plikiem funkcji.
package com.sample.stepdefinitions; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import cucumber.api.java.en.And; import cucumber.api.java.en.Given; import cucumber.api.java.en.When; public class StepDefinition { WebDriver driver; @Given('^Open Chrome browser and launch the application$') public void openBrowser() { driver = new ChromeDriver(); driver.manage().window().maximize(); driver.get('www.facebook.com'); } @When('^User enters username onto the UserName field$') public void enterUserName() { driver.findElement(By.name('username')).sendKeys('test@demo.com'); } @And('^User enters password onto the Password field$') public void enterPassword() { driver.findElement(By.name('password')).sendKeys('test@123'); } @When('^User clicks on Login button$') public void clickOnLogin() { driver.findElement(By.name('loginbutton')).click(); } }
Klasa TestRunner służy do zapewnienia połączenia między plikiem elementu a plikiem definicji kroku. Poniżej znajduje się przykładowa reprezentacja tego, jak wygląda klasa TestRunner. Klasa TestRunner jest zwykle pustą klasą bez definicji klasy.
Package com.sample.TestRunner import org.junit.runner.RunWith; import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @CucumberOptions(features='Features',glue={'StepDefinition'}) public class Runner { }
Musimy uruchomić plik klasy TestRunner w celu wykonania plików funkcji i plików definicji kroków.
Przykłady
Poniżej znajduje się reprezentacja pliku funkcji dla różnych scenariuszy.
Przykład 1:
qa pytania i odpowiedzi podczas rozmowy kwalifikacyjnej
Aby sprawdzić, czy nazwa użytkownika i hasło są dostępne na stronie logowania:
Funkcja: Sprawdź, czy są wyświetlane pola nazwy użytkownika i hasła na stronie logowania.
Scenariusz: Aby zweryfikować wyświetlanie pól nazwy użytkownika i hasła.
Dany Użytkownik otwiera przeglądarkę Firefox i przechodzi do testowanej aplikacji.
Gdy Użytkownik przechodzi do strony logowania.
Następnie Sprawdź, czy pole nazwy użytkownika jest wyświetlane na stronie logowania.
I Sprawdź, czy pole hasła jest wyświetlane na stronie logowania.
Przykład 2:
Poniżej znajduje się przykład słowa kluczowego zarysu scenariusza w Ogórek Korniszon:
Funkcja: Sprawdź, czy logowanie powiodło się dla wielu zestawów danych testowych.
Zarys scenariusza: Aby sprawdzić, czy logowanie powiodło się dla wielu zestawów danych testowych.
Dany Otwórz przeglądarkę Chrome i uruchom aplikację.
Gdy Użytkownik wchodzi w pole Nazwa użytkownika.
I Użytkownik wchodzi w pole Hasło.
Gdy Użytkownik klika przycisk Zaloguj.
Przykłady:
| nazwa użytkownika | hasło |
| użytkownik1 | hasło1 |
| użytkownik2 | hasło2 |
Wniosek
- BDD to metodologia pozwalająca zrozumieć funkcjonalność aplikacji w postaci prostej reprezentacji tekstowej.
- Cucumber to narzędzie, które wykorzystuje Behavior Driven Development do pisania testów akceptacyjnych aplikacji. Służy do wypełnienia luki komunikacyjnej między różnymi interesariuszami projektu.
- Głównym zastosowaniem Cucumber jest jego prostota w zrozumieniu korzystania z plików funkcji przez użytkowników nietechnicznych.
Jeszcze nie jest za późno, aby wypróbować to narzędzie do ogórków w języku Gherkin.
rekomendowane lektury
- Geb Tutorial - Testowanie automatyzacji przeglądarki za pomocą narzędzia Geb
- Cucumber Selenium Tutorial: Integracja Cucumber Java Selenium WebDriver
- Testowanie automatyzacji przy użyciu narzędzia Cucumber i selenu - samouczek dotyczący selenu nr 30
- Co to jest automatyzacja testów (kompletny przewodnik po rozpoczęciu automatyzacji testów)
- Samouczek Spocka: Testowanie ze Spockiem i Groovym
- Najlepsze narzędzia do testowania oprogramowania 2021 (Narzędzia do automatyzacji testów QA)
- Testy niszczące i samouczek dotyczący testów nieniszczących
- Testy funkcjonalne a testy niefunkcjonalne