API testen: een complete gids voor beginners

Deze diepgaande API Testing Tutorial legt alles uit over API Testing, Web Services en hoe API Testing te introduceren in uw organisatie:

In deze inleidende tutorial krijgt u een diepgaand inzicht in API Testing, samen met het concept van shift-left testing en webservices.

Concepten zoals Web API, hoe API werkt (met een voorbeeld uit de praktijk) en hoe het verschilt van Web Services worden in deze tutorial goed uitgelegd met voorbeelden.

Lijst van API-testprogramma's

Tutorial #1: API testen: een complete gids voor beginners

Les 2: Web Services Tutorial: Componenten, architectuur, types & voorbeelden

Tutorial #3: Top 35 ASP.Net en Web API Interview Vragen met Antwoorden

Les 4: POSTMAN-handleiding: API testen met POSTMAN

Les 5: Webdiensten testen met behulp van Apache HTTP-client

Overzicht van de tutorials in deze serie API-tests

Tutorial # Wat je zult leren
Tutorial_#1: API testen: een complete gids voor beginners

Deze In-Depth API Testing tutorial legt alles uit over API Testing, en Web Services in detail, en leert u ook hoe u API Testing in uw organisatie kunt introduceren.

Tutorial_#2: Web Services Tutorial: Componenten, architectuur, types & voorbeelden

Deze Web Services tutorial verklaart de Architectuur, Types & Componenten van Web Services samen met Belangrijke Terminologieën en de Verschillen tussen SOAP vs REST.

Tutorial_#3: Top 35 ASP.Net en Web API Interview Vragen met Antwoorden

U kunt de lijst van de meest gestelde ASP.Net en Web API Interview vragen met antwoorden & voorbeelden voor beginners en ervaren professionals in deze tutorial.

Tutorial_#4: POSTMAN-handleiding: API testen met POSTMAN

Deze stap-voor-stap handleiding legt API Testing Using POSTMAN uit, samen met de basisprincipes van POSTMAN, de onderdelen ervan en voorbeeld Request & Response in eenvoudige bewoordingen voor een goed begrip.

Tutorial_#5: Webdiensten testen met behulp van Apache HTTP-client

Deze API tutorial gaat over het uitvoeren van verschillende CRUD operaties op Web Services en het testen van Web Services met behulp van Apache HTTP Client.

API Testen Handleiding

Dit gedeelte zal je helpen een basiskennis te krijgen van Web Services en Web API, wat op zijn beurt nuttig zal zijn bij het begrijpen van de belangrijkste concepten in de komende tutorials in deze API Testing serie.

API (Application Programming Interface) is een verzameling van alle procedures en functies waarmee we een toepassing kunnen maken door toegang te krijgen tot de gegevens of functies van het besturingssysteem of platformen. Het testen van dergelijke procedures staat bekend als API Testing.

Shift Left Testing

Een van de belangrijke soorten testen die tegenwoordig worden gevraagd in API Testing Interviews is Shift Left Testing. Dit type testen wordt beoefend in bijna alle projecten die een Agile Methodologie volgen.

Voordat Shift Left Testing werd geïntroduceerd, kwam het testen van software pas in beeld nadat de codering was voltooid en de code was opgeleverd aan de testers. Deze praktijk leidde tot het gehannes op het laatste moment om de deadline te halen en belemmerde ook de kwaliteit van het product in hoge mate.

Bovendien waren de inspanningen (wanneer defecten werden gemeld in de laatste fase vóór de productie) enorm, omdat de ontwikkelaars zowel de ontwerp- als de coderingsfase helemaal opnieuw moesten doorlopen.

De traditionele SDLC flow was: Requirement -> Design -> Coding -> Testing.

Nadelen van traditionele tests

  • Testen is uiterst rechts. Er worden veel kosten gemaakt wanneer een bug op het laatste moment wordt ontdekt.
  • De tijd die nodig is om de bug op te lossen en opnieuw te testen voordat hij in productie wordt genomen, is enorm.

Vandaar dat een nieuw idee ontstond om de testfase naar links te verschuiven, wat leidde tot Shift Left Testing.

Suggested Read => Shift Left Testing: een geheime mantra voor softwaresucces

Fasen van tests met een linkshift

