rest api testing with spring resttemplate
Deze diepgaande zelfstudie legt uit hoe u aan de slag kunt gaan met REST API-testen met Spring RestTemplate en TestNG met eenvoudige voorbeelden:
In dit artikel zullen we zien hoe u aan de slag kunt gaan met REST API-testen met RestTemplate en TestNG-framework.
Voordat we REST API-testen met RestTemplate en TestNG-framework gaan verkennen, moeten we enkele van de basisconcepten die daarbij betrokken zijn, begrijpen.
Laten we beginnen!!
Wat je leert:
- Wat is REST?
- Wat is JSON?
- Wat is REST API-testen?
- Wat is TestNG?
- Wat is een Spring REST-sjabloon?
- REST API-teststappen
- TestNG Test Framework instellen op Windows
- Voltooi TestCRUD-bestandscode
- Gevolgtrekking
- Aanbevolen literatuur
Wat is REST?
Tegenwoordig is REST een vrij populaire keuze geworden voor het bouwen van webservices. Bijvoorbeeld , Google heeft meerdere REST-services zoals Agenda, Map API , enz.
RUST UIT d.w.z. Representatieve staatsoverdracht is een softwarearchitectuurstijl. In deze stijl wordt een reeks beperkingen gedefinieerd en zijn webservices gebouwd om aan deze beperkingen te voldoen. Dergelijke webservices die voldoen aan de REST-architectuurstijl staan bekend als RESTful Web Services.
De term 'Representatieve staatsoverdracht' werd voor het eerst aangedragen door Roy Fielding in zijn Ph.D. proefschrift in het jaar 2000. Het basisidee van REST is om server-side objecten te behandelen als bronnen die kunnen worden gemaakt of verwijderd.
Wat is JSON?
JSON d.w.z. JavaScript-objectnotatie is een veelgebruikte syntaxis in REST-services voor het opslaan en uitwisselen van gegevens tussen de browser en de server.
Het belangrijkste voordeel van JSON is het lichte gewicht en ten tweede het leesbare formaat. De gegevens worden opgeslagen in de indeling sleutel: waardepaar. Bijvoorbeeld, u kunt de werknemersgegevens als volgt in JSON-formaat laten opslaan: {'naam': 'Emp1 ″,' salaris ':' 3000 ″, 'leeftijd': '23 ″,' id ':' 52686 ″}.
Wat is REST API-testen?
Als we het hebben over REST API-testen, is het in feite het testen van de API door het uitvoeren van Create, Edit, Read en Delete-acties op de resource met vier hoofdmethoden, namelijk POST, GET, PUT en DELETE
Wat is TestNG?
TestNG is een testraamwerk dat is geïnspireerd door JUnit en NUnit. Het is voor de programmeertaal Java. TestNG omvat een breder scala aan testcategorieën, zoals eenheid, functioneel, end-to-end, integratie, enz.
Het is een open-source framework dat valt onder de Apache-licentie. Het biedt een uitgebreide reeks annotaties die de ontwikkeling van testscripts versnellen.
Wat is een Spring REST-sjabloon?
Spring RestTemplate-klasse is een onderdeel van het springweb dat in Spring 3 werd geïntroduceerd
De klasse RestTemplate biedt een zeer gemakkelijke manier om de op HTTP gebaseerde rustgevende webservices te testen door overbelaste methoden te bieden voor HTTP-methoden zoals GET, POST, PUT, DELETE, enz. Spring-framework is ook open-source.
REST API-teststappen
Laten we de stappen die gewoonlijk worden gevolgd in REST API-testen begrijpen met enkele voorbeelden om een duidelijk begrip te krijgen.
In dit artikel heb ik een voorbeeld van een REST API-medewerkersservice overwogen van deze bron.
Laten we de stappen in eerste instantie handmatig volgen met behulp van de POSTMAN-tool.
# 1) Weet eerst het eindpunt van de API waartoe u toegang wilt hebben.
Bijvoorbeeld, http://dummy.restapiexample.com/api/v1/create om een nieuwe resource voor medewerkers te maken
#twee) Stel Headers en Body in indien nodig voor de HTTP-methode.
In ons voorbeeld, omdat we proberen een nieuwe bron te maken met behulp van POST. Voor POST is een aanvraagtekst vereist.
Dus we zullen het lichaam als volgt instellen:
'Naam': 'zozo100 ″,' salaris ':' 123 ″, 'leeftijd': '23 ″
Aanvaarden : applicatie / JSON en Inhoudstype : applicatie / JSON.
software ontwikkeling levenscyclus waterval model
# 3) Stel in dit geval de juiste HTTP-methode in, d.w.z. POST.
# 4) Stuur een verzoek naar de Rest-serviceserver.
# 5) Ontvang een reactie van de server.
REST API-oproep met behulp van de POSTMAN-tool
# 6) Controleer de respons zoals verwacht met behulp van de responscode Bijv. 200 OK als een succes.
# 7) Verifieer de antwoordtekst zoals verwacht, indien nodig, door deze te vergelijken met uw benchmarkbestand.
Nu moeten we dezelfde stappen automatiseren voor onze Test Automation-suite. Laten we beginnen met de installatie die nodig is voor automatisering.
TestNG Test Framework instellen op Windows
# 1) Installatie
- We gaan Java gebruiken voor de ontwikkeling van testscripts. Dus, eerste download JDK-installatieprogramma voor Windows en installeer Java op uw computer.
- IDE (Integrated Development Environment) : Ik heb Eclipse als IDE gebruikt voor de ontwikkeling van mijn Automation Test Suite. Klik hier om het te downloaden.
- Download de Eclipse-plug-in voor TestNG: Merk op dat Java 1.7+ vereist is om TestNG uit te voeren voor de Eclipse-plug-in. Eclipse 4.2 en hoger is vereist. (Referentie: TestNG Volg de onderstaande stappen in Eclipse:
- Selecteer Help / Nieuwe software installeren.
- Klik op Toevoegen -> Voer http://beust.com/eclipse/ in
- Schakel het selectievakje naast de URL in en klik op de knop Volgende.
TestNG-installatie
-
- Blijf op de knop Volgende klikken totdat u het volgende scherm bereikt.
TestNG installatie laatste scherm
Accepteer ten slotte de Apache-licentieovereenkomst en klik op de knop Voltooien om de installatie te voltooien.
Start Eclipse opnieuw om de installatie van de plug-in van kracht te laten worden.
- Lente potten: Nu nog een laatste ding, we gaan de klasse RestTemplate uit het spring-framework gebruiken. Jij kan download lente-potten en sla het op in een lokale map, Bijvoorbeeld C: / projectJar
- JSON-Simple Jars: We moeten JSON-parsing uitvoeren. Daarvoor gebruiken we een lichtgewicht Json-simple API. Dus download Json-simple-1.1.jar naar C: / projectJar
Nu hebben we de nodige installaties voltooid. Dus laten we ons Test Automation-project maken.
# 2) Projectopstelling
- Bestand maken -> Nieuw -> Java-project -> Noem het als ‘ EmployeeTestSuite ’.
- Maak nu een nieuw Java-pakket com.demo
- Configureer het buildpad:
- Zoals je in de eerdere sectie hebt gezien, hebben we TestNG, gedownloade spring- en JSON-simple jars geïnstalleerd. Dus nu moeten we een bouwpad aan ons project toevoegen om die te consumeren. Maak daarvoor een lib map in de EmployeeTestSuite map en kopieer nu alle potten van de C: / projectJar naar het lib map.
- Klik met de rechtermuisknop op ‘ EmployeeTestSuite ’’ -> Build Path -> Build Path configureren.
- Klik op de lib tabblad.
- Klik op de Bibliotheek toevoegen knop -> Selecteer TestNG. Dit zal TestNG toevoegen aan het buildpad.
- Klik op Voeg potten toe knop -> Selecteer alle potten uit lib. Hiermee worden alle springpotten en JSON-simple jar toegevoegd aan het bouwpad van je project.
Java-buildpad
Uw projectstructuur wordt nu als volgt weergegeven in de Eclipse Package Explorer.
Pakketstructuur
# 3) Testklasse
We moeten een testklasse maken die CRUD-bewerkingen (Create-Read-Update-Delete) kan omvatten.
Maak een nieuwe klasse File -> New -> TestNG class, en noem deze TestCRUD.java
# 4) Testmethode
Laten we aparte testmethoden maken:
- addEmployee (): Testmethode om Create API te testen met behulp van de HTTP POST-methode.
- getEmployee (): Testmethode om Read API te testen met behulp van de HTTP GET-methode.
- updateEmployee (): Testmethode om Update API te testen met behulp van de HTTP PUT-methode.
- deleteEmployee (): Testmethode om de Delete API te testen met behulp van de HTTP DELETE-methode.
U kunt een testmethode als elke Java-methode alleen maken met de @Test-annotatie van TestNG om deze te identificeren als de testmethode door het TestNG-framework
Bijvoorbeeld,het volgende is de addEmployee-testmethode.
In ons voorbeeld heb ik een voorbeeld REST-service.
Laten we nu de POST-oproep automatiseren. Daarvoor moeten we onze code een voor een in kaart brengen met de stappen die we handmatig hebben gevolgd in het gedeelte ‘REST API Testing Steps’.
# 1) Weet eerst het eindpunt van de API waartoe u toegang wilt.
#twee) Stel kopteksten in voor de HTTP-methode.
// Voeg headers toe
Stel Body in voor de HTTP-methode.
// Maak een HttpEntity-object door hoofdtekst en kopteksten in te stellen.
We zullen de volgende stappen in één verklaring laten automatiseren.
# 3) Stel in dit geval de juiste HTTP-methode in, d.w.z. POST.
# 4) Stuur een verzoek naar de RESTful-serviceserver.
c ++ instellen in eclipse
# 5) Ontvang een reactie van de server.
Wij gebruiken postForEntity om de POST-methode naar de server te sturen. We ontvangen het antwoord van het ResponseEntity-object van de server.
# 6) Controleer de respons zoals verwacht met behulp van de responscode.
Hier gebruiken we de Assert-toolklasse van TestNG om de statuscode assertEquals-methode te verifiëren die de werkelijke waarde, d.w.z. response.getStatusCode (), vergelijkt met de verwachte waarde HttpStatus.OK.
Maar hier doen we nog een verificatie, d.w.z. verifiëren of de toegevoegde werknemer aanwezig is in de antwoordtekst of niet.
Hoe hebben we de employeeId gekregen?
Hiervoor gebruiken we de hulp van JSON-parser-API, d.w.z. Json-simple.
We gebruiken JSON-parser, omdat het JSON-formaat wordt gebruikt voor het opslaan en uitwisselen van gegevens tussen de client en onze server in onze REST-service voor werknemers. Zoals eerder vermeld, worden JSON-gegevens opgeslagen in sleutel waarde formaat. Hier willen we de 'ID kaart' waarde.
We krijgen het door de antwoordtekst als volgt te parseren:
Dus dit gaat allemaal over de Create method-test.
Methoden bijwerken, ophalen en verwijderen
- Maak afzonderlijke testmethoden en stel Headers in zoals van toepassing.
- Verificatie van de statuscode wordt ook op dezelfde manier gedaan.
- Het belangrijkste verschil zijn de methoden voor het verzenden van een verzoek naar de servers.
U kunt de volgende methoden gebruiken:
# 1) Werk medewerker bij : Het is het HTTP PUT-verzoek. De RestTemplate PUT-methode die u kunt gebruiken, is:
# 2) Krijg werknemer: Het is het HTTP GET-verzoek. De RestTemplate GET-methode die u kunt gebruiken, is als volgt:
# 3) Werknemersresource verwijderen: Het is het HTTP DELETE-verzoek. De RestTemplate DELETE-methode die u kunt gebruiken, is:
Afgezien van deze methoden zijn er exchange () en execute () nuttige methoden.
Bijvoorbeeld als u opmerkt, is de verwijdermethode ongeldig. Maar als u de antwoordtekst wilt verifiëren, heeft u een antwoord nodig van de uitvoering van de methode. Voor dat doel kunt u de methode exchange () gebruiken die ResponseEntity retourneert. Verwijs naar de Lente kader voor meer details.
# 5) De tests uitvoeren
Nu hebben we onze ontwikkelingstaak voor testscript voltooid, dus laten we onze tests uitvoeren. Klik gewoon met de rechtermuisknop op TestCRUD.java en selecteer de optie ‘Uitvoeren als TestNG-test’
Hierdoor worden de resultaten van de testuitvoer als volgt weergegeven.
Console-uitgang
Notitie: U kunt uw testsuite definiëren in testng.xml bestand ook. In ons voorbeeld is het slechts één testscript. Maar in het echte scenario is het altijd een verzameling van meerdere scripts.
Dus je testg.xml-bestand ziet er als volgt uit:
# 6) Rapporten
We hebben het resultaat op de console gezien. Maar TestNG biedt testresultaten in een meer presentabel html-formaat dat kan worden gedeeld met uw belanghebbenden. Open test-output e-mailbaar-rapport.html in de browser.
U ziet het testrapport als volgt. Op de rapportpagina kunt u de testnaam zien als TestCRUD, verschillende geslaagde tests, d.w.z. 4, aantal overgeslagen en mislukt, wat in dit geval 0 is. Het toont ook de totale tijd die nodig is voor de uitvoering van elke testmethode.
Testresultaat in html-indeling
Voltooi TestCRUD-bestandscode
Gevolgtrekking
We hebben het leerresultaat van dit artikel hieronder samengevat. We hebben vanaf het begin alle stappen gezien om een REST API Test Automation Framework op te zetten.
Hierin hebben we het volgende geleerd:
- Voor testautomatisering hebben we Java als programmeertaal gekozen.
- We hebben TestNG gekozen als het testraamwerk voor het maken van een testscript waarin we TestNG-annotaties zoals @Test hebben gebruikt.
- Voor het verzenden van daadwerkelijke HTTP-verzoeken naar de server hebben we de Spring framework RestTemplate-klasse gebruikt.
- Voor het gebruik van deze API's hebben we TestNG geïnstalleerd, Spring Jars gedownload en Json-simple jar voor de parser-API gedownload.
- Ten slotte hebben we de Test-klasse uitgevoerd en het resultaat zowel op de console als in een meer presentabel en beter leesbaar HTML-formaat gezien.
Kort samengevat, in dit artikel hebben we geleerd hoe we aan de slag kunnen gaan met REST API Test-automatisering met Spring RestTemplate. We behandelden het opzetten van ons testautomatiseringsraamwerk vanaf de installatie van alle essentiële software, projectopstelling, testscriptontwikkeling tot testuitvoering en het bekijken van de gegenereerde rapporten.
Dit is redelijk voldoende voor elke automatisering QA om aan de slag te gaan met uw testautomatiseringsraamwerk. Maar we hebben alleen de vereiste onderdelen van elk gezien. We hebben bijvoorbeeld TestNG-installatie gebruikt, testmethode met @Test-annotatie, rapporten. TestNG biedt echter veel meer functies, zoals DataProvider voor datagestuurd testen, enz.
Bent u klaar om aan de slag te gaan met REST API Testautomatisering met Spring RestTemplate?
Aanbevolen literatuur
- 10 beste API-testtools in 2021 (SOAP- en REST API-testtools)
- Beste softwaretesttools 2021 (QA Test Automation Tools)
- Primer eBook downloaden testen
- Top 20 belangrijkste API-testvragen en antwoorden voor interviews
- API-testen eenvoudig maken met Katalon Studio
- Parasoft SOAtest-zelfstudie: scriptloze API-testtool
- Laadtests met HP LoadRunner-zelfstudies
- Verschil tussen Desktop, Client Server Testing en Web Testing