23-10-2016 Door: Bas Dijkstra

Verbeter je testproces met servicevirtualisatie

Deel dit bericht

Moderne softwareontwikkeltrajecten zien er heel anders uit dan tien jaar geleden. Waar vroeger eerst werd gepland, ontworpen, gebouwd en tot slot getest, met als resultaat (soms) een werkende, monolitische applicatie, werken we tegenwoordig Agile, parallel en iteratief aan gedistribueerde applicaties en systemen. Elke oplevering van elke component in de applicatie moet continu kunnen worden geïntegreerd en getest, zodat de kwaliteit te allen tijde inzichtelijk is en er direct kan worden opgeleverd of, waar nodig, kan worden bijgesteld of hersteld. Dat vraagt nogal wat van de moderne tester. Testautomatisering, Agile, de T-shaped tester; het zijn termen waar je niet meer omheen kunt. Wat nogal eens wordt vergeten, is dat deze nieuwe werkwijzen ook het nodige vragen van de testomgeving waarin de tester zijn werk moet doen...

Wanneer verschillende teams tegelijk aan software werken, is het een must om effectief, en het liefst continu, geautomatiseerd te kunnen testen, om inzicht te houden in de kwaliteit. Dat betekent dat testomgevingen altijd klaar moeten staan om gebruikt te kunnen worden, net als de gewenste testdata en configuratie van de omgeving. Maar zoals iedere tester je waarschijnlijk wel kan vertellen, is dat helaas lang niet altijd de werkelijkheid. Een paar redenen waarom teams niet, niet voldoende of niet vaak genoeg kunnen testen, zijn:

  • De benodigde afhankelijkheden – componenten of applicaties waar het te testen systeem of systeemonderdeel gebruik van maakt – in de testomgeving zijn (nog) niet beschikbaar, omdat deze parallel worden ontwikkeld.
  • Er is niet de juiste testdata aanwezig in deze afhankelijkheden om de gewenste testgevallen uit te kunnen voeren, en het team heeft niet de rechten of de kennis om dit voor elkaar te krijgen.
  • De afhankelijkheden zijn maar beperkt beschikbaar voor testdoeleinden. Denk bijvoorbeeld aan mainframes die gedeeld moeten worden tussen teams of afdelingen, of thirdparty-systemen waarvoor moet worden betaald om er gebruik van te maken (veel SaaS-oplossingen werken volgens dit model).

Hoe zou je ervoor kunnen zorgen dat bovenstaande beperkingen geen probleem meer vormen en je dus vaker, sneller en meer kunt testen? Eén mogelijke oplossing is het toepassen van servicevirtualisatie. Dit is een aanpak voor het simuleren van het gedrag van afhankelijkheden die je blokkeren in de testuitvoer. Door deze afhankelijkheden te vervangen door simulaties (zogenoemde virtual assets) kunnen teams weer grip krijgen op hun testomgeving en daardoor:

  • Vaker testen: het team heeft de volledige controle over de virtual assets, en kan deze dus naar behoefte configureren, daarna de gewenste tests uitvoeren en de resultaten bekijken en terugkoppelen. Onnodig wachten op anderen die verantwoordelijk zijn voor het in de lucht houden en inrichten van testomgevingen is daarmee verleden tijd.
  • Sneller testen: het team hoeft immers niet te wachten totdat alle afhankelijkheden in de testomgeving ontwikkeld en beschikbaar zijn en voorzien zijn van de juiste testdata. Hierdoor kan er eerder in het proces (bijvoorbeeld eerder in de sprint, wanneer er volgens Agile/Scrum wordt gewerkt) worden getest.
  • Meer testen: als het team de volledige controle heeft over het gedrag van de gesimuleerde afhankelijkheden is het eenvoudig om bepaalde uitzonderingsgevallen (zoals specifieke foutmeldingen/-situaties of specifiek performancegedrag) na te bootsen, iets wat met 'echte' testomgevingen vaak niet eenvoudig te realiseren is. Dit verhoogt de testdekking en daarmee impliciet de kwaliteit van de opgeleverde software.

gastblog_bas dijkstra.png


Van blokkades in een testomgeving naar volledige controle met servicevirtualisatie.


Het aanbod van servicevirtualisatietools, en de mogelijkheden die deze tools bieden, groeien gestaag. Grofweg kun je op dit moment twee categorieën tools onderscheiden:

  • Open source, single purpose. Deze tools richten zich vaak op het simuleren van een specifieke technologie, bijvoorbeeld RESTful API’s. Voorbeelden van tools in deze categorie zijn Hoverfly en WireMock.
  • Gelicentieerd, multi-purpose. Deze tools ondersteunen simulatie van een groot aantal technologieën, platforms en protocollen. Voorbeelden van dit type tools zijn Parasoft Virtualize en HPE Service Virtualization.

Een relatief nieuwe ontwikkeling op het gebied van servicevirtualisatie is de mogelijkheid tot volledige integratie ervan in een Continuous Integration- / Continuous Delivery-omgeving. Dit maakt het mogelijk om, naast de te testen software, ook een gesimuleerde testomgeving te deployen, te gebruiken tijdens het uitvoeren van tests en weer te verwijderen, allemaal als onderdeel van het build-proces. Dit wordt mogelijk gemaakt door die gesimuleerde testomgeving op te leveren als containers, bijvoorbeeld op basis van Docker. Een dergelijke aanpak heeft een aantal interessante voordelen voor het testproces:

  • Er is altijd een testomgeving beschikbaar, simpelweg door het opstarten van een container.
  • Gesimuleerde testomgevingen kunnen onder versiebeheer worden gebracht, net als de applicaties die met de testomgevingen worden getest.
  • Het is heel eenvoudig testomgevingen terug te brengen in de uitgangssituatie en testomgevingen en configuraties te delen voor het reproduceren van bevindingen.

Voor teams en organisaties die hinder ondervinden van testomgevingen en hierdoor onvoldoende kunnen testen, kan servicevirtualisatie mogelijk uitkomst bieden. Wil je meer weten over servicevirtualisatie, het toepassen hiervan in het testproces en wat het voor jou zou kunnen betekenen? Kom dan op 15 november naar het Craft Test Event van Centric. Meer weten of meteen aanmelden?

Deze blog door gastblogger Bas Dijkstra is eerder verschenen op de website van Centric Craft.

Tags:

Testen

Company:

Centric

Bas Dijkstra

Bas Dijkstra helpt organisaties hun testinspanning te verbeteren door het slim inzetten van tools. Hij heeft tien jaar ervaring in het vak en heeft testautomatiseringsoplossingen ontworpen en geïmplementeerd voor een breed scala aan klanten en applicaties. Daarnaast heeft hij veel ervaring met het toepassen van servicevirtualisatie voor het sneller, vaker en meer testen in gedistribueerde testomgevingen. Naast het hands-on werk bij opdrachtgevers deelt Bas zijn kennis en ervaringen via presentaties, workshops en trainingen. Ook publiceert hij elke woensdag via zijn blog een blogpost over testautomatisering of servicevirtualisatie.

Alle blogs van deze auteur

Partners