Integratietesten definiëren we als een type test waarbij we softwaremodules logisch integreren en testen als een groep.
Een applicatie bestaat meestal uit meerdere softwaremodules. Deze modules worden door verschillende programmeurs gecodeerd. Maar hoe weten we of de modules goed samenwerken? Integratietesten richt zich echter op het controleren van de datacommunicatie tussen deze modules.
Waarom voeren we integratietesten uit?
Tijdens de levenscyclus van een softwareproject zijn er vier momenten waarop we testen. De eerste drie testen voert IT zelf uit en bepalen feitelijk of de software ook testbaar is voor de klant. De meeste fouten zijn al uit de software gehaald voordat een klant aan de Acceptatietest begint. Dit zijn de vier testmomenten:
Hoewel elke softwaremodule een unittest doormaakt, kunnen er nog steeds fouten in zitten:
Een module is dus in het algemeen geprogrammeerd door een individuele programmeur. Zijn begrip en programmeerlogica kan echter verschillen van de andere programmeurs. Daarom is integratietesten nodig om de softwaremodules samen aan het werk te zien.
Op het moment dat we de module ontwikkelen kunnen de behoeften van de klant bovendien veranderen. Deze nieuwe requirements hebben mogelijk nog geen unittest doorstaan. Ook daarom is integratietesten noodzakelijk.
De interfaces van de softwaremodules met de database kunnen onjuist zijn.
Externe API-interfaces kunnen onjuist zijn.
En tenslotte kan een ontoereikende afhandeling van uitzonderingen problemen veroorzaken.
Strategieën voor integratietesten
Software Engineering definieert verschillende strategieën om een integratietest uit te voeren, namelijk:
Big Bang aanpak.
Incrementele aanpak. Die is verder onderverdeeld in de volgende:
Top-down benadering.
Bottom-up benadering.
Incrementele aanpak – combinatie van top-down en bottom-up.
Big Bang aanpak:
Alle units en andere componenten integreren gelijktijdig en testen we daarom in een keer.
Voordelen:
Handig voor kleine systemen.
We weten tevens zeker dat het geïntegreerde geheel is getest.
Nadelen:
Het lokaliseren van fouten is echter moeilijk.
Door het grote aantal interfaces dat we in deze benadering moeten testen, kunnen we ook sommige koppelingen gemakkelijk missen.
Omdat we pas met integratietesten kunnen beginnen als alle modules gecodeerd zijn, kost het meer moeite om deze test op het juiste moment te plannen.
Vaak gaat de tijd van het integratietesten af van de acceptatietest.
Omdat alle modules tegelijk worden getest, worden kritieke modules met een hoog risico niet geïsoleerd en niet extra zwaar getest.
Randapparaten die met de modules te maken hebben kunnen niet geïsoleerd getest worden.
Incrementele aanpak
In deze benadering testen we door twee of meer modules samen te voegen die logisch gerelateerd zijn. Vervolgens voegen we de andere gerelateerde modules aan de test toe. Zo ontstaat dus een keten die we testen op een juiste werking. Dit proces gaat bovendien door totdat we alle modules hebben samengevoegd en getest.
De incrementele aanpak wordt op zijn beurt uitgevoerd door middel van twee verschillende methoden:
Bottum up.
Top down.
Wat is Stub en wat is Driver?
Tijdens de incrementele aanpak gebruiken we dummy-programma’s genaamd Stubs en Drivers. Stubs en Drivers bevatten niet de volledige programmalogica van de softwaremodule maar simuleren slechts de datacommunicatie met de te testen modules.
Stub: Aangeroepen van andere modules door de module die we testen.
Driver: Werk andersom en roept dus de module die we testen op.
Bottom-up integratietest
In de bottom-up-strategie testen we elke module op lagere niveaus met de bovenliggende modules totdat we alle modules hebben getest. Daarom hebben we hulp van drivers nodig voor deze testen.
Voordelen:
Het lokaliseren van fouten is eenvoudiger.
We verspillen geen tijd met wachten tot dat alle modules zijn gecodeerd.
Nadelen:
Kritieke modules (op het hoogste niveau van de software-architectuur) die de flow van de applicatie regelen, testen we als laatste en kunnen gevoelig zijn voor defecten.
Bij Top-Down-benadering vindt het testen van boven
naar beneden plaats, afhankelijk van de flow van de applicatie.
Maakt gebruik van stubs om te kunnen testen.
Voordelen:
Het lokaliseren van fouten is eenvoudiger.
Het is tevens mogelijkheid om een vroeg prototype te verkrijgen.
Kritieke modules testen we met prioriteit; ontwerpfouten vinden we dus eerder en kunnen we oplossen voor we tijd verdoen aan het testen van andere modules.
Nadelen:
We zijn veel stubs nodig.
Modules op een lager niveau testen we onvoldoende.
De Hybride integratietest
De hybride strategie is een combinatie van de Top down en de Bottom up benaderingen. We testen de topmodules en de lagere modules tegelijkertijd en geïntegreerd. Bij deze strategie maken we van zowel stubs als drivers gebruik.
Integratietesten definiëren we als een type test waarbij we softwaremodules logisch integreren en testen als een groep.
Een applicatie bestaat meestal uit meerdere softwaremodules. Deze modules worden door verschillende programmeurs gecodeerd.
Hoe weten we of de modules goed samenwerken? Integratietesten richt zich op het controleren van datacommunicatie tussen deze modules.