Jak už jsme si řekli posledně, je testování aplikací spíše doménou vývojářů než IT profesionálů, ale přesto lze najít některé oblasti v průniku jejich zájmů.
Autor: Michael Juřek, Microsoft s.r.o.
V prvním díle jsme se podívali na výkonnostní testování aplikací, dnes se zaměříme na virtualizaci testovacích prostředí, čímž náš mini-seriál uzavřeme. Tvoří vlastně dva díly seriál?
Virtualizace je dnes velmi populárním a všudypřítomným termínem v IT světě, jemuž co do četnosti může konkurovat snad jedině slovo cloud. Tato pozornost je zcela jistě zasloužená, neboť virtualizace otevírá nové možnosti a radikálně zasahuje do spousty podoblastí IT. Testování aplikací je jednou z těch, které virtualizace mění od základů. Pro otestování nové verze aplikace nebo např. provedení upgrade na novou verzi se tradičně vytvářela virtuální prostředí ručně – což bylo mimořádně pracné a trvalo často několik dní. S použitím virtualizace lze tutéž úlohu automatizovat a zvládat ji v řádu minut. Navíc lze takto vytvořené prostředí klonovat a vytvořit tak celkem libovolné množství jeho instancí pro různé experimenty.
Virtualizované testování samozřejmě používá existující virtualizační technologie, v našem případě HyperV. Nad ní je technologie pro správu virtuálních prostředí, v našem případě System Center Virtual Machine Manager, který zvládá základní manipulace s virtuálními počítači, jako je přesun do knihovny, migrace na jiného hostitele anebo vytvoření šablony virtuálu. Stále se ovšem pohybujeme v území, kde je nezbytná velmi dobrá znalost všech zákoutí virtualizačních produktů. Lidé zabývající se testováním ale zpravidla nebývají experty v této oblasti. Proto do celého obrázku přibývá ještě další vrstva:
Touto vrstvou je Team Foundation Server, který přebírá vykonávání veškerých činností SCVMM. Správce infastruktury tedy připraví SCVMM, hostitele a případně šablony jednotlivých virtuálů a o běžné operace se nemusí starat. Tyto operace jsou vykonávány z nástroje Test Manager prostřednictvím TFS. Testující uživatelé tak nemusí mít vůbec žádné znalosti virtualizační platformy, neboť mají k dispozici nástroj, který je od ní dokonale odstiňuje:
Jak vidíte z obrázku, základním termínem, se kterým se tu operuje je tzv. testovací prostředí (environment) sestavené ze šablon jednotlivých virtuálů. Toto prostředí je tvořeno jedním nebo více počítači (např. databázový server, aplikační server, klient) a zachází se s ním jako s celkem. Operace jako nastartování, zastavení anebo třeba vytvoření snapshotu virtuálu se provádí vždy nad celým prostředím. Z prostředí lze též snadno vytvořit šablonu prostředí a ze šablony prostředí pak nové prostředí, čímž se fakticky dosáhne naklonování celého prostředí.
Z technického pohledu nejzajímavější jsou tři dodatečné schopnosti virtuálního prostředí, které pod názvem „capabilities“ vidíte v pravé části obrázku. První z nich je schopnost nazvaná Testing, která je zajištěna tzv. Test Agentem, což je buď služba systému anebo aplikace běžící na desktopu, podle toho, zda chcete testovat uživatelské rozhraní anebo nevizuální funkce systému. Ať tak či onak, jeho úkolem je spouštět vytvořené testy a shromažďovat jejich výsledky spolu s dalšími diagnostickými informacemi, jako jsou např. videozáznam z testování, události z Event Logu, systémové informace apod.
Druhá služba se nazývá workflow, což je ve skutečnosti dosti zavádějící název. Workflow je zde myšlen libovolně definovaný proces, jehož cílem je připravit celé testovací prostředí, správně je nakonfigurovat a nainstalovat do něj testovanou aplikaci. Celý proces je řízený zvenku (tzv. build controllerem). Uvnitř virtuálů běží speciální agent, který na příkaz controlleru spouští ve vhodné chvíli předem připravené skripty, typicky v PowerShellu. Tato vlastnost je klíčová pro přípravu virtuálních prostředí, která je díky ní zcela automatizována, a po jednorázové přípravě skriptů je možné vytvořit nové prostředí s nainstalovanou aplikací v řádu minut.
Třetí, pro IT profesionály možná nejzajímavější vlastností, je izolace sítě. Umožňuje vytvářet klony testovacího prostředí, aniž by docházelo ke kolizím jmen a IP adres. Vysvětlení začněme síťovou topologií, jak ji zobrazuje nástroj v SCVMM:
Vidíte zde dvě virtuální sítě s názvy Lab_GUID, které jsou zcela odděleny od všeho ostatního. Do každé sítě jsou připojeny dva počítače z levé strany obrázku. Tato virtuální síť se používá pro komunikaci mezi počítači. Vzhledem k uspořádání tedy nehrozí na těchto sítích konflikty jmen nebo adres s počítači v jiných prostředích. Všechny virtuální počítače jsou druhou virtuální síťovou kartou připojeny do veřejné sítě (VSLM Network Location), kde ovšem dostanou úplně jiné IP adresy a nepoužívají pro komunikaci na této síti svoje skutečné jméno, ale pouze zástupné jméno Lab_GUID. Počítače tedy mohou např. přistupovat na Internet anebo se k nim lze připojovat vzdálenou plochou. Veškeré nastavení síťové izolace provádí zcela automaticky další speciální agent běžící uvnitř virtuálů. Pro síťovou izolaci ale platí některá omezení, např. počítače v prostředích nemohou být připojeny k externí doméně (mohou mít vlastní doménový řadič uvnitř prostředí) a dále musí běžet na jednom hostiteli (o to se postará TFS automaticky).
Pokud vše dobře nastavíte, je celé kolečko vytvoření prostředí, jeho nakonfigurování, instalace aplikace a spuštění testů otázkou několika minut, maximálně desítek minut a je radost se na ně dívat. Nastavení však rozhodně není triviální a vyžaduje alespoň povrchní zvládnutí velké řady produktů. Zvídaví si mohou tuto funkci vyzkoušet pomocí časově limitované verze VS 2010 Ultimate, která je volně ke stažení. Pokud byste měli o toto téma hlubší zájem, neváhejte mne kontaktovat na adrese mjurek(zavináč)microsoft.com.
Články ze série Microsoft TechNet nevytváří redakce Živě.cz, ale partneři programu Microsoft TechNet. Jsou publikovány v rámci mediálního partnerství Živě.cz a společnosti Microsoft.