Skip to main content

Kwaliteitsborging wordt steeds populairder. Experts schatten dat het aantal banen in softwaretesten in de VS alleen al in het komende decennium met 25% zal toenemen. Als dat je interesseert, vraag je je misschien af waar je moet beginnen met leren over softwaretesten.

In dit artikel beantwoord ik vragen om je op weg te helpen met softwaretesten. Ik bespreek wat softwaretesten zijn, de belangrijkste testconcepten en enkele tools voor softwaretesten die je kunt overwegen. 

Softwaretesten uitgelegd

Het proces dat bestaat uit alle levenscyclusactiviteiten, zowel statische als dynamische, die betrekking hebben op de planning, voorbereiding en evaluatie van een component of systeem en gerelateerde werkproducten, om vast te stellen dat deze voldoen aan gespecificeerde vereisten, aan te tonen dat ze geschikt zijn voor het beoogde doel en defecten op te sporen.

verklarende woordenlijst van ISTQB

Softwaretesten spelen een belangrijke rol in het softwareontwikkelingsproces, omdat hiermee wordt gevalideerd dat de softwareapplicatie werkt zoals bedoeld en voldoet aan de vereisten en verwachtingen van de eindgebruikers.

Continue Reading for Free

Create a free account to finish this article, plus get ongoing access to timely insights and practical resources.

Het doel is om defecten, fouten en inconsistenties in de softwareapplicatie te identificeren voordat deze aan het publiek wordt uitgebracht. Bij testen wordt de software onder verschillende omstandigheden, configuraties en scenario's uitgevoerd om te controleren of deze correct en efficiënt werkt.

Als je benieuwd bent hoe je kunt beginnen in de softwaretestbranche, vind je hier een lijst met veelgestelde QA-sollicitatievragen (en antwoorden!).

Levenscyclus voor softwaretesten

De levenscyclus voor softwaretesten (STLC) is het proces dat wordt gevolgd door softwaretesters om ervoor te zorgen dat de applicatie die wordt getest, voldoet aan de vastgestelde kwaliteitsnormen en vereisten. De STLC bestaat doorgaans uit verschillende fasen die ervoor zorgen dat de softwareapplicatie grondig wordt getest en het gewenste kwaliteitsniveau bereikt voordat deze wordt uitgebracht aan eindgebruikers. Dit zijn de fasen van de levenscyclus voor softwaretesten:

Vereistenanalyse

In deze fase analyseren de softwaretesters de vereisten en specificaties. Ze identificeren de functionele en niet-functionele vereisten, begrijpen het doel van de softwareapplicatie en de doelgroep, en ontwikkelen op basis daarvan testgevallen en scenario's.

Testplanning

In deze fase bepaalt het testteam de reikwijdte van het testen, de testaanpak en de middelen die nodig zijn voor het testen. Het testplan identificeert ook de risico's en beperkingen die verband houden met het testproces en beschrijft de testplanning.

Testontwerp

In deze fase ontwerpt het testteam de testgevallen en scenario's op basis van de vereisten en specificaties. Ze identificeren ook de testgegevens die nodig zijn voor het testen en ontwikkelen testscripts die het testproces automatiseren.

Testuitvoering

de testers voeren de testgevallen en scenario's uit die in de vorige fase zijn ontworpen. De testresultaten worden vastgelegd en eventuele defecten of fouten die in de softwareapplicatie worden gevonden, worden gerapporteerd.

Get regular tech leadership wisdom for delivering better software and systems.

Testrapportage

In deze fase stelt het testteam een rapport op met de testresultaten en de defecten die tijdens het testen zijn vastgesteld. Het rapport kan aanbevelingen bevatten voor het oplossen van de defecten en het verbeteren van de algehele kwaliteit van de softwareapplicatie.

Testafsluiting

Dit is de laatste fase, waarin het testteam het testproces evalueert en verbeterpunten identificeert. Ze stellen ook een rapport over de testafsluiting op, waarin het testproces en de testresultaten worden samengevat.