Left Shift Testing leidde tot een succesvolle migratie van Defect Detection naar Defect Prevention en hielp de software om snel te falen en alle fouten in een vroeg stadium op te lossen.

Web API

In algemene termen kan een Web API worden gedefinieerd als iets dat het verzoek van een clientsysteem naar een webserver brengt en het antwoord terugstuurt van een webserver naar een clientmachine.

Hoe werkt een API?

Laten we een heel gebruikelijk scenario nemen: het boeken van een vlucht op www.makemytrip.com, een online reisdienst die informatie van meerdere luchtvaartmaatschappijen verzamelt. Wanneer u een vlucht gaat boeken, voert u informatie in zoals reisdatum/retourdatum, klasse, enz. en klikt u op zoeken.

Dit toont u de prijs van meerdere luchtvaartmaatschappijen en hun beschikbaarheid. In dit geval interageert de toepassing met API's van meerdere luchtvaartmaatschappijen en geeft zo toegang tot de gegevens van de luchtvaartmaatschappij.

Een ander voorbeeld is www.trivago.com die de prijs, beschikbaarheid, enz. van verschillende hotels in een bepaalde stad vergelijkt en opsomt. Deze website communiceert met API's van verschillende hotels om toegang te krijgen tot de database en somt de prijzen en beschikbaarheid op van hun website.

Een Web API kan dus worden gedefinieerd als "een interface die de communicatie tussen een client machine en de webserver vergemakkelijkt".

Webdiensten

Web Services zijn (net als Web API) de diensten die van de ene machine naar de andere dienen. Maar het grote verschil tussen API en Web Services is dat de Web Services gebruik maken van een netwerk.

Het is veilig om te zeggen dat alle Web Services Web API's zijn, maar alle Web API's zijn geen Web Services (uitgelegd in het laatste deel van het artikel). Web Services zijn dus een subset van Web API. Zie het onderstaande diagram voor meer informatie over Web API en Web Services.

Web API vs Web Services

Webdiensten vs Web API

Zowel Web API als Web Services worden gebruikt om de communicatie tussen de client en de server te vergemakkelijken. Het grote verschil zit alleen in de manier waarop ze communiceren.

Elk van hen vereist een request body die aanvaardbaar is in een specifieke taal, hun verschillen in het bieden van een beveiligde verbinding, hun snelheid van communiceren naar de server en terug antwoorden naar de client, enz.

De verschillen tussen Web Services en Web API staan hieronder ter referentie.

Webdienst

  • Webdiensten gebruiken over het algemeen XML (Extensible Markup Language), wat betekent dat ze veiliger zijn.
  • Webdiensten zijn veiliger omdat zowel Webdiensten als API's SSL (Secure Socket Layer) bieden tijdens de gegevensoverdracht, maar ook WSS (Web Services Security).
  • Web Service is een subset van Web API. Bijvoorbeeld, Webdiensten zijn slechts gebaseerd op drie gebruiksstijlen, nl. SOAP, REST en XML-RPC.
  • Webdiensten hebben altijd een netwerk nodig om te functioneren.
  • Webdiensten ondersteunen "één code verschillende toepassingen". Dit betekent dat een meer generieke code wordt geschreven voor verschillende toepassingen.

Web API

  • Een Web API gebruikt over het algemeen JSON (JavaScript Object Notation), wat betekent dat Web API sneller is.
  • Web API is sneller omdat JSON lichtgewicht is, in tegenstelling tot XML.
  • Web API's zijn de superset van Web Services. Bijvoorbeeld, Alle drie de stijlen van Web Services zijn ook aanwezig in de Web API, maar daarnaast gebruikt het andere stijlen zoals JSON - RPC.
  • Voor Web API is niet noodzakelijkerwijs een netwerk nodig.
  • Web API kan al dan niet interoperabiliteit ondersteunen, afhankelijk van de aard van het systeem of de toepassing.

API testen introduceren in uw organisatie

In ons dagelijks leven zijn we allemaal zo gewend aan interactie met de apps via API's en toch denken we niet eens na over de back-end processen die de onderliggende functionaliteit aansturen.

Bijvoorbeeld, Stel dat u door de producten op Amazon.com bladert en u ziet een product/deal die u echt leuk vindt en u wilt het delen met uw Facebook-netwerk.

