Wat is API-testen?

Inleiding tot API-testen

Een API – of Application Programming Interface – fungeert als een vertaler tussen twee afzonderlijke systemen. Het stelt ingenieurs in staat om hun eigen applicaties te creëren en gebruik te maken van de functionaliteiten van verschillende – en meestal veel grotere – softwaresystemen of -omgevingen. Bijvoorbeeld een softwareontwikkelaar die een mobiele app maakt voor thuisbezorging diensten kunnen de functionaliteit van Google maps gebruiken. In dat geval ‘praat’ de app met Google maps via de Application Programming Interface en haalt de gegevens op die nodig zijn om aan de gebruikers te tonen.

Met de overvloed aan applicaties die elke dag worden geproduceerd, is het uiterst belangrijk voor ingenieurs om 100% te kunnen vertrouwen op de API’s die ze gebruiken om 365/24/7 nauwkeurige gegevens te leveren. De enige manier om dit te garanderen is door middel van API-testen.

Dus, wat is API-testen? Over het algemeen omvat API-testen het doorgeven van invoerparameters aan het systeem via de API en het vastleggen van de uitvoer. API Testing controleert of de businesslogica van het softwaresysteem functioneert zoals verwacht wordt en of de output van het systeem in orde is. API-testen controleren de betrouwbaarheid, functionaliteit, beveiliging en prestaties van de interface.

Soorten API-testen

Meestal is API-testen een onderdeel van integratietesten, omdat het gaat om het valideren van de werking van twee verschillende systemen die in combinatie met elkaar samenwerken. API-testen worden meestal uitgevoerd op de Business Logic-laag van een systeem. Vanwege het ontbreken van een GUI voor API’s, moet dit testen worden uitgevoerd door het systeem rechtstreeks te ‘messagingen’, d.w.z. via de berichtenlaag, vaak met behulp van aangepaste subroutines of functies.

soorten api-testen

API-tests worden dus meestal geïmplementeerd in de Application Logic of Business-laag van het systeem dat wordt getest. API-tests kunnen helpen bij het opsporen van fouten of problemen zoals het niet correct afhandelen van fouten, ontbrekende of dubbele functionaliteit, problemen met betrouwbaarheid/beveiliging/prestatie, onjuiste verwerking van parameters/argumenten enzovoort.

Enkele veelvoorkomende typen API-testen zijn:

Functioneel testen

Deze toetsing is een breed onderzoek naar de specifieke functies van het programma. Het evalueert de reacties in termen van nauwkeurigheid van de output, of het binnen de verwachte parameters ligt en hoe fouten worden afgehandeld. Afgezien van reguliere operationele scenario’s, houdt Functional Testing van API’s ook rekening met randgevallen voor randvoorwaarden.

Beveiligingstests

Aangezien de API toegang biedt tot alle externe applicaties om toegang te krijgen tot de interne onderdelen van het softwareproduct, wordt dit meestal beschouwd als het meest blootgestelde of kwetsbare deel van het systeem. Daarom is beveiligingstesten van cruciaal belang om de veiligheid van het systeem te waarborgen, aangezien een enkele kwetsbaarheid of bug de volledige activiteiten van een onderneming in gevaar kan brengen. Penetratietests en Fuzz/Noise-tests zijn subsets van beveiligingstests. Terwijl penetratietesten, zoals de naam al doet vermoeden, pogingen doen om een applicatie te doorbreken, is Fuzz/Noise Testing een soort legitieme DOS-poging (Denial of Service) om het systeem te overspoelen met digitale ruis, bijv. enorme hoeveelheden dummy-gegevens, en daardoor of dit leidt tot een systeemcrash.

Belasting testen

Load Testing valideert of de API onder enorme en/of aanhoudende belasting werkt, bijvoorbeeld door het geleidelijk verhogen van gebruikersverzoeken van 1k naar 10k en 100k enzovoort. Belastingen zijn typisch basis- of reguliere belastingen, theoretische maximale belastingen en overbelastingen die het theoretische maximum met 15-20% overschrijden. Load Testing van API’s richt zich op hoe deze progressieve belastingen worden afgehandeld en het uitvalpercentage wordt gemeten voor elk belastingsniveau.

Detectie van runtime-fouten

Hoewel de meeste tests betrekking hebben op de implementatie van de API en zijn functionaliteiten, heeft de Runtime Error Detection alleen betrekking op de daadwerkelijke werking van de API. Het onderzoekt de resultaten van het gebruik van de API-codebase en controleert het systeem op uitvoeringsfouten, geheugenlekkage en test de mogelijkheden voor foutafhandeling.

Gebruikersinterface testen

Zoals te verwachten is, evalueert UI Testing de gebruikersinterface van de applicatie. Het is een indirecte test van de API in die zin dat het de API niet rechtstreeks test, maar eerder de UI die met de API is verbonden. Het geeft testers echter een overzicht van de prestaties, efficiëntie en bruikbaarheid van het systeem.

Validatie testen