De levenscyclus voor softwaretesten is een continu proces dat samenwerking vereist tussen het testteam en het ontwikkelteam om ervoor te zorgen dat de softwareapplicatie het gewenste niveau van kwaliteit en functionaliteit bereikt.

Soorten softwaretests 

Er zijn verschillende soorten softwaretests die door QA-teams worden gebruikt, afhankelijk van de context en vereisten van het project.

We kunnen onderscheid maken tussen handmatig testen en geautomatiseerd testen, afhankelijk van de manier waarop de tests worden uitgevoerd. Op basis van wat wordt getest, kunnen we onderscheid maken tussen functioneel en niet-functioneel testen. Afhankelijk van de gebruikte methoden hebben we statisch en dynamisch testen. Op basis van de aanpak kunnen we de typen white-box- en black-box-testen onderscheiden. We hebben ook verkennend testen, rook- en sanitytesten en regressietesten. Al deze testtypen kunnen elkaar overlappen, afhankelijk van de manier waarop ze worden gebruikt. 

Handmatig testen

Bij handmatig testen wordt het testen persoonlijk uitgevoerd, zonder gebruik te maken van geautomatiseerde hulpmiddelen of scripts. Het is mogelijk gevoeliger voor fouten en duurt doorgaans langer. 

Geautomatiseerd testen

Geautomatiseerd testen wordt uitgevoerd door een machine die vooraf geschreven scripts uitvoert. Hiervoor is meer technische expertise nodig, bijvoorbeeld kennis van een programmeertaal en automatiseringstools zoals Selenium. Het kan duurder zijn dan handmatig testen en bepaalde aspecten van het testproces kunnen niet worden geautomatiseerd.

Functioneel testen

Functioneel testen houdt in dat wordt gecontroleerd wat de applicatie doet. Functioneel testen controleert de functies en mogelijkheden van de softwareapplicatie en zorgt ervoor dat deze aan de vereisten en specificaties voldoen.

Niet-functioneel testen

In tegenstelling tot functioneel testen richten niet-functionele tests zich op hoe de app zich gedraagt. Er zijn meerdere subtypen van niet-functioneel testen, afhankelijk van het hoofddoel van de tests. In dit artikel bespreek ik er slechts enkele. 

Prestatietesten: meten de responstijd, verwerkingscapaciteit en schaalbaarheid van de softwareapplicatie onder verschillende belastingsomstandigheden. Hierbij wordt gecontroleerd of de softwareapplicatie meerdere gebruikers en transacties tegelijkertijd kan verwerken en efficiënt functioneert onder piekbelasting.

Belastingtesten: simuleren realistische gebruikersbelastingen en worden uitgevoerd om het gedrag van een systeem onder normale omstandigheden en piekbelasting te bepalen. Ze worden gebruikt om vast te stellen of de infrastructuur voor het hosten van de applicatie toereikend is en laten zien hoeveel gelijktijdige gebruikers de applicatie aankan en welke schaal van de applicatie vereist is wat betreft hardware, netwerkcapaciteit enzovoort, zodat meer gebruikers toegang tot de applicatie kunnen krijgen.

Stresstesten: omvatten testen boven de normale capaciteit, vaak tot het breekpunt, om de resultaten te observeren. Het doel is ervoor te zorgen dat de software niet vastloopt bij onvoldoende computermiddelen (zoals geheugen, schijfruimte, netwerkverzoeken enzovoort).

Beveiligingstesten: zorgen ervoor dat de softwareapplicatie veilig is en beschermd wordt tegen ongeautoriseerde toegang. Bij beveiligingstesten wordt gecontroleerd op kwetsbaarheden en zwakke plekken in de beveiligingsprotocollen van de softwareapplicatie en worden mogelijke beveiligingsrisico's geïdentificeerd.

Bruikbaarheidstesten: worden gebruikt om te beoordelen of de applicatie gebruiksvriendelijk is. Hierbij wordt gecontroleerd hoe eenvoudig gebruikers door de softwareapplicatie kunnen navigeren en de beoogde functies efficiënt kunnen uitvoeren.

