De definitie en voorbeelden van testontwerptechnieken

Testontwerptechnieken worden ingezet om software te testen. Het testen kan op allerlei gebieden plaatsvinden. Testtechnieken hebben hun eigen werkwijze en richten zich meestal op een bepaald element binnen een systeem. Ben je benieuwd naar wat een testontwerptechniek is, en welke soorten software testen er zijn? Lees dan snel verder!

schedule 18 okt 2023
bookmark_border Tips
create

Wat is een testontwerptechniek?

Een testontwerptechniek richt zich op het vinden van fouten in software en systemen. De soorten software tests worden ingezet om (delen van een) systeem grondig te onderzoeken op fouten. Er zijn verschillende technieken. Deze technieken hebben een eigen werkwijze en kunnen vanuit een testbasis worden ingezet om fouten op te sporen.

Test variëteiten: essentieel voor softwarekwaliteit

Net zoals elk project uniek is, is er geen standaard aanpak voor software testing. Hier komen test variëteiten om de hoek kijken. Wat zijn dat? Verschillende testvarianten die ervoor zorgen dat jij aan de unieke eisen van jouw project kunt voldoen.

Deze variëteiten richten zich op kwaliteitskenmerken zoals betrouwbaarheid, gebruiksvriendelijkheid en veiligheid. Denk aan het testen van een chatbot: misschien is 'persoonlijkheid' wel een belangrijk kenmerk voor jou.

Vooral in DevOps of cross-functionele teams geven deze variëteiten jou een helder overzicht van wat er getest moet worden. Ze zorgen ervoor dat jij de juiste testaanpak kiest, speciaal afgestemd op jouw project. Zonder deze variëteiten loop je het risico de mark van kwaliteit te missen.

Wat is een testbasis?

Een testbasis is een beschrijving van het gewenste gedrag van een systeem. Een testbasis bestaat uit alle bronnen die iets over de vereisten van het systeem vertellen. Een testbasis heb je in bijna alle gevallen nodig, omdat je anders niet weet of een systeem gewenst of ongewenst gedrag vertoont.

Hoe kies je een testontwerptechniek?

Welke techniek het meest toepasselijk is, ligt aan wát je precies wil testen.

TMap® Next heeft een aantal testvormen opgesteld. Deze testvormen, ook wel kwaliteitsattributen genoemd, zijn voorbeelden van wat je kunt testen bij een bepaald systeem. Bijvoorbeeld:

  • Functionaliteit;
  • Detailfunctionaliteit;
  • Overkoepelende functionaliteit;
  • Inpasbaarheid, bruikbaarheid, connectiviteit, performance of gebruiksvriendelijkheid.

De laatste testvorm bevat een aantal elementen. Dat komt omdat de meeste testontwerptechnieken die hieronder vallen, meerdere zaken tegelijk testen. Hieronder maken we een opsomming in alfabetische volgorde van soorten testen voor software:

Beslistabeltest (BTT)

De Beslistabeltest test de detailfunctionaliteit van een systeem. Met deze techniek kun je de aanwezige ontwerpspecificaties controleren. Met deze test richt je je op het onderzoeken van zogeheten condities.

Condities zijn gekoppeld aan beslispunten en komen in twee types: enkelvoudig en samengesteld.

Enkelvoudige condities

Bij deze condities is er één duidelijke vraag met twee mogelijke antwoorden, bijvoorbeeld: "Heb je een HBO diploma?" Het systeemgedrag volgt op basis van één antwoord: Ja of Nee.

Samengestelde condities

Hierbij zijn er vragen met meerdere gerelateerde antwoorden, zoals: "Heb je een HBO diploma en/of 5 jaar werkervaring?" Het systeem moet rekening houden met diverse scenario's gebaseerd op de combinatie van antwoorden.

Code coverage testing

Met code coverage testing achterhaal je zwakke plekken in de code van software. Je zorgt met deze test dat alle delen van de code grondig worden getest. Zo vind je bugs en fouten in de software op tijd en verbeter je de kwaliteit van de software. Er zijn drie verschillende soorten:

Statement coverage

Meet of elke code-regel tijdens tests ten minste één keer wordt uitgevoerd, maar niet noodzakelijk correct functioneert.

Branch coverage

Controleert elke mogelijke uitvoeringsweg binnen beslissingsstructuren, zoals if- en switch-statements; uitgebreider dan statement coverage.

Path coverage

Test alle mogelijke uitvoeringsroutes, inclusief alle beslissings- en loopcombinaties; grondig maar tijdrovend en kostbaar.

Datacombinatietest (DCT)