Op het moment dat je op het Facebook-pictogram in het deelgedeelte van de pagina klikt en de gegevens van je Facebook-account invoert om te delen, maak je contact met een API die de Amazon-website naadloos verbindt met Facebook.

Focusverschuiving naar API-tests

Voordat we dieper ingaan op API-tests, bespreken we de redenen waarom API-gebaseerde toepassingen de laatste tijd aan populariteit hebben gewonnen.

Er zijn verschillende redenen waarom organisaties overstappen op API-gebaseerde producten en toepassingen. Enkele daarvan zijn hieronder opgesomd ter referentie.

#1) Op API gebaseerde toepassingen zijn beter schaalbaar dan traditionele toepassingen/software. Het tempo van de codeontwikkeling ligt hoger en dezelfde API kan meer aanvragen verwerken zonder grote wijzigingen in de code of de infrastructuur.

#2) Ontwikkelteams hoeven niet telkens opnieuw te beginnen met coderen als ze een functie of toepassing gaan ontwikkelen. API's hergebruiken meestal bestaande, herhaalbare functies, bibliotheken, opgeslagen procedures, enz. en daarom kan dit proces hen in het algemeen productiever maken.

Bijvoorbeeld, Als u als ontwikkelaar werkt aan een e-commerce website en u wilt Amazon toevoegen als betalingsverwerker - dan hoeft u de code niet vanaf nul te schrijven.

Het enige wat u hoeft te doen is een integratie opzetten tussen uw website en Amazon API met behulp van integratiesleutels en Amazon API aanroepen voor het verwerken van betalingen tijdens het afrekenen.

#3) API's maken eenvoudige integratie met andere systemen mogelijk, zowel voor ondersteunde standalone toepassingen als met API-gebaseerde softwareproducten.

Bijvoorbeeld Stel dat u een zending van Toronto naar New York wilt versturen. U gaat online, navigeert naar een bekende website voor vracht of logistiek en voert de vereiste informatie in.

Na het verstrekken van de verplichte informatie, wanneer u klikt op de knop Tarieven ophalen - in de back-end, kan deze logistieke website verbinding maken met verschillende vervoerders en dienstverleners API's en applicaties om de dynamische tarieven voor de combinatie van herkomst en bestemming te verkrijgen.

Volledig spectrum van API-tests

Het testen van API's is niet beperkt tot het sturen van een verzoek naar de API en het analyseren van het antwoord op juistheid alleen. De API's moeten worden getest op hun prestaties onder verschillende belastingen op kwetsbaarheden.

Laten we dit in detail bespreken.

(i) Functionele tests

Functioneel testen kan een uitdaging zijn door het ontbreken van een GUI-interface.

Laten we eens kijken hoe de functionele testaanpak voor API's verschilt van GUI-gebaseerde toepassingen en we zullen ook enkele voorbeelden bespreken.

a) Het meest voor de hand liggende verschil is dat er geen GUI is om mee te werken. Testers die gewoonlijk op GUI gebaseerde functionele tests doen, vinden het iets moeilijker om over te stappen op het testen van niet-GUI toepassingen dan iemand die er al vertrouwd mee is.

In eerste instantie, nog voordat u de API gaat testen, moet u het authenticatieproces zelf testen en verifiëren. De authenticatiemethode verschilt per API en omvat een soort sleutel of token voor authenticatie.

Als u geen succesvolle verbinding met de API kunt maken, kan er niet verder worden getest. Dit proces kan worden beschouwd als vergelijkbaar met gebruikersauthenticatie in de standaardtoepassingen, waar u geldige referenties nodig hebt om in te loggen en de toepassing te gebruiken.

b) Het testen van veldvalidaties of validatie van invoergegevens is zeer belangrijk bij het testen van API's. Indien een echte op formulieren gebaseerde (GUI) interface beschikbaar was, dan zouden veldvalidaties kunnen worden geïmplementeerd in de front-end of back-end, om ervoor te zorgen dat een gebruiker geen ongeldige veldwaarden kan invoeren.

Bijvoorbeeld, Als voor een toepassing het datumformaat DD/MM/JJJJ moet zijn, kunnen wij deze validatie toepassen op het formulier dat informatie verzamelt om ervoor te zorgen dat de toepassing een geldige datum ontvangt en verwerkt.

