Service Virtualisatie: waardevol voor het Agile team

donderdag 10 september 2015

Veel bedrijven zijn tegenwoordig al actief in een Agile ontwikkelmethode of zijn bezig met de switch hier naar toe. Teams die Agile werken kunnen met verschillende afhankelijkheden te maken krijgen. Denk hierbij aan onbeschikbare omgevingen of nog te realiseren services. Service Virtualisatie is een manier om (de ontwikkeling van) afhankelijkheden in de keten te elimineren in zowel traditionele als agile trajecten. In dit blog geef ik je antwoord op de vraag: Hoe kan Service Virtualisatie teams helpen om software met een korte time–to-market te realiseren zonder in te moeten boeten op de kwaliteit?

Afhankelijke teams

Vaak zie je binnen Agile dat meerdere teams aan een bepaalde feature werken. Zij zijn erg van elkaar afhankelijk bij het werken binnen dezelfde systemen. Daarom kloppen teams vaak bij elkaar aan met vragen zoals, “Is het systeem plat of wanneer wordt een deel opgeleverd?”. Wanneer er gebruik gemaakt wordt van Service Virtualisatie kan het team - dat werkt aan het te koppelen systeem - direct aan de slag met hun testen zonder deze vragen te hoeven stellen. Daarmee haal je druk van jezelf af en maak je ook een betere voortgang.

Ondersteunende rol

Service Virtualisatie heeft een grote ondersteunende rol voor testautomatisering en performancetesten. Testautomatisering is een randvoorwaarde binnen de agile ontwikkelmethode. Echter door het ontbreken van omgevingen of het andere ontwikkelritme van andere teams en systemen, kan het zijn dat je de geautomatiseerde testset niet (volledig) kunt uitvoeren. Service Virtualisatie kan helpen dit probleem te voorkomen.

Virtual assets

Met behulp van een virtual asset, een gesimuleerde service, kun je tests namelijk altijd uitvoeren. Laten we performancetesten als voorbeeld nemen. Deze voeren we het liefst uit op een omgeving die gelijk is aan productie. Helaas gebeurt dit vaak op testomgevingen die de grote load niet aankunnen. De specificaties van de systemen zijn gewoon niet hetzelfde als die van productie. In deze situatie bieden virtual assets uitkomst.

Tijdwinst

Omdat je de virtual asset al op de echte verbinding kunt plaatsen, kan de software gebruik maken van de echte koppeling. De virtual asset zorgt voor het antwoord, in plaats van het echte systeem. Het gaat om simpele responses van het systeem. Dit draagt bij aan je integratietest. Het is daarom van belang dat de toegang en koppelingen direct goed geregeld zijn, zodat je dit later niet meer hoeft te testen. Dit levert veel tijdwinst op: een verhoogde continuïteit en minder onbeschikbaarheid van systemen.

Hoe gaat het in z’n werk?

Veel teams beginnen met ontwikkelen van software die onderdeel uitmaakt van een keten. Echter is deze keten nog niet zover dat je hier ook al gebruik van kunt maken. Op basis van bestaande (of opgehaalde) informatie (XSD’s, WSDL’s etc.) kan worden voorspeld hoe de keten zal acteren. Met deze informatie wordt dan een virtual asset gebouwd die een interface simuleert. Hierdoor is het mogelijk je eigen systeem al te testen. Zo kun je situaties die optreden na interactie met het andere systeem ook alvast testen. Wanneer je gaat testen met het echte systeem vanuit de keten, kan het zijn dat er nog wijzigingen volgen. Maar vaak zijn de meeste situaties in de eigen software dan al wel opgelost. Voor simpele koppelingen mag ingeschat worden dat het gaat om ongeveer drie uur per virtual asset. Tijd die op een goede manier geïnvesteerd wordt, welke anders bijvoorbeeld al snel verloren gaat door niet (voldoende) beschikbare omgevingen.

Een aantal voorbeelden

In ongelijke omgevingen kun je al tests uitvoeren zodat je een goed beeld krijgt van de performance tussen de verschillende sprints (huidige sprint tegenover de baseline waarden). Ook kun je in een omgeving die wel gelijk is aan productie gebruik maken van een virtual asset: omdat het andere systeem niet gelijk is aan productie en daardoor niet de performance van het productiesysteem kan realiseren. Zo’n virtual asset kan dit wel goed simuleren. Dit komt omdat de virtual asset op een schaalbare manier neergezet kan worden. Zo worden zowel de functionele als de niet functionele requirements gesimuleerd. Door het gebruik van deze virtual assets krijg je veel sneller inzicht in de kwaliteit en de voortgang van de ontwikkeling van een systeem. En dat is wat je met Agile wilt bereiken. Bij Agile gaat het immers om korte doorlooptijden.

Nadelen

Natuurlijk zitten er voor- en nadelen aan Service Virtualisatie.

Een veel genoemd nadeel is dat het werk twee keer uitgevoerd moet worden.

  1. 1. Een test tegen een virtual asset
  2. 2. Een test tegen de echte omgeving

Dit is noodzakelijk omdat de virtual assets de echte omgeving nooit vervangen. Als je alleen tegen een virtual asset test, is de kans op bevindingen vanuit de integratie aanwezig. Wanneer je echter tegen zowel de virtual asset als de echte omgeving test, zal de test met de echte koppeling sneller doorlopen moeten worden. Doordat je er in de tests met de virtual assets al veel bevindingen uithaalt, zullen deze in de echte omgeving niet meer optreden. Dit verkort de totale doorlooptijd van de testinspanning niet, maar brengt wel de einddatum naar voren.

Voordelen

Een groot voordeel van Service Virtualisatie is dat je onafhankelijk van andere teams en ongestoord kunt werken. Je hoeft niet meer te wachten op opleveringen omdat je ook in eerdere sprints al kan gaan testen. Doordat je sneller kan beginnen, worden bepaalde bevindingen eerder gedaan en kunnen deze eerder worden opgelost. Dit brengt minder kosten met zich mee dan deze bevinding later in het ontwikkelproces op te moeten lossen. Een ander voordeel is dat je systemen van derde partijen kan simuleren. Bij deze partijen is het niet ongebruikelijk dat je moet betalen per call van de service. Door een virtual asset te realiseren, hoef je minder te investeren in het juist testen van de externe service.

Eerder testen met Service Virtualisatie

Service Virtualisatie elimineert verschillende afhankelijkheden die veel Agile teams ondervinden. Vanuit de keten zijn systemen of software vaak nog niet beschikbaar waardoor al snel vertragingen ontstaan. Service Virtualisatie helpt met behulp van virtual assets om deze systemen of software te simuleren zodat de software al wel te testen is. Service Virtualisatie helpt Agile teams dus om nog flexibeler te zijn en hun velocity te verhogen.