Toegankelijkheidstesten: toegankelijkheidstesten worden beschouwd als een onderdeel van bruikbaarheidstesten en worden uitgevoerd om ervoor te zorgen dat de geteste applicatie bruikbaar is voor mensen met een beperking.

Lokalisatietesten: een type softwaretest waarbij het gedrag van software wordt getest voor een specifieke regio, landinstelling of cultuur. Enkele kenmerken waarmee tijdens lokalisatietesten rekening moet worden gehouden: correct vertaalde tekst, valuta, meeteenheden, toegestane speciale tekens en indelingen van telefoonnummers

Compatibiliteitstesten: testen of de applicatie voldoende geschikt is om te werken in verschillende browsers, databases, hardwareomgevingen, besturingssystemen, mobiele apparaten en netwerken

Statisch en dynamisch testen

Statisch testen is gebaseerd op handmatige controle van werkproducten (d.w.z. beoordelingen) of op een door hulpmiddelen uitgevoerde evaluatie van de code (denk aan codebeoordelingen) of andere werkproducten (d.w.z. statische analyse). Het kan worden uitgevoerd op, maar is niet beperkt tot, specificaties, bedrijfsvereisten, acceptatiecriteria, broncode, testplannen, testgevallen, testscripts en gebruikershandleidingen. 

Dynamisch testen is de daadwerkelijke uitvoering van de software die wordt getest. Het kan handmatig of geautomatiseerd worden uitgevoerd, of

Testen met inzicht in de code en testen zonder inzicht in de code 

White-boxtesten zijn een type test waarbij de tester kennis heeft van de interne structuur van de code van de applicatie, terwijl black-boxtesten worden uitgevoerd zonder dat inzicht in de broncode nodig is. Elk van deze testtypen maakt gebruik van verschillende testtechnieken, zoals equivalentiepartitionering, grenswaardeanalyse en beslissingstabellen voor black-boxtesten, en dekking van instructies plus dekking van beslissingen voor white-boxtesten.

Verkennend testen

Verkennend testen is een type ervaringsgebaseerd testen. Het omvat minimale planning en maximale testuitvoering. 

De activiteiten voor testontwerp en testuitvoering worden parallel uitgevoerd, doorgaans zonder de testcondities, testgevallen of testscripts formeel te documenteren.

Het is een nuttige aanpak wanneer er geen of gebrekkige specificaties zijn en de tijd zeer beperkt is, of het werkt uitstekend als aanvulling op geautomatiseerd testen.

Rooktesten 

Rooktesten, soms ook wel “buildverificatietesten” of “vertrouwenstesten” genoemd,  zijn een softwaretestproces waarbij testers verifiëren of de gedeployde build stabiel is. Rooktesten valideren of we kunnen doorgaan met verder softwaretesten. Ze bestaan uit een minimaal aantal tests die bij elke build worden uitgevoerd om kritieke softwarefunctionaliteiten te testen. 

Sanitytesten

Sanitytesten zijn een type softwaretest dat wordt uitgevoerd na de oplevering van een softwarebuild met kleine code- of functiewijzigingen, om te bevestigen dat de bugs zijn opgelost en dat er door deze wijzigingen geen nieuwe problemen zijn geïntroduceerd. Het doel is te bevestigen dat de voorgestelde functie ongeveer werkt zoals verwacht.

Regressietesten

Regressietesten zijn een type softwaretest waarbij we bestaande functionaliteiten opnieuw testen om te valideren dat ze na wijzigingen of updates aan de softwareapplicatie nog steeds correct werken. Regressietesten zorgen ervoor dat de nieuwe wijzigingen of updates geen invloed hebben gehad op de bestaande functionaliteit van de softwareapplicatie.

Compatibiliteitstesten

Compatibiliteitstesten worden gebruikt om ervoor te zorgen dat de softwareapplicatie correct werkt op verschillende platforms, apparaten en browsers. Hierbij wordt gecontroleerd of de softwareapplicatie compatibel is met verschillende hardware- en softwareconfiguraties

Door AI gegenereerde afbeelding van werkende robots aan een assemblagelijn om te demonstreren hoe softwaretesten werken.

Testniveaus

