karate framework tutorial
Ten samouczek jest wprowadzeniem do testowania API przy użyciu Karate Framework. Dowiedz się o strukturze skryptu testu Karate i krokach, aby zbudować pierwszy skrypt testowy:
API to akronim oznaczający interfejs programowania aplikacji. Mówiąc prościej, możemy go zdefiniować jako pośrednika oprogramowania, który umożliwia komunikację między aplikacjami.
Potrzebujemy testów API, ponieważ:
- Wyniki są publikowane szybciej, dzięki czemu nie trzeba już czekać, aby sprawdzić, czy interfejs API działa poprawnie.
- Wraz z szybszą odpowiedzią wdrażanie tych interfejsów API również staje się szybsze, co pozwala na szybki czas realizacji.
- Wczesne wykrywanie awarii, jeszcze przed utworzeniem interfejsu użytkownika aplikacji, pozwala nam minimalizować ryzyko i korygować błędy.
- Możliwa dostawa na dużą skalę w krótszym czasie.
Aby móc pracować nad testowaniem API, mamy różne narzędzia dostępne na rynku, takie jak Postman, Mocha i Chai. Pokazały one dobre wyniki i efektywne wykorzystanie do testowania interfejsów API, jednak są one silnie uzależnione od kodu. Aby móc z nich korzystać, trzeba być sprawnym technicznie i zaznajomić się z językami programowania.
Karate Framework pięknie rozwiązuje ten problem poprzednich narzędzi programowych.
Czego się nauczysz:
Co to jest ramy karate
Karate? Porozmawiajmy o karate. Czy to ten z Japonii? Co myślisz? Być może wielki Bruce Lee rozwinął to w swoim wolnym czasie.
Chociaż chcielibyśmy zagłębić się w interesujące korzenie karate, na razie porozmawiajmy o Narzędzie Karate który został opracowany przez Peter Thomas , jedno z najlepszych narzędzi, które przychodzą na ratunek testerom API.
Framework Karate jest zgodny ze stylem pisania programu Cucumber, który jest zgodny z podejściem BDD. Składnia jest łatwa do zrozumienia dla nieprogramistów. Ta struktura jest jedynym narzędziem do testowania API, które łączy automatyzację API i testowanie wydajności w jednym samodzielnym narzędziu.
Daje użytkownikom możliwość równoległego wykonywania przypadków testowych oraz sprawdzania JSON i XML.
Dzięki tym informacjom można wydedukować pewne kluczowe punkty, aby lepiej zrozumieć narzędzie Karate:
- Karate to framework do testowania BDD zamiast TDD.
- Został zaprojektowany tak, aby był łatwy dla nieprogramistów. Ta funkcja zmienia zasady gry, ponieważ pozwala na szersze wykorzystanie i dostęp wielu osobom, niezależnie od ich zaplecza technicznego lub możliwości.
- Wykorzystuje plik funkcji Cucumber i język Gherkins do napisania testu, który jest bardzo łatwy do zrozumienia.
Wszystkie te cechy sprawiają, że jest to jedno z najkorzystniejszych obecnie dostępnych narzędzi automatyzacji.
Historia ram karate
Stworzone przez ' Peter Thomas ” w 2017 roku to oprogramowanie ma na celu udostępnienie wszystkim funkcji testowania. Został napisany w Javie i większość ludzi spodziewała się, że jego pliki będą również w tym samym języku, jednak na szczęście tak nie jest.
Zamiast tego używa plików Gherkins, co jest wynikiem jego związku z frameworkiem Cucumber. Oprogramowanie do automatyzacji jest rozszerzeniem Cucumber, dlatego dziedziczy użycie pliku Gherkins w jego działaniu. Duża różnica między nimi polega na tym, że Karate nie wykorzystuje Javy podczas testów, ale Cucumber tak.
To jest właśnie powód, dla którego jest przeznaczony dla nie-programistów, ponieważ składnia Gherkins jest bardzo czytelna i wszechstronna. To jest powód, dla którego Karate jest najbardziej odpowiednie i zalecane do wejścia w świat zautomatyzowanych testów API.
Poniżej przedstawiono niektóre funkcje Framework testowania karate:
- Używa łatwego do zrozumienia języka Gherkins.
- Nie wymaga technicznej wiedzy programistycznej, takiej jak Java.
- Opiera się na popularnych standardach ogórkowych.
- Łatwo stworzyć ramy.
- Testowanie równoległe jest podstawową funkcjonalnością, którą zapewnia sam Karate, dlatego nie musimy polegać na nim Maven, Gradle itp.
- Interfejs użytkownika do debugowania testu.
- Wywołanie pliku funkcji z innego pliku.
- Zapewnia obsługę testowania sterowników danych, które jest budowane we własnym zakresie, dzięki czemu nie ma potrzeby polegania na strukturach zewnętrznych.
- Wbudowane natywne raporty dotyczące odpoczynku. Ponadto można go zintegrować z Cucumber, aby uzyskać lepsze raporty interfejsu użytkownika i większą przejrzystość.
- Zapewnia wewnętrzną obsługę przełączania konfiguracji w różnych środowiskach testowych (QA, Stage, Prod, Pre-Prod).
- Bezproblemowa obsługa integracji CI / CD, która może być przydatna.
- Potrafi obsługiwać różne wywołania HTTP:
- Obsługa gniazda sieciowego
- Żądanie SOAP
- HTTP
- Obsługa plików cookie w przeglądarce
- HTTPS
- Dane w formacie HTML
- Żądanie XML
Porównanie Karate Vs Rest-Assured
Bądź pewny : Jest to oparta na języku Java biblioteka do testowania usług REST. Używa języka Java do pisania linii kodu. Pomaga w testowaniu wielu kategorii żądań, co dodatkowo skutkuje weryfikacją różnych kombinacji logiki biznesowej.
Karate Framework : Narzędzie oparte na ogórkach / korniszonach, używane do testowania usług SOAP i REST.
Poniższa tabela przedstawia kilka bardziej widocznych różnic między Rest-Assured Framework i Karate Framework:
dlaczego konieczne jest uruchomienie programu wykorzystującego dane testowe jako dane wejściowe?
S.Nr | Podstawa | Karate Framework | Gwarancja REST |
---|---|---|---|
7 | Raportowanie | Zapewnia wewnętrzne raportowanie, dlatego nie musi być zależny od zewnętrznych wtyczek. Możemy nawet zintegrować go z wtyczką raportowania Cucumber, aby uzyskać lepszy interfejs użytkownika. | Musisz być zależny od zewnętrznych wtyczek, takich jak Junit, TestNG |
jeden | Język | Wykorzystuje połączenie ogórka i korniszonów | Wykorzystuje język Java |
dwa | Rozmiar kodu | Zwykle wiersz kodu jest mniejszy, ponieważ ma strukturę podobną do ogórka | Linia kodu jest czymś więcej, ponieważ wymaga użycia języka Java |
3 | Wymagana wiedza techniczna | Osoby nie będące programistami mogą łatwo napisać kod Gherkins | Do pisania kodu Java wymagana jest wiedza techniczna |
4 | Testowanie oparte na danych | Musisz skorzystać z TestNG lub odpowiednika, aby wesprzeć to samo | Do testowania danych można używać wewnętrznych tagów |
5 | Czy zapewnia obsługę połączeń SOAP | Tak, zapewnia | Dotyczy tylko żądania REST |
6 | Testowanie równoległe | Tak, równoległe generowanie raportów jest również łatwo obsługiwane | Nie w dużym stopniu. Chociaż ludzie próbowali to zrobić, wskaźnik niepowodzeń jest większy niż wskaźnik sukcesu |
8 | Wsparcie CSV dla danych zewnętrznych | Tak, od Karate 0.9.0 | Nie, musisz użyć kodu Java lub biblioteki |
9 | Automatyzacja interfejsu WWW | Tak, od Karate 0.9.5 Web-UI Automation jest możliwe | Nie, to nie jest obsługiwane |
10 | Próbka GET | Given param val1 = ‘name1’ | given(). |
Dlatego, jak pokazują powyższe różnice, można śmiało powiedzieć, że karate jest jedną z najłatwiejszych rzeczy, jakie każdy może zrobić.
Narzędzia wymagane do pracy z Karate Framework
Teraz, skoro mamy już podstawową wiedzę o Karate Framework, przyjrzyjmy się procesom i narzędziom wymaganym do ustawienia środowiska Karate.
1) Zaćmienie
Eclipse to zintegrowane środowisko programistyczne wykorzystywane w dziedzinie programowania komputerowego. Jest używany głównie do programowania w języku Java. Jak wspomniano wcześniej, Karate jest napisane w Javie, więc bardziej sensowne jest, dlaczego Eclipse jest IDE dla oprogramowania testowego API. Innym powodem jest to, że jest to narzędzie typu open source, a to dość mocny powód, aby zdecydować się na to narzędzie.
Uwaga: Moglibyśmy nawet skorzystać z IntelliJ, Visual Studio i innych edytorów dostępnych na rynku.
# 2) Maven
Jest to narzędzie do automatyzacji kompilacji używane głównie do tworzenia projektów Java. Jest to jeden ze sposobów na ustawienie środowiska Karate i napisanie kodu. Aby skonfigurować wymagania Eclipse z Maven, możesz kliknąć tutaj do instalacji Maven.
Podczas pracy w Maven korzystaj z zależności Mavena, które pomogłyby w obsłudze Karate Framework.
Następujące zależności będą używane z Maven w pom.xml.
com.intuit.karate karate-apache 0.9.5 test com.intuit.karate karate-junit4 0.9.5 test
Uwaga: Najnowsze wersje mogą być dostępne w repozytorium Maven.
# 3) Gradle
Gradle jest alternatywą dla Mavena i może być używany z taką samą wydajnością. Mają swoje podobieństwa i różnice, ale mogą być równie dobrze wykorzystane do tworzenia środowiska dla naszych kodów Karate.
Jest łatwiejszy w użyciu, elastyczny i jest zalecany, gdy nasza aplikacja ma pewne wymagania dotyczące modularyzacji i zarządzania z wieloma wtyczkami. Kod konfiguracji Gradle wyglądałby mniej więcej tak:
testCompile 'com.intuit.karate:karate-junit4:0.6.0' testCompile 'com.intuit.karate:karate-apache:0.6.0'
Uwaga: Możesz użyć MAVEN lub GRADLE.
# 4) Konfiguracja środowiska Java w systemie
Aby rozpocząć korzystanie ze skryptów Karate Framework, należy skonfigurować środowisko JDK i JRE.
Struktura skryptu testu Karate
Skrypt testu Karate jest znany z posiadania rozszerzenia „.feature”. Ta właściwość jest dziedziczona po Cucumber. Dozwolona jest także organizacja plików w konwencji Java. Możesz organizować swoje pliki zgodnie z konwencjami pakietów Java.
Jednak wytyczne Maven instruują, że przechowywanie plików innych niż Java powinno odbywać się osobno. Są wykonane w formacie src / test / resources Struktura. A pliki Java są przechowywane pod src / main / java .
Ale według twórców Karate Framework, mocno wierzą, że trzymamy obok siebie zarówno pliki Java, jak i inne. Zgodnie z nimi znacznie łatwiej jest szukać plików * .java i * .feature, gdy są przechowywane razem, niż stosować się do standardowej struktury Mavena.
Można to łatwo zrobić, dostosowując plik pom.xml w następujący sposób (dla Maven):
src/test/java **/*.java ...
Poniżej znajduje się zarys ogólnej struktury Ram Karate:
Teraz, ponieważ ta struktura Karate używa pliku Runner, który jest również potrzebny w Cucumber do uruchamiania plików funkcji, więc większość pisania będzie zgodna ze standardami Cucumber.
Ale w przeciwieństwie do Cucumber, kroki nie wymagają jasnego zdefiniowania w karate, co z kolei zwiększa elastyczność i łatwość operacji. Nie musimy dodawać dodatkowego kleju, który zwykle musimy dodawać, gdy postępujemy zgodnie ze schematem Cucumber.
Klasa „Runner” jest najczęściej nazywana TestRunner.java.
Następnie plik TestRunner.java przybierze postać:
import com.intuit.karate.junit4.Karate; import org.junit.runner.RunWith; @RunWith(Karate.class) public class TestRunner { }
Mówiąc o .funkcja zawiera wszystkie scenariusze testowe, które należy przetestować, aby upewnić się, że interfejs API działa zgodnie z oczekiwanymi wymaganiami.
Ogólny plik * .feature wygląda mniej więcej tak, jak pokazano poniżej:
Feature: fetching User Details Scenario: testing the get call for User Details Given url 'https://reqres.in/api/users/2' When method GET Then status 200
Tworzenie pierwszego skryptu podstawowego testu karate
Ta sekcja pomoże Ci rozpocząć tworzenie swojego pierwszego skryptu testowego, który będzie pomocny w konwersji API w formie frameworka Karate.
Zanim napiszemy podstawowe skrypty testu Karate, zainstaluj na swoim komputerze następujące elementy:
techniki pozyskiwania wymagań w inżynierii oprogramowania
- Eclipse IDE
- Maven. Ustaw odpowiednią ścieżkę Mavena.
- JDK i JRE. Ustaw odpowiednią ścieżkę.
Przyjrzyjmy się podejściu krok po kroku:
# 1) Stwórz nowy MAVEN Projekt w edytorze Eclipse
- Otwórz Eclipse
- Kliknij Plik. Wybierz Nowy projekt.
- Wybierz projekt Maven
- Wybierz lokalizację obszaru roboczego.
- Wybierz Archetyp (zazwyczaj wybieramy „ Maven-archetype-quickstart 1.1 ”Dla prostych projektów Maven).
- Podaj identyfikator grupy i identyfikator artefaktu (w naszym przykładzie użyliśmy następujących wartości).
- Identyfikator grupy : Karate
- Identyfikator artefaktu: KarateTestScriptsSample
- Kliknij Zakończ, aby zakończyć konfigurację.
#dwa) Po utworzeniu będziesz mógł zobaczyć następującą strukturę w oknie Eksploratora projektu.
# 3) Uwzględnij wszystkie swoje zależności.
Nasz pierwszy krok po konfiguracji uwzględnij wszystkie zależności które będą wymagane do wykonania. Zachowamy cały tag pod POM.xml (zakładając, że znasz już użycie POM.xml).
- Otwórz POM.xml i skopiuj poniższy kod pod tagiem zależności i zapisz plik.
com.intuit.karate karate-apache 0.9.5 test com.intuit.karate karate-junit4 0.9.5 test
Kliknij tutaj dla źródła.
# 4) Przeprowadźmy burzę mózgów, co będziemy testować w tym skrypcie testu podstawowego Karate.
Scenariusz:
Będziemy testować API za pomocą tego URL.
Ścieżka: api / users / 2
Metoda: OTRZYMAĆ
I musimy to sprawdzić , czy żądanie zwraca plik Kod sukcesu (200) albo nie.
Mówiąc prościej, po prostu przetestujemy przykładowy interfejs API, aby sprawdzić, czy jest on pomyślnie wykonywany.
Uwaga: Pobieramy przykładowy interfejs API, który jest dostępny do testów. Możesz wybrać dowolną ścieżkę lub odwołać się do swojego interfejsu API.
Kliknij tutaj dla źródła.
# 5) Teraz naszym następnym krokiem byłoby utworzenie pliku .funkcja plik.
Jak omówiono we wprowadzeniu, rozszerzenie plik .feature to własność odziedziczona po ogórku. W tym pliku zapiszemy scenariusze testów, które należy wykonać, aby wykonać testowanie interfejsu API.
- Przejdź do folderu src / test / java w swoim projekcie.
- Kliknij prawym przyciskiem myszy i utwórz nowy plik - userDetails.feature. Następnie kliknij przycisk Zakończ.
Teraz zobaczysz następujący plik w folderze src / test / java
Plik Ikona w kolorze zielonym przypomina .feature fi le w Cucumber, który właśnie stworzyliśmy.
- Po utworzeniu pliku napiszemy teraz nasze scenariusze testowe, które zostaną omówione w następnej sekcji.
# 6) Ponieważ mamy scenariusz i puste miejsce. funkcja plik gotowy, teraz zacznijmy od naszego pierwszego skryptu. Zacznijmy kodować
Napisz następujący wiersz kodu w pliku userDetails.feature, który utworzyliśmy w kroku 5:
Feature: fetching User Details Scenario: testing the get call for User Details Given url 'https://reqres.in/api/users/2' When method GET Then status 200
Spróbujmy zrozumieć komponenty, które są zapisane w powyższym pliku:
- Funkcja: Słowo kluczowe wyjaśnia nazwę testowanej funkcji.
- Tło: Jest to sekcja opcjonalna, która jest traktowana jako sekcja wymagań wstępnych. Można to wykorzystać do zdefiniowania wszystkiego, co jest potrzebne do przetestowania interfejsu API. Zawiera HEADER, URL & PARAM opcje.
- Scenariusz: Każdy plik funkcji, który zobaczysz, będzie miał co najmniej jedną funkcję (chociaż może dać wielokrotność scenariusze). Jest to opis przypadku testowego.
- Dany: Jest to krok, który należy wykonać przed wykonaniem jakiegokolwiek innego kroku testu. Jest to czynność obowiązkowa do wykonania.
- Gdy: Określa warunek, który powinien zostać spełniony, aby wykonać kolejny krok testu.
- Następnie: Mówi nam, że co powinno się stać w przypadku stanu, o którym mowa w Gdy jest spełniony.
Uwaga: Wszystkie wyżej wymienione słowa kluczowe pochodzą z języka Gherkins. To jest standardowy sposób pisania skryptów testowych przy użyciu Cucumber.
A kilka innych słów użytych w pliku funkcji to:
- 200: Jest to kod statusu / odpowiedzi, którego oczekujemy (Click tutaj lista kodów statusu)
- OTRZYMAĆ: Jest to metoda API, taka jak POST, PUT itp.
Mamy nadzieję, że to wyjaśnienie było dla Ciebie łatwe do zrozumienia. Teraz będziesz mógł odnieść się do tego, co dokładnie jest zapisane w powyższym pliku.
Teraz musimy utworzyć plik TestRunner.java
Jak wyjaśniono w powyższej sekcji, Cucumber potrzebuje pliku Runner, który byłby wymagany do wykonania .funkcja plik zawierający scenariusze testowe.
- Przejdź do folderu src / test / java w swoim projekcie
- Kliknij prawym przyciskiem myszy i utwórz nowy plik Java: TestRunner.java
- Po utworzeniu pliku umieść pod nim następujące wiersze kodu:
import org.junit.runner.RunWith; import com.intuit.karate.junit4.Karate; @RunWith(Karate.class) public class TestRunner { }
- Test Runner to plik, który zostanie teraz wykonany w celu wykonania żądanego scenariusza, który został zapisany w kroku 5.
# 7) Teraz jesteśmy gotowi z obydwoma plikami TestRunner.Java i userDeatils.feature. Pozostało nam tylko zadanie Biegać scenariusz.
- Przejdź do pliku TestRunner.java i kliknij plik prawym przyciskiem myszy, jak pokazano na poniższym obrazku.
- Wybierz Uruchom jako -> Test Junit
- Teraz, po wybraniu, zaczniesz obserwować, że przypadek testowy został uruchomiony.
- Poczekaj na wykonanie skryptu testowego. Gdy to zrobisz, w oknie zobaczysz coś takiego jak na poniższym obrazku.
- Wreszcie możemy powiedzieć, że z powodzeniem stworzyliśmy naszą pierwszą wersję basic Skrypt testowy używając Karate Framework.
# 8) Na koniec, framework Karate zapewnia również prezentację raportu HTML z wykonania, które zostało wykonane.
- Przejdź do folderu docelowego -> surefire-reports-> Tutaj zobaczysz swój raport HTML, który możesz otworzyć.
** Sugerujemy również, aby otworzyć to samo za pomocą przeglądarki Chrome, aby uzyskać lepszy wygląd i działanie.
- Zostanie wyświetlony następujący raport HTML przedstawiający Scenariusze i testy który został wykonany dla wspomnianego scenariusza:
Wniosek
W tym samouczku omówiliśmy testowanie API, różne narzędzia testowe dostępne na rynku oraz to, w jaki sposób Karate Framework jest lepszą opcją w porównaniu do swoich odpowiedników.
Postępowaliśmy zgodnie z podejściem krok po kroku, aby stworzyć nasz pierwszy podstawowy skrypt testowy. Zaczęliśmy od stworzenia podstawowego Projekt Maven w Eclipse IDE aby utworzyć plik .feature, który zawiera cały scenariusz testowy i plik Runner do wykonania przypadku testowego wymienionego w pliku .feature.
Pod koniec wielu kroków mogliśmy zobaczyć raport z wykonania wyników testu.
Mamy nadzieję, że ten samouczek był pomocny dla początkujących w nauce, jak zbudować swój pierwszy skrypt testowy przy użyciu Karate Framework i przeprowadzić testowanie API. To szczegółowe podejście krok po kroku jest wspaniałym sposobem uruchamiania i wykonywania różnych testów w interfejsie API.
rekomendowane lektury
- Jak skonfigurować środowisko testowe Node.js: samouczek dotyczący Node.js.
- Parasoft SOAtest Tutorial: Bezskryptowe narzędzie do testowania API
- Samouczek Mockito: Mockito Framework do mockowania w testach jednostkowych
- Samouczek testowania interfejsu API: kompletny przewodnik dla początkujących
- Samouczek TestNG: Wprowadzenie do Framework TestNG
- Jest Tutorial - JavaScript Unit Testing Using Jest Framework
- Testy niszczące i samouczek dotyczący testów nieniszczących
- Jak używać programu Postman do testowania różnych formatów API?