Dit geldt echter niet voor API-toepassingen. Wij moeten ervoor zorgen dat de API goed geschreven is en al deze validaties kan afdwingen, onderscheid kan maken tussen geldige en ongeldige gegevens en de statuscode en validatiefoutmelding via een respons naar de eindgebruiker kan terugsturen.

c) Het testen van de juistheid van de antwoorden van de API op geldige en ongeldige antwoorden is inderdaad cruciaal. Als een statuscode van 200 (wat betekent dat alles in orde is) wordt ontvangen als antwoord van test-API, maar als de reactietekst zegt dat er een fout is opgetreden, dan is dit een defect.

Bovendien, als de foutmelding zelf onjuist is, kan dat zeer misleidend zijn voor de eindklant die probeert te integreren met deze API.

In het onderstaande screenshot heeft de gebruiker een ongeldig gewicht ingevoerd, dat meer is dan de aanvaardbare 2267 Kgs. De API reageert met de foutstatuscode en foutmelding. De foutmelding vermeldt echter ten onrechte de gewichtseenheden als lbs in plaats van KG. Dit is een defect dat de eindklant in verwarring kan brengen.

(ii) Belasting- en prestatietests

API's zijn bedoeld om schaalbaar te zijn.

Dit maakt belasting- en prestatietests essentieel, vooral als het systeem dat wordt ontworpen naar verwachting duizenden verzoeken per minuut of uur zal verwerken, afhankelijk van de vereisten. Het routinematig uitvoeren van belasting- en prestatietests op de API kan helpen bij het benchmarken van de prestaties, de piekbelasting en het breekpunt.

Deze gegevens zijn nuttig bij het plannen van de schaalvergroting van een applicatie. Als deze informatie beschikbaar is, helpt dat om beslissingen en planning te ondersteunen, vooral als de organisatie van plan is meer klanten toe te voegen, wat meer inkomende verzoeken zou betekenen.

Hoe API-tests in uw organisatie te introduceren

Het proces voor de invoering van API-tests in een organisatie is vergelijkbaar met het proces voor de implementatie of uitrol van elk ander testinstrument en -kader.

De onderstaande tabel vat de belangrijkste stappen samen, samen met het verwachte resultaat van elke stap.

Fase Stap Verwacht resultaat
Gereedschap selectie Vereisten verzamelen en beperkingen identificeren

De vereisten begrijpen om de markt te onderzoeken voor een geschikt API-testinstrument.

Bijv.

Wat voor soort API wordt getest - SOAP of REST?

Moeten we tester inhuren voor deze rol of bestaande tester opleiden?

Wat voor soort tests zullen worden uitgevoerd - functionele, prestatietests enz.

Wat is het budget voor de uitvoering?

Beschikbare instrumenten evalueren Vergelijk de beschikbare tools en maak een shortlist van 1 of 2 tools die het best aan de eisen voldoen.
Proof of Concept Implementeer een subset van tests met het geselecteerde instrument.

De bevindingen presenteren aan de belanghebbenden.

De laatste hand leggen aan het toe te passen instrument.

Uitvoering Aan de slag Afhankelijk van de gekozen tool, moet u ofwel de vereiste tool installeren op een PC, een virtuele machine of een server.

Als de gekozen tool een abonnement heeft, maak dan de vereiste teamaccounts aan.

Train het team indien nodig.

Aan de slag. Tests maken

Tests uitvoeren

Gebreken melden

Gemeenschappelijke uitdagingen en manieren om ze te beperken

Laten we enkele van de gemeenschappelijke uitdagingen bespreken waarmee QA-teams worden geconfronteerd wanneer ze proberen een API-testkader in een organisatie te implementeren.

#1) Het juiste gereedschap kiezen

Het selecteren van het juiste instrument voor de taak is de meest voorkomende uitdaging. Er zijn verschillende API-testinstrumenten op de markt.

Het kan heel aantrekkelijk lijken om het nieuwste, duurste instrument op de markt in te zetten, maar als het niet de gewenste resultaten oplevert, heeft dat instrument geen nut.

Kies daarom altijd de tool die voldoet aan de "must-have" eisen op basis van uw organisatorische behoeften.

Hier is een voorbeeld van een evaluatiematrix voor de beschikbare API-hulpmiddelen