Deze techniek test de combinaties van systeemfuncties. Bij het uitvoeren van een datacombinatietest, of gegevenscombinatietest, is het de bedoeling dat met zo weinig mogelijk tests, zo veel mogelijk situaties nagebootst worden. Met deze test kun je potentiële fouten en problemen in jouw systeem opsporen. Dit type testen is vooral nuttig voor (software-)systemen met meerdere inputs en outputs. Het stelt je in staat in korte tijd een grote verscheidenheid aan scenario's te testen.

Elementaire vergelijkingstest (EVT)

Ook de EVT kan ingezet worden om detailfunctionaliteit intensief te testen. De Elementaire vergelijkingstest plaatst de focus op het testen van beslispunten in systemen. Je test grondig en gedetailleerd de functionaliteit van software op basis van pseudocode of een vergelijkbare specificatie met daarin gestructureerd uitgewerkte beslispunten en functionele paden. Met deze test dek je beslispunten grondig af en richt je je niet op het combineren van functionele paden.

Exploratief testen

Exploratief testen, of exploratory testen, is een ervaringsgerichte aanpak van testen. Deze test wordt ook wel eens ad-hoc, of ervaringsgericht testen genoemd, omdat het dus sterk leunt op de ervaring en kennis van de tester.

Met exploratief testen ben je gelijktijdig tests aan het ontwerpen en uitvoeren om meer over het systeem te leren. De inzichten van je laatst uitgevoerde test gebruk je om de volgende test weer goed te kunnen uitvoeren. Zo kun je steeds betere tests uitvoeren.

Gegevenscyclustest (GCT)

Speuren naar integratiefouten, dat is het doel van de Gegevenscyclustest! De GCT test de koppeling tussen allerlei functies van een systeem. De test wordt ook wel eens CRUD testen genoemd. CRUD is een afkorting die staat voor de vier basis uitvoeringen die op basis van een database uitgevoerd kunnen worden: Create (of insert):

  • Toevoegen van nieuwe gegevens;
  • Read (of select): Opvragen van gegevens;
  • Update: Wijzigen van gegevens;
  • Delete: Verwijderen van gegevens.

Integratietest

Een integratietest is een testontwerp techniek die de interactie tussen verschillende software componenten controleert. Je test dan hoe de componenten samenwerken en of ze aan de eisen voor het systeem voldoen. Dit soort testen zijn belangrijk omdat ze je helpen verzekeren dat de software goed werkt als ze met andere software componenten geïntegreerd wordt.

Het doel van de test? Het achterhalen of de verschillende software componenten samenwerken zoals verwacht. De functionaliteit van de software, de interfaces tussen de verschillende componenten en de gegevensstroom ertussen worden hiermee getest. De integratietest is belangrijk omdat deze verzekert dat het systeem voldoet aan de eisen voor integratie.

Ketentest

Een ketentest wordt gebruikt wanneer de functionaliteit van met elkaar gekoppelde eenheden worden getest. Maar je kunt de test ook voor afzonderlijke software modules en volledige systemen gebruiken. Een ketentest ontstaat uiteindelijk door een reeks tests aan elkaar te koppelen.

Het doel van de test is te verzekeren dat de afzonderlijke tests goed werken en dat het systeem als geheel ook goed functioneert. Ketentesten kunnen gebruikt worden om de functionaliteit van een systeem, zijn modules, of zijn afzonderlijke componenten te verifiëren.

Mob testing

Mob testing is een software testontwerptechniek waarbij een groep testers samenwerkt om een stuk software te testen. Er zijn twee rollen belangrijke rollen binnen deze testvorm:

Driver

De “driver” heeft binnen het proces van testen de controle over de computer. De anderen bedenken de testcases en observeren de resultaten van de test. Deze rol wordt na een bepaalde periode overgedragen aan een andere persoon. Zo krijgt iedereen de kans om een actieve rol te spelen in het testen van de software.

Navigator

Als navigator doe je suggesties, observeer je het testproces en geef je feedback. Ook zorg je dat er testcases worden gemaakt.

Met een mob test verbeteren je de kwaliteit van de software door verschillende perspectieven en inzichten samen te brengen en te benutten. Ieder heeft natuurlijk een eigen expertise, en door het samenwerken kun je als groep sneller problemen identificeren en oplossen. Deze test helpt ook om de communicatie tussen teamleden te verbeteren en kan dus zorgen voor een betere samenwerking. Deze testtechniek werkt dus goed als je werkt met cross-functionele teams of DevOps teams.

Mutation testing

Mutation testing is een testontwerptechniek die je verricht op verschillende versies van de software die je test. Ieder versie noem je dan een ‘mutant’. In elke mutant versie gebruik je op een geautomatiseerde manier bewust verschillende fouten.

Het doel? Uitvinden welke fouten door jouw tests worden opgepikt. Mutation testing helpt je dus om de effectiviteit van jouw testactiviteiten te beoordelen en te verbeteren.

Performance test