Softwaretesten kunnen worden ingedeeld in verschillende niveaus op basis van de reikwijdte en doelstellingen van de tests. Hieronder volgen de gangbare niveaus van softwaretesten:

Unittesten

Unittesten vormen het eerste testniveau en richten zich op het afzonderlijk testen van individuele componenten of code-eenheden. Met unittesten wordt geverifieerd dat elke code-eenheid werkt zoals verwacht en aan de gespecificeerde vereisten voldoet.

Integratietesten

Integratietesten richten zich op het testen van de interacties tussen verschillende modules of componenten van de softwareapplicatie. Met integratietesten wordt geverifieerd dat de modules of componenten samenwerken zoals bedoeld en aan de gespecificeerde vereisten voldoen.

Systeemtesten

Systeemtesten zijn het testniveau waarop de volledige softwareapplicatie als compleet systeem wordt getest. Met systeemtesten wordt geverifieerd dat de softwareapplicatie aan de gespecificeerde vereisten voldoet en in verschillende scenario's werkt zoals verwacht.

Gebruikersacceptatietesten

Acceptatietesten zijn het testniveau waarop de softwareapplicatie vanuit het perspectief van de eindgebruiker wordt getest. Met acceptatietesten wordt geverifieerd dat de softwareapplicatie aan de behoeften en vereisten van de eindgebruiker voldoet en in de gebruikersomgeving werkt zoals verwacht. Veelvoorkomende typen gebruikersacceptatietesten zijn alfatesten en bètatesten.

Elk testniveau is belangrijk en dient een specifiek doel in het softwaretestproces. Op elk niveau moeten tests worden uitgevoerd om ervoor te zorgen dat de softwareapplicatie het gewenste kwaliteits- en functionaliteitsniveau bereikt en in verschillende scenario's werkt zoals verwacht. 

Principes van softwaretesten

Er zijn zeven belangrijke testprincipes, zoals gedefinieerd door de ISTQB:

  1. Testen toont de aanwezigheid van defecten aan, niet de afwezigheid ervan: U kunt niet garanderen dat de applicatie vrij van defecten is alleen omdat deze is getest. Na het testen kan het vertrouwen in het product echter toenemen.
  2. Uitputtend testen is onmogelijk: De meeste apps zijn ongelooflijk complex, waardoor het onmogelijk is om elke mogelijke combinatie en variatie te testen, vooral omdat de tijd en middelen voor het testen ook beperkt zijn.
  3. Vroeg testen: Hoe eerder fouten en defecten tijdens de levenscyclus van softwareontwikkeling worden ontdekt, hoe gemakkelijker ze kunnen worden opgelost. Daar heeft Agile het bij het juiste eind, omdat testactiviteiten al zeer vroeg beginnen.
  4. Defecten clusteren samen: Dit betekent dat gebieden waar defecten zijn gevonden waarschijnlijk nog meer defecten zullen bevatten. Volgens het Paretoprincipe kan 80% van de defecten worden gevonden in 20% van de functionaliteiten.
  5. De pesticidenparadox: Het herhaaldelijk uitvoeren van dezelfde tests zonder deze bij te werken zal waarschijnlijk geen nieuwe problemen aan het licht brengen. 
  6. Testen is contextafhankelijk: Applicaties worden verschillend getest op basis van hun context - zo test u een API anders dan een gebruikersinterface, en test u webapplicaties anders dan mobiele of desktopapps.  
  7. Drogreden van de afwezigheid van fouten: Kort gezegd betekent het feit dat de defecten zijn gevonden en opgelost niet dat de software nuttig is voor de gebruikers.

Conclusie

Softwaretesten is een zeer complex domein en er kunnen veel soorten tests worden uitgevoerd. Het is belangrijk om uw teststrategie aan te passen op basis van de context van het softwareproduct dat wordt getest. Er zijn eindeloos veel bronnen over softwaretesten, waaronder podcasts, boeken en meer.

Als u dit artikel interessant vond, abonneer u dan op de nieuwsbrief van QA Lead en wees als eerste op de hoogte van nieuwe berichten over testen en kwaliteit.