Gereedschap Prijzen Opmerkingen
Zeep UI Gratis versie beschikbaar voor SoapUI Open Source (functioneel testen) * REST, SOAP en andere populaire API- en IoT-protocollen.

* Inbegrepen in de gratis versie

SOAP en REST ad hoc testen

Berichtbevestiging

Drag & Drop Test Creatie

Testlogboeken

Test Configuratie

Test van opnames

Unit Reporting.

* De volledige lijst van functies is te vinden op hun website.

Postbode Gratis Postbode App beschikbaar * Meest gebruikt voor REST.

* Functies zijn te vinden op hun website.

Parasoft Het is een betaalde tool, vereist de aankoop van een licentie en vereist vervolgens een installatie voordat de tool kan worden gebruikt. * Uitgebreide API-tests: functioneel, belasting, veiligheidstests, beheer van testgegevens
vREST Gebaseerd op aantal gebruikers * Geautomatiseerde REST API testen.

* Opnemen en opnieuw afspelen.

* Verwijdert de afhankelijkheid van frontend en backend met behulp van mock API's.

* Krachtige Response Validatie.

* Werkt voor testtoepassingen op localhost/intranet/internet.

* JIRA Integratie, Jenkins Integratie Importen van Swagger, Postman.

HttpMaster Express Edition: gratis te downloaden

Professionele versie: Gebaseerd op aantal gebruikers

* Helpt bij het testen van websites en API's.

* Andere kenmerken zijn de mogelijkheid om globale parameters te definiëren en de gebruiker de mogelijkheid te bieden controles te creëren voor de validatie van gegevensreacties door gebruik te maken van de grote reeks validatietypes die het ondersteunt.

Runscope Gebaseerd op het aantal gebruikers en plantypes

* Voor het bewaken en testen van API's.

* Kan worden gebruikt voor gegevensvalidatie om ervoor te zorgen dat correcte gegevens worden geretourneerd.

* Bevat functie van tracking en kennisgeving in het geval van een API transactie mislukking (als uw toepassing vereist betaling validatie, dan is deze tool kan blijken te zijn een goede keuze).

LoadFocus Op basis van het aantal gebruikers en de soorten plannen * Kan worden gebruikt voor API-belastingtests - maakt het mogelijk enkele tests uit te voeren om na te gaan hoeveel gebruikers een API kan ondersteunen.

* Eenvoudig te gebruiken - maakt het mogelijk tests uit te voeren in de browser.

PingAPI Gratis voor 1 project (1.000 aanvragen) * Voordelig voor geautomatiseerde API-tests en monitoring.

#2) Ontbrekende testspecificaties

Als testers moeten we de verwachte resultaten kennen om een toepassing effectief te kunnen testen. Dit is vaak een uitdaging, omdat we, om de verwachte resultaten te kennen, duidelijke en precieze eisen moeten hebben - wat niet het geval is.

Bijvoorbeeld , de onderstaande eisen in overweging nemen:

"De applicatie mag alleen een geldige verzenddatum accepteren en alle ongeldige vereisten moeten worden afgewezen."

Deze eisen missen belangrijke details en zijn zeer dubbelzinnig - hoe definiëren we een geldige datum? Hoe zit het met het formaat? Geven we een bericht van afwijzing terug aan de eindgebruiker, enz.

Voorbeeld van duidelijke eisen:

1) De applicatie mag alleen een geldige verzenddatum accepteren.

De verzenddatum wordt als geldig beschouwd als deze

  • Niet in het verleden.
  • Groter of gelijk aan de datum van vandaag
  • Is in aanvaardbaar formaat: DD/MM/JJJJ

2)

Statuscode antwoord = 200

Bericht: OK

3) Een verzenddatum die niet aan bovenstaande criteria voldoet, moet als ongeldig worden beschouwd. Als een klant een ongeldige verzenddatum verstuurt, moet hij reageren met de volgende foutmelding(en):

3.1

Antwoordstatuscode NIET 200

Fout: De opgegeven verzenddatum is ongeldig; zorg ervoor dat de datum in DD/MM/JJJJ-formaat is.

3.2

Antwoordstatuscode NIET 200

Fout: voorziene verzenddatum is in het verleden

#3) Leercurve

Zoals gezegd is de aanpak voor het testen van API's anders dan die voor het testen van GUI-toepassingen.

