86 punten
Program Manager at Microsoft Corporation
25 februari 2010
 
Artikel: 14 december 2010

Inrichten testomgeving met Lab Management

 1073 views - Download: PDF 


EEN EERSTE VERKENNING VAN DE MOGELIJKHEDEN

Ewald Hofman

In Visual Studio 2010 is een aantal features toegevoegd onder de noemer Lab Management, gericht op de inrichting en gebruik van een testomgeving, waarbij integratie in de gehele software ontwikkel lifecycle een belangrijk aspect is. Dit artikel geeft een overzicht van de mogelijkheden van Lab Management, de problemen die je tijdens het testen tegen het lijf kunt lopen en hoe je die kunt oplossen.


Testers zijn essentieel bij het ontwikkelen van een applicatie van hoge kwaliteit. Een testteam heeft te maken met een aantal uiteenlopende uitdagingen die het bereiken van een applicatie met een hoge kwaliteit in de weg staan. Eén van die uitdagingen is het inrichten en onderhouden van een testomgeving. De testomgeving heeft een cruciaal aandeel in het succes van het testteam, de kwaliteit van de testomgeving bepaalt in belangrijke mate het succes en de slagvaardigheid van het testteam.

 

V-model


Het V-model is bij velen bekend als een goede methode om de specificaties te valideren. Zoals te zien is in figuur 1 bestaat het V-model uit een bouwkant en een testkant. Op elk detailniveau dat je uitvoert in de bouwfase is een tegenhanger in de testfase. 


Figuur 1: het V-model.

Deze methode is enkele tientallen jaren oud. Voor de komst van Visual Studio 2010 was voornamelijk de onderkant goed vertegenwoordigd. Met Visual Studio 2010 wordt ook het blok Functionele test onderdeel van het ontwikkelproces in Visual Studio. 


Zoals aangegeven in de inleiding is een essentieel onderdeel van het testen het hebben van een omgeving waarop je kunt testen. Veel organisaties kennen het concept van een ontwikkel-test-acceptatie-produktie (OTAP) straat. Ruwweg geldt dat elk blok uit de testkant van het V-model een omgeving is (OTA) en dan nog een productie-omgeving waar de eindgebruikers gebruik van maken. 


 

Problemen


Tijdens het testen loop je daarbij tegen de volgende problemen aan:


Het aanvragen en inrichten van de servers voor een testomgeving bij IT Operations kan in de praktijk dagen, weken of soms maanden duren. Het gevolg is dat veel projecten de eerste iteraties geen beschikking hebben over een test omgeving waar de testers aan de slag kunnen. Een oplossing is een Self Service Portal waarin projecten zelf nieuwe omgevingen kunnen aanmaken, waardoor binnen een dag een omgeving beschikbaar is. Een voorwaarde is dan wel dat het voor het team eenvoudig moet zijn een omgeving bij elkaar te klikken.


Bij het testen van de applicatie ben je op zoek naar de grenzen van de applicatie. Tijdens het uitvoeren van de testcases wordt er dus veel data, waaronder invalide data, gebruikt. Indien je hiertegen niets doet, dan heb je na verloop van tijd een database die niet meer betrouwbaar is. De oplossing is dat IT Operations (zoals de database beheerder of de OTAP beheerder) de omgeving naar een baseline kan terugzetten. Dit kan bv met een database back-up of een Virtual Machine snapshot. Echter je maakt je hiermee wel afhankelijk van andere afdelingen binnen een organisatie, die de flexibiliteit en de doorlooptijd van het testen ondermijnt.


Met functioneel testen wil je testen zo geïsoleerd mogelijk uitvoeren. Als er meerdere testers in het team aanwezig zijn werken de verschillende testers in dezelfde omgeving, waardoor je niet met zekerheid kan aangeven wat een bevinding heeft veroorzaakt. De oplossing is om elke tester een aparte omgeving te geven. In een bestaande OTA omgevingen is het duur om dit te realiseren.


