automation testing using cucumber tool
W ostatnim samouczku dotyczącym Selenium przedstawiliśmy Ci Siatka selenu który jest do rozproszone wykonywanie testów środowisko, aby przyspieszyć wykonanie testu .
Teraz, pod koniec tej kompleksowej serii szkoleń dotyczących Selenium, uczymy się zaawansowanej Badanie selenu i pokrewne pojęcia.
W tym i następnym samouczku przedstawimy Ci program Ogórek - a Framework Behavior Driven Development (BDD), który jest używany z Selenium do przeprowadzania testów akceptacyjnych.
Czego się nauczysz:
Ogórek Wprowadzenie
Ogórek to narzędzie oparte na frameworku Behavior Driven Development (BDD), które służy do pisania testów akceptacyjnych dla aplikacji internetowej. Umożliwia automatyzację walidacji funkcjonalnej w łatwym do odczytania i zrozumiałym formacie (jak zwykły angielski) dla analityków biznesowych, programistów, testerów itp.
Pliki funkcji ogórka mogą służyć jako dobry dokument dla wszystkich. Istnieje wiele innych narzędzi, takich jak JBehave, które również obsługują framework BDD. Początkowo Cucumber został zaimplementowany w języku Ruby, a następnie rozszerzony na framework Java. Oba narzędzia obsługują natywny JUnit.
Behavior Driven Development jest rozszerzeniem Test Driven Development i jest używany do testowania systemu, a nie do testowania konkretnego fragmentu kodu. Omówimy więcej BDD i styl pisania testów BDD.
Ogórek może być używany razem z selenem, watirem i kapibarą itp. Ogórek obsługuje wiele innych języków, takich jak Perl, PHP, Python, Net itp. W tym samouczku skoncentrujemy się na ogórku z Javą jako językiem.
Podstawy ogórka
Aby zrozumieć ogórek, musimy znać wszystkie cechy ogórka i jego zastosowanie.
ado net pytania i odpowiedzi do wywiadów dla doświadczonych
# 1) Pliki funkcji:
Pliki funkcji są istotną częścią ogórka, który jest używany do pisania kroków automatyzacji testów lub testów akceptacyjnych. Może być używany jako dokument aktywny. Kroki są specyfikacją aplikacji. Wszystkie pliki funkcji mają rozszerzenie .feature.
Przykładowy plik funkcji:
Funkcja : Funkcja logowania
Aby zapewnić działanie funkcji logowania,
Chcę uruchomić test ogórka, aby sprawdzić, czy działa
Scenariusz : Funkcjonalność logowania
Dany użytkownik przechodzi do SOFTWARETINGHELP.COM
Gdy użytkownik loguje się przy użyciu nazwy użytkownika „UŻYTKOWNIK” i hasła „HASŁO”
Następnie logowanie powinno przebiegać pomyślnie
Scenariusz : Funkcjonalność logowania
Dany użytkownik przechodzi do SOFTWARETINGHELP.COM
Gdy użytkownik loguje się przy użyciu nazwy użytkownika „USER1” i hasła „PASSWORD1”
Następnie powinien zostać wyświetlony komunikat o błędzie
# 2) Funkcja:
T on zawiera informacje o funkcjonalności biznesowej wysokiego poziomu (patrz poprzedni przykład) i celu testowanej aplikacji. Każdy powinien być w stanie zrozumieć przeznaczenie pliku funkcji, czytając pierwszy krok dotyczący funkcji. Ta część jest w zasadzie krótka.
# 3) Scenariusz:
Zasadniczo scenariusz przedstawia konkretną funkcjonalność, która jest testowana. Widząc scenariusz, użytkownik powinien być w stanie zrozumieć intencje scenariusza i na czym polega test. Każdy scenariusz powinien być zgodny z podanym czasem i formatem. Język ten nazywany jest „korniszonem”.
- Dany: Jak wspomniano powyżej, podane określa warunki wstępne. W zasadzie jest to stan znany.
- Gdy : Jest używany, gdy ma być wykonana jakaś akcja. Jak w powyższym przykładzie, widzieliśmy, kiedy użytkownik próbuje zalogować się przy użyciu nazwy użytkownika i hasła, staje się to czynnością .
- Następnie: Oczekiwany wynik lub wynik należy umieścić tutaj. Na przykład: sprawdź, czy logowanie się powiodło, czy nawigacja po stronie powiodła się.
- Tło: Ilekroć w każdym scenariuszu wymagane jest wykonanie dowolnego kroku, kroki te należy umieścić w tle. Na przykład: jeśli użytkownik musi wyczyścić bazę danych przed każdym scenariuszem, te kroki można umieścić w tle.
- I : I jest używany do łączenia dwóch lub więcej tego samego typu działań.
Przykład:
Funkcja : Funkcja logowania
Scenariusz : Funkcjonalność logowania
Dany użytkownik przechodzi do SOFTWARETINGHELP.COM
Gdy użytkownik loguje się przy użyciu nazwy użytkownika jako „UŻYTKOWNIK”
I hasło jako „hasło”
Następnie logowanie powinno przebiegać pomyślnie
I Powinna zostać wyświetlona strona główna
drzewo binarne klasa c ++
Przykład tła:
Tło:
Dany użytkownik zalogowany jako administrator baz danych
I wszystkie niepotrzebne wartości są usuwane
# 4) Zarys scenariusza:
Zarysy scenariusza są używane, gdy ten sam test musi być wykonany z innym zestawem danych. Weźmy ten sam przykład. Musimy przetestować funkcjonalność logowania z wieloma różnymi zestawami nazwy użytkownika i hasła.
Funkcja : Funkcja logowania
Aby zapewnić działanie funkcji logowania,
Chcę uruchomić test ogórka, aby sprawdzić, czy działa
Zarys scenariusza : Funkcjonalność logowania
Dany użytkownik przechodzi do SOFTWARETESTINGHELP.COM
Gdy użytkownik loguje się przy użyciu nazwy użytkownika jako< Nazwa Użytkownika > i hasło< hasło >
Następnie logowanie powinno przebiegać pomyślnie
Przykłady:
| nazwa użytkownika | hasło |
| Tom | hasło1 |
| Harry | hasło2 |
| Jerry | hasło3 |
Uwaga:
- Jak pokazano w powyższym przykładzie, nazwy kolumn są przekazywane jako parametr do Gdy komunikat.
- Zamiast Scenariusza musisz użyć Zarysu Scenariusza.
- Przykłady służą do przekazywania różnych argumentów w formacie tabelarycznym. Rury pionowe służą do oddzielania dwóch różnych kolumn. Przykład może zawierać wiele różnych kolumn.
# 5) Tagi:
Ogórek domyślnie uruchamia wszystkie scenariusze we wszystkich plikach funkcji. W projektach czasu rzeczywistego mogą istnieć setki plików funkcji, które nie muszą być uruchamiane przez cały czas.
Na przykład : Pliki funkcji związane z testem dymu nie muszą być uruchamiane przez cały czas. Więc jeśli wymienisz tag jako bezdymny w każdym pliku funkcji, który jest powiązany z testem dymu i uruchamia test ogórka z tagiem @SmokeTest. Cucumber będzie uruchamiał tylko te pliki funkcji, które są specyficzne dla danych tagów. Postępuj zgodnie z poniższym przykładem. W jednym pliku elementu można określić wiele oznaczeń.
Przykład użycia pojedynczych tagów:
@Test dymu
Funkcja : Funkcja logowania
Aby zapewnić działanie funkcji logowania,
Chcę uruchomić test ogórka, aby sprawdzić, czy działa
Zarys scenariusza : Funkcjonalność logowania
Dany użytkownik przechodzi do SOFTWARETESTINGHELP.COM
Gdy użytkownik loguje się przy użyciu nazwy użytkownika jako< Nazwa Użytkownika > i hasło< hasło >
Następnie logowanie powinno przebiegać pomyślnie
Przykłady:
| nazwa użytkownika | hasło |
| Tom | hasło1 |
| Harry | hasło2 |
| Jerry | hasło3 |
Przykład użycia wielu tagów:
Jak pokazano na poniższym przykładzie, ten sam plik funkcji może być użyty do scenariuszy testu dymu, a także do scenariusza testu logowania. Jeśli zamierzasz uruchomić skrypt do testu dymu, użyj @SmokeTest. Podobnie, jeśli chcesz, aby skrypt działał na potrzeby testu logowania, użyj tagu @LoginTest.
Dowolna liczba tagów może być wymieniona zarówno dla pliku funkcji, jak i dla scenariusza.
@SmokeTest @LoginTest
Funkcja : Funkcja logowania
Aby zapewnić działanie funkcji logowania,
Chcę uruchomić test ogórka, aby sprawdzić, czy działa
Zarys scenariusza : Funkcjonalność logowania
Dany użytkownik przechodzi do SOFTWARETINGHELP.COM
Gdy użytkownik loguje się przy użyciu nazwy użytkownika jako i hasła
Następnie logowanie powinno przebiegać pomyślnie
Przykłady:
| nazwa użytkownika | hasło |
| Tom | hasło1 |
| Harry | hasło2 |
| Jerry | hasło3 |
Podobnie możesz określić znaczniki, aby uruchomić określony scenariusz w pliku funkcji. Sprawdź poniższy przykład, aby uruchomić konkretny scenariusz.
Funkcja : Funkcja logowania
Aby zapewnić działanie funkcji logowania,
Chcę uruchomić test ogórka, aby sprawdzić, czy działa
@positiveScenario
Scenariusz : Funkcjonalność logowania
Dany użytkownik przechodzi do SOFTWARETINGHELP.COM
Gdy użytkownik loguje się przy użyciu nazwy użytkownika „UŻYTKOWNIK” i hasła „HASŁO”
Następnie logowanie powinno przebiegać pomyślnie
@negaviveScenario
Scenariusz : Funkcjonalność logowania
Dany użytkownik przechodzi do SOFTWARETINGHELP.COM
Gdy użytkownik loguje się przy użyciu nazwy użytkownika „USER1” i hasła „PASSWORD1”
Następnie komunikat o błędzie powinien zostać wyrzucony
# 6) JUnit Runner:
Aby uruchomić określony plik funkcji, cucumber używa standardowego JUnit Runner i określa tagi w @Cucumber. Opcje. Wiele tagów można podać, oddzielając je przecinkami. Tutaj możesz określić ścieżkę do raportu i typ raportu, który chcesz wygenerować.
Przykład Junit Runner:
wymieniłeś domyślną bramę w swojej sieci
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith; @RunWith (Cucumber.class) @ Cucumber.Options (format = {'SimpleHtmlReport: report / smokeTest.html'}, tags = {'@ smokeTest'}) Klasa publiczna JUnitRunner {} Podobnie możesz wydać ogórek polecenie uruchomienia wielu tagów. Poniższy przykład ilustruje, jak używać wielu tagów w cucumber do uruchamiania różnych scenariuszy.
import cucumber.api.junit.Cucumber; import org.junit.runner.RunWith; @RunWith(Cucumber.class) @Cucumber.Options(format={'SimpleHtmlReport:report/smokeTest.html'},tags={'@smokeTest',”@LoginTest”}) Public class JUnitRunner { }
# 7) Raport ogórkowy:
Ogórek generuje własny format HTML. Jednak lepsze raportowanie można wykonać za pomocą narzędzia Jenkins lub Bamboo. Szczegóły dotyczące raportowania zawarte są w następnym temacie dotyczącym ogórka.
Konfiguracja projektu ogórka:
Szczegółowe wyjaśnienie konfiguracji projektu ogórka jest dostępne osobno w następnym samouczku. Więcej informacji na temat konfiguracji projektu można znaleźć w samouczku dotyczącym ogórków, część 2. Pamiętaj, że dla ogórka nie są wymagane żadne dodatkowe instalacje oprogramowania.
Implementacja pliku funkcji:
Musimy zaimplementować te kroki w Javie, aby przetestować pliki funkcji. Trzeba stworzyć klasę zawierającą podane instrukcje, kiedy i potem. Cucumber używa swoich adnotacji i wszystkie kroki są osadzone w tych adnotacjach (podanych, kiedy, to). Każda fraza zaczyna się od „^”, aby ogórek zrozumiał początek kroku. Podobnie każdy krok kończy się znakiem „$”. Użytkownik może używać wyrażeń regularnych do przekazywania różnych danych testowych. Wyrażenia regularne pobierają dane z kroków funkcji i przechodzą do definicji kroków. Kolejność parametrów zależy od sposobu ich przekazywania z pliku funkcji. Zapoznaj się z następnym samouczkiem dotyczącym konfiguracji projektu i mapowania między plikami elementów i klasami Java.
Przykład:
Poniższy przykład ilustruje sposób implementacji plików funkcji.
W tym przykładzie nie używaliśmy żadnego API selenu. Ma to na celu tylko pokazanie, jak ogórek działa jako samodzielna platforma. Proszę postępować zgodnie z następnym samouczkiem dotyczącym integracji selenu z ogórkiem.
public class LoginTest { @Given('^user navigates to SOFTWARETETINGHELP.COM$') public void navigatePage() { system.out.println(“Cucumber executed Given statement”); } @When('^user logs in using Username as '(.*)' and Password '(.*)'$') public void login(String usename,String password) { system.out.println(“Username is:”+ usename); system.out.println(“Password is:”+ password); } @When('^click the Submit button$') public void clickTheSubmitButton() { system.out.println(“Executing When statement”) } @Then('^Home page should be displayed$') public void validatePage() { system.out.println(“Executing Then statement”) } @Then('^login should be successful$') public void validateLoginSuccess() { system.out.println(“Executing 2nd Then statement”) } }
Kiedy wykonujesz zajęcia z ogórkiem, ogórek zacznie czytać kroki pliku funkcji. Na przykład, po wykonaniu @smokeTest, ogórek odczyta Funkcja krok i Dany oświadczenie scenariusz . Jak tylko ogórek znajdzie. Biorąc pod uwagę oświadczenie, to samo Dany instrukcja będzie przeszukiwana pod kątem plików java. Jeśli ten sam krok zostanie znaleziony w pliku java, ogórek wykonuje funkcję określoną dla tego samego kroku, w przeciwnym razie ogórek pominie ten krok.
Wniosek
W tym samouczku omówiliśmy funkcje narzędzia ogórek i jego użycie w czasie rzeczywistym.
Ogórek jest ulubionym narzędziem w wielu projektach, ponieważ jest łatwy do zrozumienia, czytelny i zawiera funkcje biznesowe.
W następnym rozdziale , omówimy, jak skonfigurować ogórek - projekt java i jak zintegrować Selenium WebDriver z Cucumber.
rekomendowane lektury
- Cucumber Selenium Tutorial: Cucumber Java Selenium Integracja WebDriver
- 30+ najlepszych samouczków dotyczących selenu: naucz się selenu z prawdziwymi przykładami
- Samouczek Selenium Grid: Konfiguracja i przykład testowania w różnych przeglądarkach
- Spock do integracji i testów funkcjonalnych z selenem
- Korzystanie z narzędzia Maven Build Automation Tool i Maven Project Setup dla Selenium - samouczek Selenium # 24
- Wprowadzenie do Selenium WebDriver - samouczek Selenium # 8
- Dogłębne samouczki dotyczące Eclipse dla początkujących
- Samouczek dotyczący narzędzia do testowania dostępności WAVE