Wat is het verzamelen van een testsoort?

Voor het verzamelen van testsoorten wordt onderscheid gemaakt tussen testsoorten en testvormen. Een testsoort is een specifiek type test dat gericht is op een bepaald aspect van de software om te controleren of deze correct functioneert. Testsoorten zijn ingedeeld op basis van het doel van de test. Doelen kunnen zijn:

  • Het testen van een specifieke unit of code
  • De werking van het hele systeem
  • Een acceptabel resultaat voor een stakeholder

Per testsoort kunnen verschillende testvormen worden gekozen. Een testvorm verwijst naar de manier waarop een test wordt uitgevoerd of de methode die wordt gebruikt om de software te testen. Het beschrijft de aanpak, structuur en uitvoering van de test. Een test kan handmatig óf geautomatiseerd worden uitgevoerd. Is de test gericht op input / output (black-box testing), of juist gericht op de structuur van de test (white-box testing)? Allemaal zaken die in de testvorm worden beschreven.

Hoe zit het selecteren van testsoorten in elkaar?

Voordat we ingaan op het selecteren van testsoorten bekijken we het model van testen: het V-model. Daarna worden de verschillende testsoorten beschreven en in relatie gebracht met het V-model.

V-model

Het V-model is een model dat het softwareontwikkelproces en het testproces visueel in kaart brengt. Het model toont de relatie tussen de fasen van softwareontwikkeling en de bijbehorende testfasen. Het model heeft een V-vorm waarbij de linkerhelft de verificatie-fasen toont en de rechterhelft de validatie-fasen.

Figuur 1. V-model

Verificatiefasen (Linkerhelft van de V):

De verificatiefasen zijn gericht op het specificeren en ontwerpen van het systeem om ervoor te zorgen dat het product aan de eisen voldoet.

  1. Requirementsanalysis (Requirementsanalyse):
    In deze fase worden de functionele en niet-functionele eisen van het systeem verzameld en geanalyseerd. Het doel is om de behoeften van de klant of eindgebruiker te begrijpen en vast te leggen in een gedetailleerd eisenpakket.

  2. System design (Systeemsontwerp):
    Hier wordt het algemene systeemontwerp gemaakt, waarbij de focus ligt op de architectuur en de structuur van het systeem als geheel. In deze fase wordt bepaald hoe de verschillende onderdelen van het systeem met elkaar zullen samenwerken. Te denken valt aan meerdere applicaties die samen een systeem vormen.

  3. Architecture design (Architectuurontwerp):
    Het architectuurontwerp verfijnt het systeemontwerp verder. Het gaat om het bepalen van de technologische keuzes (zoals software en hardware), communicatieprotocollen, en de interfaces tussen de verschillende componenten van het systeem.

  4. Module design (Modulaire ontwerp):
    In deze fase wordt het ontwerp verder opgesplitst in modulen of componenten van het systeem. Elk van deze modulen wordt ontworpen met gedetailleerde informatie over de functionaliteit, gegevensstructuren en de interfaces van de module.

  5. Coding (Coderen):
    In de coderingfase worden de modulen ontwikkeld door de code daadwerkelijk te schrijven, gebaseerd op het ontwerp. Het doel is om de modulen die zijn gedefinieerd in het ontwerp om te zetten naar werkende code.

Validatiefasen (Rechterhelft van de V):

De validatiefasen zijn gericht op het testen van het systeem om te controleren of het voldoet aan de gedefinieerde eisen en of het systeem correct werkt in de praktijk.

  1. Coding (Coderen):
    De eerste validatiefase is de codering zelf, wat ook de uitvoer van de ontwikkelfase is. De code moet worden gecontroleerd en vergeleken met de ontwerpdocumenten om te verzekeren dat de ontwikkelde software de vereiste functionaliteiten bevat.

  2. Unit testing (Unit-testen):
    In deze fase worden de individuele eenheden of modules getest om te controleren of ze correct functioneren. Dit wordt vaak gedaan door de ontwikkelaars zelf. Elke module wordt geïsoleerd getest op de functionaliteit die het zou moeten bieden.

  3. Integration testing (Integratietesten):
    Nadat de eenheden zijn getest, worden ze samengevoegd in een groter geheel. De integratietest controleert of de verschillende modulen goed met elkaar communiceren en correct samenwerken in de context van het hele systeem.

  4. System testing (Systeemtesten):
    In de systeemtest wordt het gehele systeem als geheel getest om te controleren of het voldoet aan de systeemvereisten. Dit is een bredere test die zich richt op de werking van het systeem in een productieachtige omgeving. De nadruk ligt op het testen van alle aspecten van het systeem samen.

  5. Acceptance testing (Acceptatietesten):
    De laatste validatiefase is de acceptatietest, waarbij de klant of eindgebruiker het systeem test om te controleren of het voldoet aan hun eisen en verwachtingen. Dit wordt meestal gedaan aan het einde van de ontwikkelingscyclus, voordat het systeem in productie wordt genomen.

