karate framework tutorial
Deze tutorial is een inleiding tot API-testen met Karate Framework. Lees meer over de structuur van Karate Test Script en de stappen om het eerste testscript te bouwen:
API is een acroniem dat staat voor Application Programming Interface. In eenvoudige bewoordingen kunnen we het definiëren als een softwaretussenpersoon die communicatie tussen applicaties mogelijk maakt.
We hebben API-tests nodig omdat:
- Resultaten worden sneller gepubliceerd, dus niet meer wachten om te zien of de API goed werkt.
- Met de snellere respons wordt de inzet van deze API's ook sneller, waardoor een snelle doorlooptijd mogelijk is.
- Door vroegtijdige foutdetectie, zelfs voordat de gebruikersinterface van de app is gemaakt, kunnen we risico's beperken en fouten corrigeren.
- Oplevering op grote schaal mogelijk in een kortere periode.
Om aan API-testen te kunnen werken, hebben we verschillende tools in de markt zoals Postman, Mocha en Chai. Deze hebben goede resultaten en effectief gebruik voor het testen van API's aangetoond, maar deze worden sterk beïnvloed door code. Om deze te kunnen gebruiken, moet men technisch gezond zijn en vertrouwd zijn met programmeertalen.
Het Karate Framework lost dit probleem van de voorgaande softwaretools prachtig op.
Wat je leert:
Wat is Karate Framework
Karate? Laten we het over Karate hebben. Komt het uit Japan? Wat denk je? Misschien had de grote Bruce Lee dit in zijn vrije tijd ontwikkeld.
Hoewel we ons willen verdiepen in de interessante wortels van Karate, laten we het nu hebben over de Karate hulpmiddel dat is ontwikkeld door Peter Thomas , een van de geweldige tools die API-testers te hulp schiet.
Karate-raamwerk volgt de komkommerstijl van het schrijven van het programma dat de BDD-benadering volgt. De syntaxis is gemakkelijk te begrijpen door niet-programmeurs. En dit framework is de enige API-testtool die API-automatisering en prestatietests heeft gecombineerd in één zelfstandige tool.
Het biedt de gebruikers de mogelijkheid om de testcases parallel uit te voeren en de JSON- en XML-controles uit te voeren.
Met deze informatie kunnen bepaalde kernpunten worden afgeleid om de Karate-tool in detail te begrijpen:
- Karate is een BDD-testraamwerk in plaats van een TDD.
- Het is zo ontworpen dat het gemakkelijk is voor niet-programmeurs. Deze functie verandert het spel omdat het voor veel mensen meer gebruik en toegang mogelijk maakt, ongeacht hun technische achtergrond of capaciteit.
- Het maakt gebruik van het komkommer-functiebestand en de augurken-taal om de test te schrijven, die heel gemakkelijk te begrijpen is.
Al deze functies maken het een van de meest gunstige automatiseringstools die momenteel beschikbaar zijn.
Geschiedenis van Karate Framework
Gemaakt door ' Peter Thomas ' In 2017 wil deze software testfunctionaliteiten voor iedereen direct beschikbaar maken. Het was geschreven in Java en de meeste mensen verwachtten dat de bestanden ook in dezelfde taal zouden zijn, maar dat is gelukkig niet het geval.
Het gebruikt eerder Gherkins-bestanden, wat het resultaat is van de relatie met het Cucumber-framework. De automatiseringssoftware is een uitbreiding van Cucumber en erft daarom het gebruik van Gherkins-bestand in zijn werking. Het grote verschil tussen de twee is dat Karate geen gebruik maakt van Java tijdens het testen, maar Cucumber wel.
Dit is precies de reden waarom het geschikt is voor niet-programmeurs, aangezien de syntaxis van augurken super leesbaar en uitgebreid is. Dit is de reden waarom Karate het meest geschikt en aanbevolen is om een intrede te doen in de wereld van geautomatiseerde API-testen.
Hier volgen enkele kenmerken van het Karate Testing Framework:
- Maakt gebruik van gemakkelijk te begrijpen augurken-taal.
- Het vereist geen technische programmeerkennis zoals Java.
- Het is gebaseerd op de populaire komkommernormen.
- Makkelijk om een kader te creëren.
- Parallel testen is de kernfunctionaliteit die wordt geboden door het Karate zelf, dus we hoeven er niet afhankelijk van te zijn Maven, Gradle , enzovoort.
- UI voor het debuggen van de test.
- Een feature-bestand aanroepen vanuit een ander bestand.
- Biedt ondersteuning voor de Data Driver Testing die intern is gebouwd, dus niet afhankelijk van externe frameworks.
- Ingebouwde native restrapporten. Bovendien kan het worden geïntegreerd met de komkommer voor betere gebruikersinterface-rapporten en meer duidelijkheid.
- Biedt interne ondersteuning voor het wisselen van configuratie tussen verschillende testomgevingen (QA, Stage, Prod, Pre-Prod).
- Naadloze ondersteuning voor CI / CD-integratie die handig kan zijn.
- Geschikt voor het afhandelen van verschillende HTTP-oproepen:
- Web Socket-ondersteuning
- SOAP-verzoek
- HTTP
- Browser cookie-afhandeling
- HTTPS
- HTML-formuliergegevens
- XML-verzoek
Karate versus gerustgesteld vergelijken
Wees gerustgesteld : Het is een op Java gebaseerde bibliotheek om de REST-services te testen. Het gebruikt Java-taal voor het schrijven van de coderegels. Het helpt bij het testen van talloze aanvraagcategorieën, wat verder resulteert in de verificatie van verschillende bedrijfslogica-combinaties.
Karate kader : Een op komkommer / augurken gebaseerde tool, gebruikt voor het testen van SOAP & REST-services.
De volgende tabel geeft een aantal meer prominente verschillen tussen Rest-Assured & Karate Framework:
S.No | Basis | Karate kader | Wees gerustgesteld |
---|---|---|---|
7 | Rapporteren | Het biedt interne rapportage en hoeft dus niet afhankelijk te zijn van externe plug-ins. We kunnen het zelfs integreren met de rapportageplug-in Cucumber voor een betere gebruikersinterface. | Moet afhankelijk zijn van externe plug-ins zoals Junit, TestNG |
een | Taal | Het maakt gebruik van een combinatie van komkommer en augurken | Het maakt gebruik van Java-taal |
twee | Code Grootte | Meestal is de regel code kleiner, omdat deze een komkommerachtige structuur volgt | Regel code is meer omdat het het gebruik van Java-taal betreft |
3 | Technische kennis vereist | Niet-programmeurs kunnen gemakkelijk de augurkencode schrijven | Technische kennis is vereist om Java-code te schrijven |
4 | Gegevensgestuurd testen | U moet TestNG of gelijkwaardig gebruiken om hetzelfde te ondersteunen | In-house tags kunnen worden gebruikt om het testen van gegevens te ondersteunen |
5 | Biedt het SOAP-oproepondersteuning | Ja, het biedt | Het is alleen gerelateerd aan een REST-verzoek |
6 | Parallel testen | Ja, parallel testen wordt ook gemakkelijk ondersteund met het genereren van parallelle rapporten | Niet in grote mate. Hoewel mensen dit hebben geprobeerd, is het percentage mislukkingen meer dan het slagingspercentage |
8 | CSV-ondersteuning voor externe gegevens | Ja, van Karate 0.9.0 | Nee, u moet Java-code of bibliotheek gebruiken |
9 | Web UI-automatisering | Ja, vanaf Karate 0.9.5 is Web-UI Automation mogelijk | Nee, het wordt niet ondersteund |
10 | Voorbeeld GET | | |
Daarom, zoals aangetoond door de bovenstaande verschillen, is het veilig om te zeggen dat karate een van de gemakkelijkste dingen is die iemand kan doen.
Benodigde hulpmiddelen voor het werken met Karate Framework
Nu we onze basiskennis over Karate Framework op orde hebben, laten we eens kijken naar de processen en tools die nodig zijn bij het opzetten van de Karate-omgeving.
# 1) Verduistering
Eclipse is een geïntegreerde ontwikkelomgeving die wordt gebruikt op het gebied van computerprogrammering. Het wordt meestal gebruikt voor Java-programmering. Zoals eerder vermeld, is Karate geschreven in Java, dus het is logischer waarom Eclipse de go-to IDE is voor de API-testsoftware. Een andere reden is dat het een open-source tool is, en dit is een vrij sterke reden om voor deze tool te kiezen.
Opmerking: We zouden zelfs IntelliJ, Visual Studio en andere verschillende editors op de markt kunnen gebruiken.
# 2) Maven
Dit is een build-automatiseringstool die voornamelijk wordt gebruikt voor het bouwen van Java-projecten. Het is een manier om een Karate-omgeving op te zetten en de code te schrijven. Om uw Eclipse met Maven-vereisten in te stellen, kunt u klikken op hier voor Maven-installatie.
Gebruik tijdens het werken in Maven Maven-afhankelijkheden die u kunnen helpen bij het ondersteunen van Karate Framework.
De volgende afhankelijkheden worden gebruikt met Maven in pom.xml.
Opmerking: De nieuwste versies zijn mogelijk beschikbaar in de Maven-repository.
hoe je een penetratietest doet
# 3) Grijpen
Gradle is een alternatief voor Maven en kan in gelijke hoedanigheid worden gebruikt. Ze hebben hun overeenkomsten en verschillen, maar kunnen evengoed worden gebruikt bij het opzetten van een omgeving voor onze karatecodes.
Het is gemakkelijker te gebruiken, flexibel en wordt aanbevolen om te gebruiken wanneer onze applicatie enkele modularisatie- en beheervereisten heeft met een heleboel plug-ins. De Gradle-installatiecode zou er ongeveer zo uitzien,
Opmerking: Je zou beide kunnen gebruiken MAVEN of GRADLE.
# 4) Java-omgeving instellen in uw systeem
U moet de JDK- en JRE-omgeving instellen om aan de slag te gaan met de Karate Framework-scripts.
Structuur van Karate Test Script
Een Karate-testscript staat bekend om het bezit van de extensie '.feature'. Deze eigenschap is overgenomen van Komkommer. De organisatie van bestanden in Java-conventie is eveneens toegestaan. U bent vrij om uw bestanden te ordenen volgens de Java-pakketconventies.
De Maven-richtlijnen schrijven echter voor dat de opslag van niet-Java-bestanden afzonderlijk moet gebeuren. Ze zijn gedaan in een src / test / resources structuur. En de Java-bestanden worden onder gehouden src / main / java
Maar volgens de makers van het Karate Framework zijn ze er sterk van overtuigd dat we zowel Java- als niet-Java-bestanden naast elkaar houden. Volgens hen is het veel gemakkelijker om uit te kijken naar de * .java- en * .feature-bestanden wanneer ze bij elkaar worden gehouden, in plaats van de standaard Maven-structuur te volgen.
Dit kan eenvoudig worden gedaan door uw pom.xml als volgt aan te passen (voor Maven):
Hieronder volgt de schets van de algemene structuur van Karate Framework:
Nu, aangezien dit Karate Framework het Runner-bestand gebruikt, dat ook nodig is in Cucumber om de feature-bestanden uit te voeren, zal het meeste schrijven de Cucumber-normen volgen.
Maar, in tegenstelling tot Komkommer, vereisen de stappen geen duidelijke definitie in Karate en die op hun beurt de flexibiliteit en het bedieningsgemak vergroten. We hoeven niet de extra lijm toe te voegen die we gewoonlijk moeten toevoegen als we het komkommer-raamwerk volgen.
De klasse “Runner” wordt meestal genoemd TestRunner.java.
Het bestand TestRunner.java heeft dan de vorm van:
En praten over de .voorzien zijn van -bestand bevat het alle testscenario's die moeten worden getest om er zeker van te zijn dat de API werkt volgens de verwachte vereisten.
Een algemeen * .feature-bestand ziet er ongeveer zo uit als hieronder:
Het eerste basistestscript voor karate maken
Deze sectie zal je helpen om aan de slag te gaan met het maken van je allereerste Test Script, wat handig zal zijn om API's te converteren in de vorm van een Karate framework.
Voordat we de basistestscripts voor Karate schrijven, moet u de volgende vereisten op uw machine installeren:
- Eclipse IDE
- Maven. Stel het juiste Maven-pad in.
- JDK & JRE. Stel het juiste pad in.
Laten we eens kijken naar de stapsgewijze aanpak:
# 1) Maak een nieuw MAVEN Project in Eclipse Editor
- Open Eclipse
- Klik op Bestand. Selecteer Nieuw project.
- Selecteer Maven Project
- Kies de locatie van de werkruimte.
- Selecteer het archetype (meestal kiezen we ' Maven-archetype-snelstart 1.1 ”Voor eenvoudige Maven-projecten).
- Geef de groeps-ID en de artefact-ID op (we hebben de volgende waarden gebruikt in ons voorbeeld).
- Groeps-ID : Karate
- Artefact-ID: KarateTestScripts Voorbeeld
- Klik op Voltooien om de installatie te voltooien.
#twee) Eenmaal aangemaakt, kunt u nu de volgende structuur zien in het venster Projectverkenner.
# 3) Neem al uw afhankelijkheden op.
Onze allereerste stap, na de installatie zullen we zijn inclusief alle afhankelijkheden dat nodig is voor de uitvoering. We bewaren alle tags onder de POM.xml (ervan uitgaande dat u al op de hoogte bent van het gebruik van POM.xml).
- Open POM.xml en kopieer de onderstaande code onder de afhankelijkheidstag en sla het bestand op.
Klik hier voor de bron.
# 4) Laten we brainstormen over het scenario, wat gaan we testen in dit Karate Basic Test Script.
xbox one virtual reality headset releasedatum
Scenario:
Hiermee gaan we een API testen URL.
Pad: api / gebruikers / 2
Methode: KRIJGEN
En we moeten valideren , of het verzoek een Succescode (200) of niet.
In eenvoudige bewoordingen gaan we gewoon een voorbeeld-API testen om te zien of deze met succes wordt uitgevoerd.
Opmerking: We nemen een voorbeeld-API die beschikbaar is om te testen. U kunt elk PAD kiezen of verwijzen naar uw API.
Klik hier voor de bron.
# 5) Nu zou onze volgende stap zijn om een .voorzien zijn van het dossier.
Zoals besproken in het inleidende gedeelte, is het .feature-bestand is de eigenschap die is geërfd van Komkommer. In dit bestand zullen we de testscenario's schrijven die moeten worden uitgevoerd om de API-tests uit te voeren.
- Ga naar map src / test / java in uw project.
- Klik er met de rechtermuisknop op en maak een nieuw bestand - userDetails.feature. Klik vervolgens op de knop Voltooien.
Nu zie je het volgende bestand onder de map src / test / java
De Groen gekleurd pictogram lijkt op de .functie fi le in Komkommer die we zojuist hebben gemaakt.
- Nadat het bestand is gemaakt, zullen we nu onze testscenario's schrijven die in de volgende sectie zullen worden besproken.
# 6) Omdat we het scenario en de blanco hebben. voorzien zijn van bestand gereed, laten we nu aan de slag gaan met ons eerste script. Laten we beginnen met coderen
Schrijf de volgende regel code onder userDetails.feature-bestand dat we in stap # 5 hebben gemaakt:
Laten we proberen de componenten te begrijpen die in het bovenstaande bestand zijn geschreven:
- Voorzien zijn van: Trefwoord verklaart de naam van de functie die we testen.
- Achtergrond: Dit is een optionele sectie die wordt behandeld als een vereiste sectie. Dit kan worden gebruikt om te bepalen wat er allemaal nodig is om de API te testen. Het bevat HEADER, URL & PARAM opties.
- Scenario: Elk feature-bestand dat u ziet, heeft ten minste één feature (hoewel het meerdere scenario's). Het is de beschrijving van de testcase.
- Gegeven: Het is de stap die moet worden uitgevoerd voordat een andere teststap wordt uitgevoerd. Het is een verplichte handeling die moet worden uitgevoerd.
- Wanneer: Het specificeert de voorwaarde waaraan moet worden voldaan om de volgende teststap uit te voeren.
- Vervolgens: Het vertelt ons wat er moet gebeuren in het geval dat de aandoening die wordt genoemd in de Wanneer is tevreden.
Opmerking: Alle bovengenoemde sleutelwoorden zijn afkomstig uit de taal van augurken. Dit zijn de standaardmanieren om de testscripts te schrijven met Cucumber.
En nog enkele woorden die in het feature-bestand worden gebruikt, zijn:
- 200: Het is de status- / responscode die we verwachten (klik hier voor de lijst met statuscodes)
- KRIJGEN: Het is de API-methode zoals POST, PUT, etc.
We hopen dat deze uitleg voor u gemakkelijk te begrijpen was. Nu kunt u zich verhouden tot wat er precies in het bovenstaande bestand is geschreven.
Nu moeten we een TestRunner.java-bestand maken
Zoals uitgelegd in de bovenstaande sectie, heeft Cucumber een Runner-bestand nodig dat nodig is om het .voorzien zijn van bestand dat de testscenario's bevat.
- Ga naar map src / test / java in uw project
- Klik er met de rechtermuisknop op en maak een nieuw Java-bestand: TestRunner.java
- Nadat het bestand is gemaakt, plaats de volgende regels code eronder:
- Testrunner is het bestand dat nu wordt uitgevoerd om het gewenste scenario uit te voeren dat is geschreven onder stap # 5.
# 7) Nu zijn we klaar met beide bestanden TestRunner.Java en userDeatils.feature. De enige taak die we nog hebben, is om Rennen het script.
- Ga naar het TestRunner.java-bestand en klik met de rechtermuisknop op het bestand zoals weergegeven in de onderstaande afbeelding.
- Kies Uitvoeren als -> Junit-test
- Nu, eenmaal geselecteerd, begint u te observeren dat de testcase nu is gestart.
- Wacht tot het testscript is uitgevoerd. Als je klaar bent, zie je zoiets als in de onderstaande afbeelding in je venster.
- Ten slotte kunnen we zeggen dat we met succes onze allereerste basis hebben gemaakt Testscript de ... gebruiken Karate kader.
# 8) Ten slotte geeft het Karate-raamwerk ook een HTML-rapportpresentatie voor de uitvoering die is uitgevoerd.
- Ga naar Doelmap -> surefire-rapporten-> Hier ziet u uw HTML-rapport dat u kunt openen.
** We raden u ook aan hetzelfde te openen met de Chrome-browser voor een beter uiterlijk en gevoel.
- Het volgende HTML-rapport wordt u afgebeeld Scenario's en testen dat is uitgevoerd voor het genoemde scenario:
Gevolgtrekking
In deze tutorial hebben we API-testen besproken, verschillende testtools die op de markt beschikbaar zijn, en hoe het Karate Framework een betere optie is in vergelijking met zijn tegenhangers.
We hebben een stapsgewijze aanpak gevolgd om ons eerste basistestscript te maken. We zijn begonnen met het maken van een basis Maven-project in Eclipse IDE om een .feature-bestand te maken, dat alle testscenario's en een Runner-bestand bevat om de testcase uit te voeren die in het .feature-bestand wordt vermeld.
Aan het einde van de verschillende stappen konden we het uitvoeringsrapport van de testresultaten zien.
We hopen dat deze tutorial nuttig was voor beginners bij het leren hoe ze hun eerste testscript konden bouwen met behulp van het Karate Framework en API-testen konden uitvoeren. Deze gedetailleerde stapsgewijze aanpak is een geweldige manier om verschillende tests op de API uit te voeren en uit te voeren.
Aanbevolen literatuur
- Het Node.js-testframework instellen: Node.js-zelfstudie
- Parasoft SOAtest-zelfstudie: scriptloze API-testtool
- Mockito-zelfstudie: Mockito-raamwerk voor bespotten bij het testen van eenheden
- Zelfstudie over API-testen: een complete gids voor beginners
- TestNG-zelfstudie: inleiding tot TestNG-framework
- Jest Tutorial - JavaScript-eenheid testen met Jest Framework
- Tutorial over destructief testen en niet-destructief testen
- Hoe Postman te gebruiken voor het testen van verschillende API-indelingen?