Met de performance test, of prestatie test meet je de snelheid, schaalbaarheid en stabiliteit van een applicatie onder bepaalde omstandigheden. Met deze test bepaal je makkelijker of de applicatie verschillende belastingen en gegevensvolumes aankan zonder uit te vallen of functionaliteit te verliezen. Reactietijd voor verzoeken van gebruikers en eventuele vertragingen in de verwerking kun je met deze test ook analyseren en evalueren.

Piramide testen

Het idee achter piramide testen is simpel: stel je teststrategie voor als een piramide. De basis wordt gevormd door unit tests. Je test hiermee de kleinste stukjes van je software, zoals functies of methoden. Daarna komen de integratietests in het midden. Deze tests controleren hoe goed verschillende delen van je software met elkaar samenwerken. Aan de top bevinden zich de systeemtests. Deze tests kijken naar de prestaties van je software als geheel. De vorm van de piramide laat je zien hoeveel van elke test je nodig hebt: een flinke hoeveelheid unit tests, een kleiner aantal integratietests en een nog kleiner aantal systeemtests.

Procescyclustest (PCT)

De procescyclustest, of process cylce test, wordt dikwijls ingezet om de integratie tussen administratie en een geautomatiseerd informatiesysteem te testen. Je controleert dus of alle stappen in een proces van een software correct worden uitgevoerd. Dit houdt in dat wordt nagegaan of de inputgegevens geldig zijn, de outputgegevens correct zijn en of alle tussenstappen goed worden uitgevoerd.

Om een procescyclustest uit te voeren, heb je het volgende nodig:

  • Duidelijk inzicht in het proces dat je test;
  • Toegang tot de software die wordt getest;
  • Toegang tot alle relevante documentatie;
  • Een testplan.

Real Life Test (RLT)

Met de Real Life Test onderzoek je het gemak waarmee verbindingen met andere systemen kunnen worden gemaakt (connectiviteit). Ook de bruikbaarheid en de performance worden met de RLT getest. Het voornaamste doel van de RLT test is het achterhalen of de software in de praktijk bruikbaar is. Je kunt de test voor zowel consumentenproducten als zakelijke producten gebruiken. Bijvoorbeeld: wanneer een tekstverwerkingsprogramma getest moet worden op praktische bruikbaarheid, moet je de test uitvoeren in een vergelijkbare situatie. Zoals deze in het dagelijks leven gebruikt gaat worden.

Semantische Test (SEM)

Deze ontwerptechniek richt zich op invoergegevens. Met een Semantische Test kun je bepalen in welke mate het systeem de invoergegevens accepteert. Denk hierbij aan het invullen van je geboortedatum op een verkoopsite van alcohol. De gegevens die je invoert, worden naar een database verzonden. Met de semantische test kun je onderzoeken of de software in orde is. Als de software in orde is, krijg je geen toegang tot de website als je geboortedatum minder dan 18 jaar voor de huidige datum ligt. Als een minderjarige bezoeker wel toegang krijgt tot de site, komt dat bij de semantische test, mits deze goed wordt uitgevoerd, boven water.

Syntactische Test (SYN)

De Syntactische Test gaat deels over hetzelfde onderwerp: invoergegevens. Met deze ontwerptechniek test je in hoeverre een systeem bestand is tegen ongeldige invoergegevens. Je onderzoekt de functionaliteit van de in- en uitvoergegevens in software. Dit noemen we ook wel valideren. Deze test is dus een validatietest om gegevens in software nauwkeurig te onderzoeken. Stel, je moet op een website je geboortejaar invullen. Je krijgt de mogelijkheid om vier cijfers in te vullen. Als je het jaar ‘1996’ invoert, wordt dit, als het goed is, goedgekeurd door de software. Bij goede software zou het niet mogelijk moeten zijn om letters in te voeren.

Use Case Test (UCT)

Met de Use Case Test kun je ontbrekende zaken in een systeem ontdekken. Het onderzoeken van individuele componenten van een systeem resulteert niet altijd in het ontdekken van ontbrekende elementen. Met een UCT los je dat probleem op. De test wordt gewoonlijk door ontwikkelaars uitgevoerd tijdens de ontwerpfase van een project, maar het kan ook gebruikt worden om de prestaties van bestaande systemen te beoordelen.

Testontwerptechnieken leren?

Dit artikel heeft je een overzicht gegeven van verschillende testontwerptechnieken. Wil je meer weten over softwaretesten? Testlearning is jouw testopleider in een digitale leeromgeving. Zo bieden wij de volgende cursussen aan:

Meer weten over Testlearning?

Lijkt het je leuk om op de hoogte te blijven van ontwikkelingen rondom onze testopleidingen? Volg ons dan op LinkedIn, schrijf je in voor de maandelijkse nieuwsbrief of lees onze blogs!