Regressietest

 
Regressietest is een voornaam onderdeel van de werkzaamheden van een software tester. Grof gezegd testen deze tests de functionaliteit van deze softwareonderdelen die niet gewijzigd werden tijdens de testactiviteiten. Dus waarom zijn ze dan zo belangrijk? Hieronder geven we u graag meer uitleg.
 
Meer weten?
3662

Regressietest in beheer

Laat u uw software testen in beheer dan is het het eerste doel van uw software testers om te kijken hoe uw werkomgeving reageert op de nieuwe software (en vice versa). De eerste aandacht gaat zo uit naar die gebieden waar de software zich anders gedraagt dan ‘normaal’ te verwachten is. Deze probleemgebieden worden aangepast om zo de werking van het programma beter af te stemmen op de specifieke context waarin het programma opereert of zou moeten opereren.

Aanpassingen die zo worden aangebracht kunnen echter ook een effect hebben op andere facetten van het programma, facetten die nochtans onaangeroerd bleven. Deze vaststelling is misschien zelfs wel een van de natuurwetten van de informatica te noemen. Het is een weerkerende fenomeen: nieuwe implementaties kunnen nieuwe fouten creëren of oude, slapende fouten reactiveren.
Zo’n fout (bug) kan optreden door slecht nazicht van een herstelling (fix) of gewoon door een menselijke fout. Soms is het ook gewoon de aard van het beestje. In veel gevallen is een eerste fix bovendien te karakteriseren als ‘fragile’ (fragiel). Dat betekent dat hij niet altijd even goed functioneert, of dat hij aanvankelijk wel werkt, maar later niet meer. Daarnaast kan een fix in het ene domein ook problemen veroorzaken in een ander, of kunnen designfouten worden overgedragen van implementatie op implementatie.

Regressietest versus acceptatietest

Het is deze (‘ongewijzigde’) programmatuur die vervolgens wordt ‘hertest’ via een regressietest. Met deze tests gaat de software tester met andere woorden op zoek naar nieuwe bugs ten gevolge van aanpassingen aan (andere domeinen van) het systeem. De tests verzekeren dus dat nieuwigheden geen nieuwe disfuncties genereren. Wat dat betreft wordt de regressietest overigens onderscheiden van niet-regressietesten (of acceptatietesten). Deze testen controleren namelijk of een doorgevoerde wijziging het gewenste effect heeft.

Meer weten?

Een veelgebruikte regressietest

In concreto is een veelgebruikte methode hier het opnieuw uitvoeren van eerder vervolledigde tests. Daarbij wordt vervolgens gecontroleerd hoe het programma zich nu gedraagt: of er veranderingen optreden in het gedrag, en of fouten die voorheen hersteld werden al dan niet weer opduiken. Efficiëntie en effectiviteit worden ondertussen verkregen door een geschikte, minimale set van testen samen te stellen, afgestemd op de beoogde aanpassingen. Regressietesten kunnen daarbij overigens zowel betrekking hebben op de werking van het programma als op de (kwaliteit van de) output ervan.

Regressietest als ‘best practice’

Aangezien regressie-problematieken een wezenlijk deel uitmaken van het designproces worden regressietesten ook gezien als een integraal onderdeel van goed coderen. Wanneer een bug wordt gelokaliseerd en gefixt, dienen er tegelijk voldoende regressietesten te worden ondernomen. Alleen zo kan worden aangetoond dat de bug inderdaad gefixt is en dat die fix geen andere problemen veroorzaakt. Deze tests kunnen manueel worden ondernomen, maar verlopen vaak ook automatisch. Sommige projecten gebruiken zelfs geautomatiseerde systemen die automatisch regressietesten ondernemen na specifieke intervallen. Daarbij worden bugs systematisch gerapporteerd. Men spreekt dan van regressietesten als onderdeel van Extreme Programming Software Development.

Types van regressietesten

Vanuit dit kader kunnen regressietesten, tot slot, onderverdeeld worden in twee grote categorieën: functionele testen en unit testen. Het eerste type test het volledige programma via verschillende inputs. Het tweede type test individuele functies, subroutines of objectmethodes. De gebuikte tools zijn doorgaans gespecialiseerd en maken als dusdanig geen regulier onderdeel uit van het onderzochte softwarepakket. Meestal betreft het, zoals gezegd, ook geautomatiseerde toepassingen. Een functionele test is meestal een serie input-scripts, waarin doorgaans ook een mechanische mouse-bediening wordt geïntegreerd. Een unit test is een set van aparte functies die een reactie vragen van de broncode, zij het zonder de geteste code te wijzigen.

Wilt u meer weten over de mogelijkheden van regressietesten voor uw organisatie? Neem dan contact met ons op. Wij staan u graag te woord.

Samenvatting regressietest

 
Ondanks dat regressietesten veel veel tijd kunnen besparen en de kwaliteit van het testen kunnen verbeteren is het vaak nog een onderschat onderdeel van het testproces ( overigens niet door de testers zelf ). Daarom onderstaande een korte samenvatting van de belangrijkste bulletpoints.
 
  • Een regressietest werkt kwaliteit verhogend.
  • Een regressietest bespaart uiteindelijk veel tijd ( en dus geld ).
  • Regressietesten zijn makkelijk te automatiseren of kunnen handmatig worden uitgevoerd.
  • Regressietesten zijn uiteindelijk onder te verdelen in twee categorieën, namelijk Unit testen en Functionele testen
3506