In een regressie test doorloop je de een aantal test scripts van een applicatie om te toetsen of bestaande functionaliteit niet omvalt met het toevoegen van nieuwe features. Aangezien het handmatig doorlopen van een script tijdrovend is, maken ontwikkelteams de keuze om niet regelmatig deze test uit te voeren. Het gevolg is vaak dat dit uitgesteld wordt tot het einde van de iteratie, en dat vlak voor de oplevering van de applicatie de regressietest wordt uitgevoerd. Het bepalen wat de bevindingen, die uit deze test komen, heeft veroorzaakt is dan lastiger te bepalen dan wanneer je deze testen dagelijks zou uitvoeren. Ook is het lastiger om nog de juiste hoeveelheid tijd te claimen voor het oplossen van deze bevindingen. De oplossing is om het uitvoeren van de regressie test te automatiseren, maar welke omgeving ga je daar voor gebruiken?


Bij het oplossen van sommige bevindingen vindt een pingpong tussen de ontwikkelaar en de tester plaats, omdat het heel lastig blijkt om de bevinding te reproduceren. Dit leidt tot onnodig tijdverlies en frustratie. Dit pingpong kan worden opgelost door de tester in staat te stellen een inhoudelijk rijke bevinding op te leveren, waarin onder andere de IntelliTrace feature (zie artikel Tom de Koning in de september 2010 uitgave van het .NET Magazine) van Visual Studio 2010 gebruikt kan worden in combinatie met een snapshot van de omgeving ten tijde van het ontstaan van de bevinding. Het is echter bij een OTA omgeving vaak onmogelijk voor de tester een snapshot te maken van de test omgeving, omdat dat onder beheer valt van IT Operations. 


Al deze problemen zijn op te lossen met Lab Management. 


 

Introductie Visual Studio Lab Management


Visual Studio Lab Management 2010 biedt een geïntegreerd ontwikkel- en testplatform voor end-to-end virtueel lab management. Je kunt dit platform gebruiken voor het ontwikkelen, testen en runnen van je applicatie. Een virtuele omgeving is een verzameling van virtuele machines (VMs). Elke VM in een dergelijke virtuele omgeving vertegenwoordigt een rol die nodig is voor de te ontwikkelen applicatie, bijvoorbeeld de webserver- of de databaseserverrol. 


Het doel van Lab Management is ontwikkel- en testteams effectiever te kunnen laten samenwerken, het buildprocess te optimaliseren en de inspanningen voor het regressietesten te minimaliseren. Het helpt bij het automatiseren (en daarmee het reduceren van kosten) van het opzetten, afbreken en terugzetten naar een stabiele beginsituatie van een complexe virtuele testomgeving. Lab Management gebruikt System Center Virtual Machine Manager (SCVMM) technologie.


 

System Center Virtual Machine Manager


Aangezien Lab Management gebaseerd is op System Center Virtual Machine Manager (SCVMM), is een korte introductie hiervan op zijn plaats om de werking van Lab Management te begrijpen. Binnen virtualisatie kennen de meeste van ons wel het concept van een virtual machine in Hyper-V, Virtual PC, Virtual Box of VMWare. Virtual Machine, Host en Snapshot zijn elementen uit de Hyper-V wereld. SCVMM voegt hier Template, Host Group, Library Server en Library Share aan toe. SCVMM (Figuur 2) is een applicatie om deze virtuele machines te beheren.


SCVMM bestaat uit:


  • Hosts waarop virtual machines kunnen draaien

  • Virtual machines

  • Een library die gearchiveerde virtual machines of templates 
bevat.


Figuur 2: System Center Virtual Machine Manager.

Als je een nieuwe virtual machine maakt, dan moet er een machine zijn waarop de virtual machine draait. Deze machine heet de host en de aangemaakte virtual machine maakt dus gebruik van de resources (RAM, CPU, HDD) van deze host. Als je gereed bent met je acties op de virtual machine is het wenselijk de resources van de host vrij te geven. Dit kun je doen door de virtual machine te verwijderen. Als je deze voor later gebruik wilt bewaren, verplaats je de virtual machine naar de SCVMM Library. Het weer in gebruik nemen van de virtual machine kan door de Virtual machine uit de SCVMM Library te deployen naar een van de beschikbare hosts. Het gebruik van dit mechanisme zorgt ervoor dat je zo optimaal mogelijk gebruik maakt van de resources.


Een tweede mogelijkheid die je hebt als je de virtual machine wilt archiveren is dat je er een template van maakt. In dat geval voert SCVMM een sysprep uit op de virtual machine, zodat bij elke instantie van de template uniek wordt. Het verschil tussen een template een virtual machine in een Library is dat je bij het deployen van een template elke keer een unieke machine maakt waarbij de template in de Library achterblijft. Dit in tegenstelling tot een virtual machine waarbij deze naar een host wordt verplaatst en verdwijnt uit de Library.


 

