web services testing using apache http client
Deze tutorial gaat over het uitvoeren van verschillende CRUD-bewerkingen op webservices en het testen van webservices met Apache HTTP Client:
In deze Voltooi de serie API-testtutorials hebben we geleerd dat webservices fungeert als communicatiemedium tussen client- en servermachines die via een netwerk communiceren. We hebben er alles over uitgelegd API-testen met POSTMAN in onze vorige tutorial.
In dit artikel leggen we de nadruk op het testen van webservices met Apache HTTP Client en het uitvoeren van verschillende CRUD-bewerkingen op webservices. De verschillende soorten REST-clients die beschikbaar zijn voor backend-testen zullen ook worden besproken.
datagedreven raamwerk in selenium webdriver voorbeeld
Wat je leert:
Wat is een webservice?
Webservices zijn een communicatiemedium tussen client- en servermachines dat via een netwerk communiceert met behulp van HTTP-protocollen. Webservices zijn over het algemeen API's die niet lokaal zijn geïnstalleerd of opgeslagen, maar die beschikbaar zijn in clouds of op sommige externe servers.
Raadpleeg het onderstaande voorbeeld om te begrijpen hoe webservices werken.
MakeMyTrip en Goibibo.com zijn enkele van de beroemde websites voor het boeken van vluchten en hotels en er zijn verschillende leveranciers van vluchten beschikbaar, zoals Indigo, Air India en Etihad, enz.
Als een klant een vlucht van New York naar Londen wil boeken, kan hij ofwel rechtstreeks op het portaal van de vluchtleverancier bladeren of hij kan boeken via externe leveranciers. Als ze boeken via externe leveranciers zoals MakeMyTrip en andere boekingssites, zullen ze binnen een paar seconden vergelijken en resultaten tonen met vluchtdetails zoals de laagste prijs, vluchttijd en nog veel meer andere informatie.
De vraag is hier: hoe precies, binnen enkele seconden, verstrekken ze ons de informatie? Wat doen ze precies?
Vanuit de gebruikersinterface nemen ze alle benodigde informatie en slaan deze op in een JSON- of XML-bestand en roepen de API's van hun leverancier op met een authenticatietoken wanneer ze hun API's vrijgeven, en als reactie stuurt de site van de vluchtleverancier JSON / XML-respons terug naar MakeMyTrip, en ze converteren het ontvangen antwoord en geven details weer in de gebruikersinterface.
Soorten webservices
Er zijn twee soorten webservices, namelijk
- SOAP-API
- REST API
Laten we de verschillen tussen deze twee webservices bekijken, zoals vermeld in de onderstaande afbeelding.
JSON / XML-bestanden in webservice
Laat het S1-systeem worden geretourneerd in J2EE-taal en het S2-systeem wordt geretourneerd in .NET of Python en we weten dat beide technologieën ook volledig van elkaar verschillen met betrekking tot beveiligingsproblemen. Hoe zal het S2-systeem de code dan delen met een ander systeem?
Dus het S2-systeem stelt zijn API's bloot aan het S1-systeem zonder bedrijfslogica bloot te stellen, en het S2-systeem deelt API-naam, API-URL, API-indeling en authenticatiesleutel / tokensleutel om toegang te krijgen tot zijn systeem. Communicatie vindt plaats tussen de twee systemen met behulp van JSON- of XML-bestanden.
Waarom alleen JSON / XML-bestanden?
JSON / XML-bestanden worden gebruikt omdat dit gegevensverzamelaars zijn. Alle specifieke informatie wordt opgeslagen in JSON- of XML-indeling, aangezien deze lichtgewicht zijn en de standaardtaal is om te communiceren tussen twee verschillende interfaces / platforms of systemen.
API wordt dus altijd gebruikt wanneer twee onafhankelijke systemen met elkaar communiceren, hetzij lokaal, binnen het systeem, of via het netwerk.
Wat is REST-client?
REST Client is een tool die de API's aanroept. Het wordt gebruikt in backend-testen wanneer er geen gebruikersinterface is om de API's aan te roepen. Enkele populaire REST-clients zijn Apache HTTP-client, POSTMAN, SOAP UI, Swagger en nog veel meer.
Hier, in dit artikel, zullen we alleen de Apache HTTP-client bespreken en we zullen in onze toekomstige artikelen andere verschillende HTTP-clients behandelen.
Http-client instellen in Eclipse
# 1) Open Eclipse en maak een nieuw Maven-project.
#twee) Verwijder door MAVEN geleverde dummy-pakketten, d.w.z. 'Src / main / java' en 'Src / test / java'
# 3) Ga naar het pom.xml-bestand en verwijder de JUnit-afhankelijkheid omdat we deze niet nodig hebben.
# 4) Vervolgens hebben we de HTTP Client-bibliotheek, HTTP Core-bibliotheek, JSON Parser-bibliotheek, TestNG-bibliotheek, Jackson-data bind-bibliotheek nodig
# 5) Voeg bovenstaande afhankelijkheden (bibliotheek) toe in het pom.xml-bestand.
HTTP-clientbibliotheek:
HTTP Core-bibliotheek:
JSON Parser-bibliotheek:
TestNG bibliotheek:
# 6) Download de nieuwste en stabiele versies. We zullen geen Selenium-pot toevoegen aan ons project, omdat we volledige backend-tests uitvoeren. Het uiteindelijke pom.xml-bestand ziet eruit zoals in onderstaande afbeelding:
# 7) Maak vervolgens een raamwerk voor uw API-test
naar) Maak een pakket 'com.qa.config' Maak een bestand 'config.properties' en sla alle URL's op.
b) Maak een ander pakket 'qa.com.base' Maak een klasse 'testBase.java' die een bovenliggende klasse zal zijn voor alle klassen. Het bevat algemene functies die door alle methoden kunnen worden gebruikt.
c) Maak een ander pakket 'com.qa.client' en klasse 'restClient.java'. Dit bevat code om GET, POST, DELETE, PUT-oproepen op te halen.
d) Maak een ander pakket 'com.qa.data' en klasse 'user.java' die verschillende gebruikerseigenschappen definieert.
is) Maak tenslotte een pakket 'com.qa.Test' onder 'src / test / java' en declareer een hoofdmethode en functies om alle GET-, PUT-, POST- en Delete-methoden te testen.
f) De uiteindelijke raamwerkstructuur ziet er als volgt uit:
g) Gebruik dummy-API die door deze site wordt geleverd REQ RES
HTTP-methoden of CRUD-bewerkingen
Laten we eens kijken naar verschillende HTTP-methoden of CRUD-bewerkingen die we automatiseren.
De onderstaande bewerkingen worden CRUD-bewerkingen genoemd:
- C : Create (betekent POST-oproep)
- R : Ophalen (betekent GET-oproep)
- U : Update (betekent PUT-oproep)
- D : Verwijderen (betekent oproep verwijderen)
Parameters in REST-webservices
Valideer of benadruk onderstaande parameters in REST Web Services:
(i) URI: URI is de combinatie van de parameter URL + pad en de queryparameter.
Voorbeeld: http://api.com/service/account/1
Hier, api.com is de URL voor de S2-server, onderhoud is de houder. Bij deze dienst gaat de houder naar de account class, en vanuit deze account class roept het de methode account = 1 aan. Bij elke oproep passeren we de URI.
(ii) Laadvermogen: JSON / XML-gegevens die we naar het systeem sturen.
(iii) Statuscode: Voor elke reactie krijgen we de statuscodes.
Hier worden enkele codes hieronder vermeld:
- 200: Ok, alles werkt prima.
- 201: Succesvol aangemaakt, telkens wanneer u een POST-oproep doet of een nieuwe entiteit maakt.
- 400: Payload is verkeerd, eind-URL is verkeerd, toont een onjuist verzoek.
- 404: Update of verwijder een entiteit en die entiteit is niet beschikbaar, dan krijgen we het resultaat als niet gevonden verzoek.
- 500: Stel dat de S2-server niet actief is, dan krijgen we een interne serverfout.
- 401: Authenticatiefout
Klik hier om alle statuscodes te krijgen.
(iv) Headers: Zoals authenticatietoken, gebruikers-ID / wachtwoord, inhoudstype, enz.
qa lead interview vragen en antwoorden pdf
CRUD-bewerkingen met Apache HTTP-client
# 1) GET Call
Hoe gedraagt de GET Call-bewerking zich?
Get Call verzendt het verzoek en ontvangt het antwoord terug. We geven hier geen JSON of de payload door, we geven één URI door, waarin de URL (eindpuntpadparameter, queryparameter) samen met de header, indien beschikbaar.
kwaliteitsborging en kwaliteitscontrole verschil
Houd onderstaande zaken in gedachten voordat u de GET Call-code schrijft:
- Een GET-methode nodig
- Dan heb je een URL nodig
- Zodra u op de verzendknop klikt, krijgt u het antwoord. Sla vervolgens het antwoord op.
- Statuscode nodig, kopteksten.
Raadpleeg de onderstaande schermafbeelding van de POSTMAN-client die GET-oproepantwoord weergeeft:
In restClient.java klasse,
(ik) Maak de GET-methode die de URL aanroept en het antwoord krijgt in de vorm van een JSON-object zonder koptekst.
(ii) Maak de hoofdklasse 'getAPITest.java' onder 'src / test / java'
Uitvoer
# 2) POST-oproep
POST Call maakt een account aan of maakt een nieuwe entiteit aan.
Voorbeeld - Geef deze details zoals naam, taak en koptekst door aan de JSON-payload. S2-server zal worden gekoppeld aan een database, bijvoorbeeld Oracle, en heeft een tabelnaam met de naam Accounttabel. POST-methode zal een invoer in de database creëren en de S2-server geeft de informatie door aan de S1-client. Onthoud dat de POST-aanroepbewerking altijd wordt gebruikt om een nieuwe entiteit te maken.
Bij de POST-methode moeten we de URL en de payload doorgeven.
Download deze afhankelijkheid omdat we de Java-klasse naar Java-object moeten converteren dan naar JSON-object.
In restClient.java klasse,
(ik) Maak een POST-methode, die de URL aanroept en het antwoord plaatst.
(ii) Maak de hoofdklasse “postAPI_Test.java” aan onder “src / test / java”.
Uitgang:
# 3) PUT-oproep
Met behulp van de PUT-aanroepbewerking kunt u een nieuwe entiteit maken en een bestaande entiteit bijwerken.
In restClient.java klasse,
(ik) Maak een PUT-methode, die de URL aanroept en het antwoord bijwerkt.
(ii) Maak de hoofdklasse 'putAPI_Test.java' onder 'src / test / java'
Uitvoer
# 4) Oproep verwijderen
Het verwijderen van een oproep is eenvoudig, d.w.z. verwijder het account-ID-100 en geef de informatie door in een JSON-bestand.
In restClient.java klasse,
(ik) Create Delete Method, die de URL aanroept en het record verwijdert.
(ii) Maak de hoofdklasse “deleteAPI_Test.java” onder “src / test / java”.
Uitvoer
Voordat u een reactie valideert, moet u de juiste URL van de ontwikkelaar krijgen, controleer vervolgens of u de verwachte respons van de server krijgt, bereid testcases voor elk scenario voor en rangschik testcases op volgorde van functionaliteit.
Gevolgtrekking
In dit artikel hebben we met codevoorbeelden in detail besproken hoe je Apache HTTP Client kunt gebruiken voor het automatiseren van POST-, PUT-, GET- en Delete-oproepen. We hebben ook de typen webservices besproken en het belang van JSON / XML-bestanden en waarom ze worden gebruikt.
PREV-zelfstudie EERSTE Tutorial
Aanbevolen literatuur
- Webservices-zelfstudie: componenten, architectuur, typen en voorbeelden
- 15+ SoapUI-zelfstudies: de beste API-testtool voor webservices
- Vragen en antwoorden voor sollicitatiegesprekken bij Amazon Web Services (AWS)
- Top 20 RESTful Web Services interviewvragen en antwoorden
- Top 25 vragen en antwoorden voor Java Web Services-sollicitatiegesprekken
- Top 45 vragen en antwoorden over webservices tijdens sollicitatiegesprekken (RESTful, SOAP, beveiligingsvragen)
- Prestatietests van webservices met behulp van LoadRunner VuGen-scripts
- Zelfstudie over API-testen: een complete gids voor beginners