INDIVIRTUAL - TECHNISCH PARTNER IN DIGITALE DIENSTVERLENING

Kwaliteitscontrole op webdevelopment: Software testing #3

July 13, 2011

Post 3: unittest en systeemtest

In de vorige posts in deze reeks ben ik ingegaan op wat er voorafgaat aan het testen en de richtlijnen voor het testen. In deze en de volgende delen beschrijf ik de verschillende soorten tests die worden uitgevoerd als onderdelen van de Indivirtual kwaliteitscontrole.

vorige post (2): testrichtlijnen en aanpak

In de volgende posts beschrijf ik het toetsen van Accessibility, de Functionele Acceptatietest en de Stresstest / Performance test die worden uitgevoerd als het systeem voltooid en deployed is op een acceptatie- of productieomgeving. Maar ook voordat het zover is, wordt er getest.

Het testen is volledig verweven met de bouw; tijdens de ontwikkelfase vinden gestructureerde automatische unittests plaats. Geen onderdeel (unit) is klaar voordat het aan de vooraf geformuleerde eisen voldoet. Zodra alle onderdelen van het systeem aan de eisen voldoen, is daarmee het hele systeem klaar. Nu worden de integratietest en de systeemtest uitgevoerd om de integratie van de afzonderlijke onderdelen tot een compleet systeem te beoordelen en om te testen of het systeem als geheel conform requirements functioneert.

Geautomatiseerde Unittests

De unittests worden door de ontwikkelaars in de ontwikkelomgeving uitgevoerd. Unit tests zijn geen vervanging voor andere soorten tests, unit testing is een extra activiteit met foutreductie als doel. De test moet aantonen dat een unit aan de in de technische specificaties gestelde eisen voldoet. De definitie van de testcases en testscripts vormt voor Indivirtual de basis voor de specificatie van elk onderdeel (unit) dat ontwikkeld wordt. De testscripts worden vervolgens in het development framework automatisch doorlopen. Dit heeft een aantal voordelen:
  • Development start niet hals over kop; door het schrijven van de cases en scripts weet de developer van tevoren precies wat het te bouwen onderdeel (de unit) moet kunnen.
  • Inzichtelijk en verifieerbaar: Ook anderen kunnen eenvoudig inzicht krijgen in wat deze testcriteria zijn.
  • Snel: De opgestelde scenario’s kunnen met een aantal handelingen automatisch worden doorlopen
  • Herbruikbaar: Na een kleine aanpassing kan direct een regressietest worden gedaan op alle units
  • Tijdsbesparing tijdens de systeemtest: Alle onderdelen van het systeem zijn al getest. Deze zijn goed en compleet bevonden. Hierdoor is de kans op fouten geringer, en wordt het debuggen van overblijvende issues wezenlijk eenvoudiger. De strategie voor het oplossen van deze overblijvende issues kan namelijk op de verwachting worden gebaseerd dat het geen problemen zijn die worden veroorzaakt door fouten binnen de onderdelen, maar dat het integratieproblemen betreft tussen de onderdelen.
  • (Delen van) de voor de unittest geschreven scripts kunnen later worden hergebruikt voor geautomatiseerde onderdelen van andere tests. Die tests kunnen op meerdere omgevingen worden uitgevoerd (bijvoorbeeld Ontwikkel, Test en Acceptatie).
Kortom, door geautomatiseerd unitesten wordt al vroeg in het ontwikkelproces een kwaliteitsslag gemaakt. Hierdoor is het aannemelijk dat later in het project minder tijd nodig zal zijn voor testen en de kwaliteit van het projectresultaat hoog zal zijn.

Integratie- en Systeemtest

Deze tests worden gebaseerd op het TO (Technisch Ontwerp). De tests dienen te garanderen dat het gehele systeem inclusief de samenwerking van de verschillende onderdelen ervan volgens specificaties functioneert. Er wordt (met het TO als input) een gedetailleerde testscript uitgewerkt, inclusief de testcriteria. Dit testscript wordt doorlopen in deze test; het gaat hier in tegenstelling tot de unittests niet om volledig automatisch uitgevoerde tests. De testers van Indivirtual voeren stap voor stap van het script uit. Wel worden er zoveel mogelijk van die stappen geautomatiseerd, om de snelheid en de herhaalbaarheid te vergroten. Maar natuurlijk ook omdat het voor niemand leuk is om simpele handelingen te verrichten, die ook automatische gedaan kunnen worden...

Nadat de bevindingen zijn opgelost wordt het volledige script opnieuw doorlopen om er zeker van te zijn dat de oplossing correct en volledig is en er geen nieuwe issues zijn ontstaan. De integratietest en de systeemtest worden afgesloten als het testscript volledig is doorlopen zonder gevonden issues.

In de volgende posts vervolg ik met de tests die worden uitgevoerd nadat is uitgewezen dat het systeem naar wens functioneert.

Post 4: interne functionele acceptatietest en accessibility check

Frank van de Velde

Frank van de Velde