Als u specialisten inhuurt, hetzij intern, hetzij via consultants voor het testen van API's, dan kan de leercurve van de API-testaanpak of de API-testtool minimaal zijn. Elke leercurve zou in dit geval verband houden met het verwerven van product- of applicatiekennis.

Als een bestaand teamlid wordt aangewezen om API-testen te leren, dan kan de leercurve, afhankelijk van het gekozen instrument, gemiddeld tot hoog zijn, samen met het veranderen van de testaanpak. De leercurve voor het product of de toepassing zelf kan laag-middelmatig zijn, afhankelijk van het feit of deze tester die toepassing al eerder heeft getest of niet.

#4) Bestaande vaardigheden

Dit sluit direct aan bij het vorige punt over de leercurve.

Als een tester van GUI-gebaseerd testen overstapt, moet hij zijn testaanpak veranderen en het nieuwe hulpmiddel of framework leren. Bijv. Als de API de verzoeken in JSON-formaat accepteert, dan moet de tester leren wat JSON is, om de tests te kunnen maken.

Casus

Taak

Om een bestaande applicatie op te schalen, wilde een bedrijf een product zowel in API als in een standaard GUI applicatie aanbieden. QA Team werd gevraagd om een Test Coverage Plan op te stellen om er zeker van te zijn dat ze klaar zijn voor API testen naast de reguliere GUI gebaseerde testen.

Uitdagingen

  • Geen van de andere softwareproducten had een API-gebaseerde architectuur, vandaar dat het team het API-testproces vanaf nul moest opzetten om het testen rond deze taak mogelijk te maken. Dit betekent dat de tools moesten worden geëvalueerd, geselecteerd en afgerond en dat het team voor de tests moest worden opgeleid.
  • Er was geen extra budget uitgetrokken voor de aankoop en implementatie van het instrument. Dit betekent dat het team een gratis of open-source API-testinstrument moest kiezen en dat iemand van het bestaande team moest worden opgeleid om deze taak op zich te nemen.
  • Er waren geen eisen voor API-velden en gegevensvalidatie. De eisen waren "moet hetzelfde werken als de overeenkomstige GUI-toepassing".

De door het team gevolgde aanpak om de risico's te beperken en de uitdagingen te omzeilen

  • Het QA-team werkte samen met het projectteam om de volgende eisen vast te stellen:
    • API type (REST/SOAP ): REST
    • Vereiste tests (functioneel, belasting, veiligheid): Alleen functionele tests
    • Geautomatiseerde tests vereist (Ja/Nee): Optioneel voor nu
    • Testverslagen (Ja/Nee): Vereist
  • Het QA team evalueerde de beschikbare API test tools op basis van de must-have eisen. Postman API Tool werd gekozen als tool omdat het gratis was, makkelijk te gebruiken en dus de leercurve minimaliseerde, en het potentieel had om tests te automatiseren, en met goede ingebouwde rapporten kwam.
  • Dezelfde tester die de applicatie testte werd getraind in het gebruik van Postman om initiële tests te maken, waardoor eventuele hiaten in de productkennis werden weggewerkt.
  • Om aan de ontbrekende vereisten te voldoen, bouwde het projectteam de documentatie op veldniveau met behulp van Swagger. Dit liet echter enkele lacunes wat betreft aanvaardbare gegevensformaten en dit werd met het projectteam besproken en de verwachte formaten werden overeengekomen en gedocumenteerd.

Conclusie

API-gebaseerde toepassingen hebben de laatste tijd aan populariteit gewonnen. Deze toepassingen zijn beter schaalbaar dan de traditionele toepassingen/software en maken een gemakkelijkere integratie met andere API's of toepassingen mogelijk.

Deze API Testing tutorial legt alles uit over API Testing, Shift Left Testing, Web Services, en Web API in detail. We onderzochten ook de verschillen tussen Web Services vs Web API met voorbeelden.

In het tweede deel van de tutorial bespraken we het volledige spectrum van API Testing, hoe API Testing in uw organisatie te introduceren en enkele veel voorkomende uitdagingen in dit proces, samen met oplossingen daarvoor.

Bekijk onze komende tutorial voor meer informatie over Web Services en voorbeelden!

Volgende handleiding

Scroll naar boven