W ostatnim samouczku dotyczącym Selenium przedstawiliśmy Ci Selenium Grid, które jest rozproszonym środowiskiem do wykonywania testów w celu przyspieszenia wykonanie testu.
Teraz, pod koniec tej obszernej serii szkoleń dotyczących Selenium, uczymy się zaawansowanych testów Selenium i powiązanych pojęć.
W tym i następnym samouczku przedstawiamy Cucumber – środowisko programistyczne oparte na zachowaniu (BDD), które jest używane z Selenium do przeprowadzania testów akceptacyjnych.
Wprowadzenie do ogórków
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. Pozwala na automatyzację walidacji funkcjonalnej w czytelnym 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 językiem Java.
Podstawy ogórka
Aby zrozumieć ogórek, musimy znać wszystkie cechy ogórka i jego zastosowania.
# 1) Pliki funkcji:
Pliki funkcji są podstawową częścią cucumber, która jest używana 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 upewnić się, że funkcja logowania działa,
Chcę uruchomić test ogórka, aby sprawdzić, czy działa
Scenariusz: funkcja logowania
Podany użytkownik przechodzi do SOFTWARETINGHELP.COM
Gdy użytkownik loguje się przy użyciu nazwy użytkownika jako „UŻYTKOWNIK ”I hasło„ PASSWORD ”
Następnie logowanie powinno przebiegać pomyślnie
Scenariusz: funkcja logowania
Podany użytkownik przechodzi do SOFTWARETINGHELP.COM
Gdy użytkownik loguje się przy użyciu nazwy użytkownika jako„ USER1 ”i hasło„ PASSWORD1 ”
Następnie powinien zostać wyrzucony komunikat o błędzie
# 2) Funkcja:
Zawiera informacje o funkcjach biznesowych wysokiego poziomu (patrz poprzednia przykład) oraz cel 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. Ten język jest nazywany „korniszonem”.
- Dane: Jak wspomniano powyżej, podane określa warunki wstępne. Jest to zasadniczo znany stan.
- Kiedy: To jest używane, gdy ma zostać 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 powinien umieszczony tutaj. Na przykład: sprawdź, czy logowanie się powiodło, czy nawigacja po stronie powiodła się.
- Tło: Zawsze, gdy wymagane jest wykonanie dowolnego kroku w każdym scenariuszu, należy je umieścić w tle. użytkownik musi wyczyścić bazę danych przed każdym scenariuszem, a następnie te kroki można umieścić w tle.
- Oraz: i jest używany do łączenia dwóch lub więcej działań tego samego typu.
Przykład:
Funkcja: Funkcja logowania
Scenariusz: Funkcjonalność logowania
Podany użytkownik przechodzi do SOFTWARETINGHELP.COM
Gdy użytkownik loguje się przy użyciu nazwy użytkownika jako „UŻYTKOWNIK”
I passwo rd jako „hasło”
Następnie logowanie powinno przebiegać pomyślnie
I powinna zostać wyświetlona strona główna
Przykład tła:
Tło:
Podane użytkownik zalogowany jako administrator bazy danych
Wszystkie niepotrzebne wartości są usuwane
# 4) Zarys scenariusza:
Zarys scenariusza jest używany, gdy ten sam test ma być wykonany z różnymi zbiór 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 upewnić się, że funkcja logowania działa,
Chcę uruchomić ogórek, aby sprawdzić, czy działa
Zarys scenariusza: funkcja logowania
Podany 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 instrukcji When.
- Zamiast scenariusza należy użyć konspektu 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 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. Możesz określić wiele tagów w jednym pliku funkcji.
Przykład użycia pojedynczych tagów:
@SmokeTest
Funkcja: Funkcja logowania
Aby upewnić się, że funkcja logowania działa,
chcę uruchomić test ogórka, aby sprawdzić, czy działa
Zarys scenariusza: funkcja logowania
Podany 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 >
Wtedy logowanie powinno przebiegać pomyślnie
Przykład użycia wielu tagów:
Jak pokazano na poniższym przykładzie ten sam plik funkcji może być używany w scenariuszach testu dymu, a także w scenariuszu 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.
Można podać dowolną liczbę tagów zarówno dla pliku funkcji, jak i dla scenariusza.
@SmokeTest @ Test logowania
Funkcja: Funkcja logowania
Aby upewnić się, że funkcja logowania działa,
chcę uruchomić test ogórka, aby sprawdzić, czy działa
Zarys scenariusza: funkcja logowania
Podany użytkownik przechodzi do SOFTWARETINGHELP.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
Podobnie możesz określ znaczniki, aby uruchomić określony scenariusz w pliku funkcji. Sprawdź poniższy przykład, aby uruchomić konkretny scenariusz.
Funkcja: Funkcja logowania
Aby upewnić się, że funkcja logowania działa,
chcę uruchomić test ogórka, aby sprawdzić, czy jest działa
@positiveScenario
Scenariusz: funkcja logowania
Podany użytkownik przechodzi do SOFTWARETINGHELP.COM
Gdy użytkownik loguje się przy użyciu nazwy użytkownika „UŻYTKOWNIK” i hasła „HASŁO”
Wtedy logowanie powinno przebiegać pomyślnie
@negaviveScenario
Scenariusz: Funkcjonalność logowania
Podany użytkownik przechodzi do SOFTWARETINGHELP.COM
Gdy użytkownik loguje się przy użyciu nazwy użytkownika jako „UŻYTKOWNIK1” i hasło „PASSWORD1”
Następnie powinien pojawić się komunikat o błędzie
# 6) JUnit Runner:
Aby uruchomić określony plik funkcji, ogórek 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ę raportu i typ raportu, który chcesz wygenerować.
Przykład Junit Runner:
Podobnie, możesz wydać ogórek polecenie uruchomienia wielu tagów. Poniższy przykład ilustruje, jak używać wielu tagów w Cucumber, aby uruchomić różne scenariusze.
# 7) Raport Cucumber:
Cucumber generuje własny format HTML. Jednak lepsze raportowanie można wykonać za pomocą narzędzia Jenkins lub Bamboo. Szczegóły raportowania są omówione w następnym temacie dotyczącym cucumber.
Cucumber Project Setup:
Szczegółowe objaśnienie konfiguracji projektu cucumber 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 ogórek nie wymaga żadnej dodatkowej instalacji oprogramowania.
Implementacja pliku funkcji:
Aby przetestować pliki funkcji, musimy zaimplementować te kroki w Javie. Trzeba stworzyć klasę zawierającą podane instrukcje, kiedy i potem. Cucumber używa swoich adnotacji, a wszystkie kroki są osadzone w tych adnotacjach (podane, kiedy, to). Każda fraza zaczyna się od „^”, aby ogórek rozumiał początek kroku. Podobnie każdy krok kończy się na „$”. 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 funkcji 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. Postępuj zgodnie z następnym samouczkiem dotyczącym integracji selenu z ogórkiem.
Gdy wykonasz zajęcia z ogórka, ogórek zacznie czytać instrukcje dotyczące pliku funkcji. Na przykład po wykonaniu @smokeTest ogórek odczyta krok funkcji i otrzyma zestawienie scenariusza. Jak tylko ogórek znajdzie. Biorąc pod uwagę to stwierdzenie, to samo Given będzie przeszukiwane 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 cucumber pominie ten krok.
Podsumowanie
W tym samouczku omówiliśmy funkcje ogórek i jego wykorzystanie w czasie rzeczywistym.
Ogórek jest najbardziej ulubionym narzędziem w wielu projektach, ponieważ jest łatwy do zrozumienia, czytelny i zawiera funkcje biznesowe.
W następnym rozdziale omówimy jak założyć ogórek – projekt java i jak zintegrować Selenium WebDriver z Cucumber.
Ostatnia aktualizacja: 18 stycznia 2021 6:40