Verification vs. Validation

Verificatie is het proces van testen of het product voldoet aan de specificaties en de ontwerpen. Het controleert of de software volgens de juiste procedures en specificaties is gebouwd.

Validatie gaat verder en kijkt of het eindproduct voldoet aan de wensen en behoeften van de klant. Het bevestigt of de software daadwerkelijk de juiste oplossing biedt voor de klant.

In het V-model is de verificatie gekoppeld aan de ontwerp- en ontwikkelingsfasen aan de linkerkant van de “V”, terwijl validatie wordt uitgevoerd in de testfasen aan de rechterkant. Het model benadrukt het belang van het plannen van testfasen parallel aan de ontwikkelingsfasen, zodat het product niet alleen technisch correct is, maar ook daadwerkelijk aan de klantvereisten voldoet.

V-model, SSDLC en SCRUM

De fasen van het V-model zijn naadloos te combineren met de fasering in de SSDLC en SCRUM. Het is aan het ontwikkelteam om in overleg met de opdrachtgever en stakeholders hiertussen een koppeling te leggen. Dit is een taak die bij het opzetten van het project uitgevoerd moet worden.

Testsoorten

De testsoorten kunnen als volgt worden onderscheiden:

  • Unit test:
    Een unit test richt zich op het testen van de kleinste eenheden van de applicatie, zoals een enkele functie of methode. Het doel is om te controleren of deze eenheden van code correct werken, zonder afhankelijkheden van andere componenten of systemen.

  • Integratietest:
    Integratietests worden uitgevoerd om te verifiëren of verschillende componenten of systemen goed met elkaar samenwerken. Het doel is om te testen of de interactie tussen verschillende delen van het systeem correct is, bijvoorbeeld tussen modules of externe systemen, zoals databases of APIs.

  • Systeemtest:
    Systeemtesten zijn gericht op het testen van het gehele systeem in een realistische omgeving. Hierbij wordt gecontroleerd of de applicatie als geheel goed functioneert en voldoet aan de gestelde eisen. Het doel is om te testen of alle onderdelen van het systeem naadloos samenwerken en of het systeem werkt zoals verwacht in zijn volledige context.

  • Acceptatietest:
    Bij acceptatietests wordt het systeem getest vanuit het perspectief van de eindgebruiker. Het doel is om te controleren of de applicatie voldoet aan de bedrijfsvereisten en verwachtingen van de klant. Deze tests worden vaak uitgevoerd door de klant zelf of door vertegenwoordigers van de klant en zijn bedoeld om te valideren of het systeem klaar is voor productie.

Elke testsoort heeft zijn eigen focus en rol binnen het ontwikkelings- en testproces. Unittests worden vaak in de vroege ontwikkelingsfasen uitgevoerd, terwijl integratietests, systeemtests en acceptatietests later in het proces worden uitgevoerd om de kwaliteit van het gehele systeem te waarborgen.

Kiezen van testsoorten

De testinspanning verwijst naar de afspraak die is gemaakt over welke testsoorten worden toegepast en de hoeveelheid analyse die wordt uitgevoerd voor een specifieke use case. Het is de inschatting van de benodigde middelen en tijd voor het uitvoeren van verschillende testsoorten, afhankelijk van de complexiteit van de use case en de bijbehorende risico’s. Dus de testinspanning bepaalt welke testsoorten worden toegepast op een use case.

Voor elk type testsoort zijn meerdere testvormen te kiezen. Een overzicht en beschrijving hiervan is te vinden in het TMAP - Overzicht testvormen.pdf.

Hoe gebruik je het verzamelen van testsoorten?

Het kiezen van testsoorten is van belang zodra bepaald is welke testcases voor een testscenario getest moeten gaan worden. Afhankelijk van de afgesproken testinspanning wordt bepaald welke testsoorten daadwerkelijk worden toegepast.


Volgende stap: Uitleg opstellen schriftelijke testcase