Lab Management


Lab Management voegt aan de eerder genoemde concepten de volgende toe, namelijk Virtual Environment, Team Project Lab 
en Team Project Library. Voordat je Lab Management kunt gebruiken, moet het eerst worden geconfigureerd. De benodigde stappen staan in detail op MSDN beschreven, zie hiervoor http://msdn.microsoft.com/en-us/library/dd380687.aspx


Hierna moet je eerst virtual machines of templates uit de SCVMM Library importeren (Figuur 3).


Vervolgens kun je op basis van deze geïmporteerde virtual machines en templates een of meerdere omgevingen maken (Figuur 4). Bijvoorbeeld voor een traditionele ASP.NET omgeving, heb je een Database Server, een Web Server en een Client Desktop nodig. 


Figuur 4: Environments.

Voordat je start met het testen van je applicatie, start je eerst de Lab Management-omgeving die je wilt gebruiken voor het testen. Op deze omgeving deploy je de versie van de applicatie die je wilt gaan testen. Na het afronden van de testscripts kun je de omgeving weer afsluiten. 


 

Oplossingen


Eerder in het artikel heb ik aangegeven dat de problemen die een tester ondervindt met omgevingen op te lossen zijn met Lab Management:


  • Niet vroegtijdig een omgeving hebben:

    Bij het gebruik van dit mechanisme is een project team nu zelf in staat is om een eigen omgeving te maken op basis van een aantal Templates die de organisatie aanbiedt in SCVMM Library. De IT Operations afdeling heeft dus niet meer de taak om voor elk project team de omgevingen te installeren; zij hoeft er enkel voor te zorgen dat de Templates in de SCVMM Library up-to-date blijven en voldoen aan de standaarden binnen de organisatie.

  • Baseline van een omgeving:

    Een tester kan zelf vanuit Lab Management een snapshot maken van een omgeving. Op een later moment kan de tester de omgeving starten vanuit dat snapshot, zodat het elke keert de testen uitvoert vanaf hetzelfde startpunt.

  • Geïsoleerd testen:

    In Lab Management kun je een instantie van een omgeving maken op basis van een template. Je bent dus in staat meerdere instanties van een template te maken die naast elkaar draaien. De verschillende testers hebben daardoor een eigen identieke omgeving.

  • Regressietest:

    Een regressietest laat je bij voorkeur uitvoeren door Team Build die automatisch een aantal testen uitvoert. Bij het aanmaken van een nieuwe build is het mogelijk met Lab Management te integreren. Indien je hier voor kiest, start Team Build de gekozen Lab Management omgeving op en deployt de applicatie die je wilt testen naar deze omgeving. Vervolgens voert Team Build de regressietest uit op de Lab Management omgeving. Na het afronden van de testen gooit Team Build de omgeving weg.

  • Pingpong:

    Een tester kan in Lab Management een snapshot maken van de omgeving bij het vastleggen van een bevinding met een bug work item. Als de ontwikkelaar de bevinding wilt reproduceren en oplossen, dan kan hij/zij het snapshot dat aan de bug is toegevoegd openen. Hierdoor krijgt de ontwikkelaar de omgevingen te zien in dezelfde state als waarin de tester de bevinding heeft gevonden.

 

Conclusie


Lab Management is een heel mooi alternatief voor je vaste OTA omgevingen waar je de testen wilt uitvoeren. Het biedt je veel flexibiliteit in het opzetten van je omgevingen, de mogelijkheid om testen geïsoleerd uit te voeren, en waardevolle informatie aan de ontwikkelaar over te dragen. Dit artikel is de eerste in serie van artikelen waarin we in detail de mogelijkheden van Visual Studio Lab Management gaan verkennen. Wil je nu al weten hoe je Lab Management kunt installeren en configureren, ga dan naar http://msdn.microsoft.com/en-us/library/dd936084.aspx

 

Referenties

 

Over de auteur


Ewald Hofman, is Solution Developer bij Avanade. Hij is tevens MVP op het gebied van Visual Studio ALM. Hij blogt regelmatig over Team Foundation Server op http://www.ewaldhofman.nl.