Ohjelmistojen testaaminen on eräs hyödyllisimmistä käyttökohteista virtuaalikoneille. Vaikka virtuaalikoneiden käsittely on huomattavat fyysisen raudan kanssa pelaamista helpompaa, vaatii virtuaalikoneiden kanssa toimiminen silti manuaalista työtä.
Jos käytössä on Windows Server 2008:n Hyper-V -virtualisointi, voidaan virtuaalikoneiden toimintoja automatisoida kätevästi PowerShell-ympäristöstä. Tämä vaatii palvelimelle myös System Center Virtual Machine Managerin (SCVMM) asennusta, mutta vähänkään laajemmissa ympäristöissä System Center on todennäköisesti jo muutenkin käytössä.
Testasimme viimeisellä bootcampillä Lehmonkärjessä lokakuussa, miten PowerShell-skriptein voisi tehostaa ja automatisoida ohjelmistotestausta. Samalle palvelimelle oli asennettu Hyper-V sekä Virtual Machine Manager. PowerShell-komentoja voidaan taas ajaa yksinkertaisimmin siten, että valitaan Start-valikosta Virtual Machine Managerin oma PowerShell-pikakuvake, jolloin tarvittavat komennot ovat heti käytössä. (Tavallisesta PowerShell-kehotteesta komentoja ei löydy ennen kuin VMM:n snapin-laajennuksen rekisteröi itse käsin.)
Tyypillinen tilanne ohjelmistotestauksessa on, että tietty virtuaalikone halutaan palauttaa perustilaan, sitten asentaa ko. virtuaalikoneeseen testattava ohjelmisto, ajaa testit, ja lopuksi kerätä tulokset. Tässä skripti, jolla MyApplication-niminen sovellus voitaisiin testata:
$VM = Get-VM -VMMServer hvsrv02 -Name "Windows XP Pro"
$restore_to_checkpoint = Get-VMCheckpoint -vm $vm | where { $_.Name -eq "Testing Base" }
Restore-VMCheckpoint -VMCheckpoint $restore_to_checkpoint
copy C:\ApplicationCode\MyApplication\Setup.msi \\10.11.12.143\ApplicationTest
& 'C:\Program Files (x86)\psexec.exe' \\10.11.12.143 msiexec /i /passive C:\ApplicationTest\Setup.msi
& 'C:\Program Files (x86)\psexec.exe' \\10.11.12.143 C:\ApplicationTest\MyApplication.exe -aaa123 -bbb234
copy \\10.11.12.143\ApplicationTest\Run.log C:\Users\TeppoTestaaja\Desktop\Run.log
Skriptissä haetaan ensin Get-VM -komennolla palvelimelta ”hvsrv02” virtuaalikonetta, jonka nimi on ”Windows XP Pro”. Tämän jälkeen käytetään Get-VMCheckpoint -komentoa palauttamaan kaikki kyseisen virtuaalikoneen tilannekuvat (VMM:n termein checkpoint, yleisesti snapshot), ja etsitään sitten where-komennolla tilannekuvaa nimeltä ”Testing Base”.
Kun haluttu tilannekuva on löytynyt, palautetaan virtuaalikone tämän tilannekuvan mukaiseen tilaan Restore-VMCheckpoint -komennolla. Tyypillisesti tällainen perustila tarkoittaa käyttöjärjestelmän puhdasta tilaa ennen testattavan sovelluksen asennusta.
Seuraavat rivit ovatkin sitten testattavan ohjelman asennusta. Olettaen että virtuaalikone löytyy IP-osoitteesta 10.11.12.143, kopioidaan sovelluksen MSI-paketti sopivaan verkkojakoon, ja sitten ajetaan SysInternalsin PSExec-apuohjemalla ensin läpi unattended-asennus, ja sitten itse sovellus. Olettaen, että sovellus suorituksensa aikana kirjoittaa lokitiedostoon Run.log, otetaan tämä loki lopuksi talteen takaisin vaikkapa testaajan työpöydälle.
Netistä löytyy varsin huonosti dokumentaatiota näistä komennoista, mutta PowerShellin help-komennolla kustakin komennosta saa hyvin lisätietoja. Lisäksi saatavilla on System Center Virtual Machine Manager Scripting Guide.
Ei siis muuta kun testausta automatisoimaan!