Reading Time: 5 mins

API-testen met REST Assured

API-testen met REST Assured

Alles testen via de gebruikersinterface is complex, kostbaar en tijdrovend. Met een steeds groter wordende behoefte om applicaties op verschillende apparaten en onderling verbonden systemen te ondersteunen; een minimale architectuur met drie lagen is de de facto geworden voor applicatieontwikkeling waarbij de core business logica ligt in de ‘Service Layer’. Testen op serviceniveau wordt daarom belangrijk.

Ik ben hier om mijn ervaring te delen met het gebruik van Rest-Assured voor API-testen om krachtige, leesbare en onderhoudbare geautomatiseerde tests voor RESTful API’s te schrijven.

Wat is REST Assured?

REST Assured is een Java Domain Specific Language API voor het vereenvoudigen van het testen van RESTful-webservices. REST Assured API kan worden gebruikt om REST-webservices aan te roepen en de inhoud van reacties te matchen om ze te testen. REST Assured kan worden gebruikt om zowel XML- als JSON-gebaseerde webservices te testen. REST Assured kan worden geïntegreerd met JUnit- en TestNG-frameworks voor het schrijven van testcases voor onze applicatie.

REST Assured ondersteunt POST-, GET-, PUT-, DELETE-, OPTIONS-, PATCH- en HEAD-verzoeken en kan worden gebruikt om het antwoord op deze verzoeken te valideren en te verifiëren.

Hoogtepunten

  • Ondersteunt JSON-validator en JSON Path & XML Path om het antwoord te ontleden en te verifiëren
  • Ondersteunt het uploaden van meerdere bestanden en verschillende authenticatiemechanismen
  • Eenvoudige validatie van technische responsgegevens
  • Ondersteunt gegevensgestuurd testen
  • Ondersteuning Logboekverzoek & reactiedetails

Een uitkering

  • Verwijdert de noodzaak om veel code te schrijven die nodig is om een HTTP-verbinding op te zetten, een verzoek te verzenden, een reactie te ontvangen en te ontleden en te valideren
  • Ondersteunt BDD-stijl Given/When/Then-testnotatie, waardoor de tests beter leesbaar zijn
  • Omdat het een Java-bibliotheek is, integreert het gemakkelijk in een continue integratie / continue leveringsconfiguratie, vooral in combinatie met een Java-testraamwerk zoals JUnit of TestNG

Gerust stroomschema

Software QA

Voorbeeld XML Post-verzoek met Rest-Assured

Hier is een voorbeeldprogramma dat aanvragen plaatst met XML-payload.

XML-payload die in een bestand is opgeslagen, wordt gelezen en geserialiseerd als payload. De functie Log().all() wordt gebruikt om alle verzoekspecificaties en reacties te loggen. AssertThat().statusCode() wordt gebruikt om de statuscode van het ontvangen antwoord te bevestigen.

import statische io.restassured.RestAssured.given;

importeer io.restassured.http.ContentType;

import io.restassured.response.Response;

 

openbare klasse RestAssured {

openbare Reactie apiResponse;

 

public boolean postXmlData(String ApiURL, File xmlFile) genereert IOException {

boolean getResponse = false ;

probeer {

Pad xml_Path = Paden. krijgen (xmlFile);

byte [] xmlData = Bestanden. readAllBytes (xml_Path);

String myRequest = new String(xmlData, “ISO-8859-1”;

apiResponse = gegeven ().log().all().

contentType (ContentType. XML ).

accepteren (ContentType. XML ).

lichaam (mijnVerzoek).

wanneer().

bericht(ApiURL);

apiResponse.then().log().all().

assertThat().statusCode(200);

getResponse = waar ;

} catch (AssertionError e) {

e.printStackTrace();

}

retour getResponse;

}

}

Voorbeeld ontleden van XML-antwoorden

Laten we eens kijken naar het ontvangen antwoord in het volgende formaat:

Z-123

een wandelaar

Alan

wandelaar

awalker@testmail.com

Het volgende voorbeeldprogramma parseert het antwoord met xmlPath(), stelt de root in op ‘respons.empdetails’ en kan elk knooppuntwaarde krijgen

public String getValueFromXmlResponse (String rootNode, String getNodeValue) {

String nodeValue = null ;

probeer {

nodeValue =apiResponse.xmlPath().setRoot(rootNode).getString(getNodeValue);

} catch (AssertionError e) {

e.printStackTrace();

}

return nodeValue;

}

REST Assured biedt een breed scala aan andere handige functies met een korte leercurve. Met de juiste wrapper-methoden voor één doel kan men eenvoudig krachtige geautomatiseerde tests voor RESTful API’s maken met Rest-Assured. Vanuit onze ervaring met het gebruik van verschillende tools voor API-testen , zien we Rest-Assured als een perfecte oplossing voor automatiseringsprojecten wanneer Java de voorkeurstoolstack is – OpenSource

Keerthi Veerappan

An INFJ personality wielding brevity in speech and writing. Marketer @ Zucisystems.