Dit wordt meestal uitgevoerd aan het einde van de levenscyclus van softwareontwikkeling, maar het is een van de belangrijke tests die moeten worden uitgevoerd. Validatietests onderzoeken kwesties als de geschiktheid van de API voor de toepassing, code-bloat en API-gedrag, evenals de nauwkeurigheid, efficiëntie en optimalisatieniveau van het programma.

Web-API’s vallen grofweg in twee gevestigde klassen van webservices: SOAP of Simple Object Access Protocol, REST of Representational State Transfer, en nu GraphQL, een veel recentere ontwikkeling op het gebied van webservices. In tegenstelling tot SOAP, dat XML gebruikt, zijn REST-API’s op URL’s gebaseerd (met behulp van HTTP) en kunnen ze uitvoergegevens leveren in verschillende formaten, onder andere JSON, CSV of RSS.

Vanwege de flexibiliteit zijn REST API’s de logische keuze voor webservices. Ze omvatten vier hoofdtoegangsmethoden, namelijk GET, POST, PUT en DELETE.

REST API Testing controleert in wezen de juistheid van de HTTP-statuscodes, verifieert responsheaders en payload, onderzoekt de algehele prestatietijd en soms ook de applicatiestatus. De veelvoorkomende scenario’s die worden overwogen voor REST API-tests omvatten positieve basistests met en zonder optionele parameters, negatieve tests met geldige en ongeldige invoer, evenals beveiligings-/autorisatiecontroles.

Voordelen van API-testen

API-testen kan voor drie hoofddoelen worden gebruikt, namelijk validatie van een applicatie, onderhoud/upgrade van een systeem of eliminatie van fouten en defecten in software.

voordelen van api-testen

Het belangrijkste voordeel van API-testen is dat het ontwikkelaars en testers in staat stelt om toegang te krijgen tot een applicatie, zonder een gebruikersinterface of toegang tot de binnenkant van het systeem. Het is uiterst nuttig bij het omgaan met ongelijksoortige systemen waarover specifieke kennis ontbreekt of niet beschikbaar is.

Ten tweede, aangezien API-tests plaatsvinden vóór de UI-testfase en plaatsvinden op de Application Logic Layer, stelt het ontwikkelteams in staat om fouten vrij vroeg in de Software Development Life Cycle te detecteren, waardoor wordt voorkomen dat ze escaleren tot volledige bugs in de software . API-tests bieden een vroege evaluatie van de bouwsterkte.

Ten derde is API-testen veel sneller en minder tijd- en resource-intensief dan functionele UI-testen. Over het algemeen is de schaal van API-testen 25-30x keer sneller dan de overeenkomstige GUI-testen voor dezelfde toepassing.

Ten vierde is API-testen taalonafhankelijk en worden gegevens uitgewisseld met behulp van XML of JSON, waardoor u elke programmeertaal kunt gebruiken voor het uitvoeren van de API-tests.

Last but not least, door het gebruik van automatiseringstools kan API-testen aanzienlijk worden versneld, wat ook tot aanzienlijke kostenbesparingen leidt.

Tips om te weten voor API-testen

Om testers in staat te stellen het maximale uit hun API-testen te halen, volgen hier enkele nuttige tips die kunnen worden gevolgd.

  1. Begrijp de vereisten van de API, het doel van de API en de workflow van de applicatie.
  2. Specificeer de uitvoer van API-testen — ofwel Gegevens zoals strings, gehele getallen, enz., Binair zoals ja/nee, waar/onwaar enz., een aanroep naar een ander programma/functie, of een antwoordcode in het geval van webservices. De HTTP-responscodes vallen gewoonlijk in 5 categorieën, gespecificeerd door het eerste cijfer van de 3-cijferige code. 1 staat voor informatief, 2 voor succes, 3 voor omleiding, 4 voor clientfout en 5 voor serverfout.
  3. Verdeel de API-testen in kleinere stappen, elk gericht op een specifieke functionaliteit of sectie van het systeem. Hoe minder het aantal API’s dat tegelijk wordt getest, hoe beter.
  4. Categoriseer API’s in groepen, afhankelijk van het resourcetype, de structuur, het pad enz. om de tests beter beheersbaar en schaalbaar te maken.
  5. Maak gebruik van testautomatisering om de snelheid te verhogen en de kosten te verlagen. Het gebruik van virtualisatie van API’s verbetert de efficiëntie verder door de API te verifiëren, zelfs vóór de daadwerkelijke ontwikkeling.
  6. Test voor zowel positieve als negatieve gevallen, zorg er bijvoorbeeld voor dat de API correct werkt, zowel wanneer inputs/outputs beschikbaar zijn als wanneer ze niet beschikbaar zijn.

Overzicht

API Testing is een belangrijk onderdeel van de Testing Life Cycle en zorgt ervoor dat alle componenten van een systeem na integratie succesvol samenwerken. Het biedt toegang tot verschillende systemen zonder dat een gebruikersinterface nodig is. Het wordt uitgevoerd voorafgaand aan het testen van de gebruikersinterface en is veel sneller en kostenefficiënter, wat een grotere ROI oplevert. API-testen stelt ontwikkelaars in staat om fouten preventief in een vroeg stadium van het ontwikkelingsproces te detecteren en op te lossen.

WILT U DIGITAAL CONTROLEREN?