Virtualizace testovacích prostředí (aka Lab Management) Michael Juřek Software Architect Microsoft s.r.o.
demo Co bych později nestihnul…
Proč virtualizované testování? Architektura a základní pojmy Příprava, vybavení a vytvoření Základní operace s prostředím Služby prostředí Agenda
Složitá konfigurace zahrnující více počítačů, vytvoření prostředí je nákladné Řada kombinací, kterou je třeba otestovat – Operační systémy – Jazykové verze – Internetové prohlížeče Výrazné procento chyb nelze reprodukovat Agilní metodiky si žádají rychlé výsledky Nízký stupeň využití testovacího HW Některé bolesti testování
… neexistovaly nereprodukovatelné chyby … nebyly bariéry mezi vývojáři a testery … vytvoření realistického testovacího prostředí by místo týdnů trvalo minuty (např. jako součást buildu) Jak by to bylo hezké, kdyby…
Tradiční postup testování Build Nasazení aplikace Spuštění testů
Virtualizované testování Build Vytvoření VM Nasazení aplikace Snapshot VM Spuštění testů
Sdílení kontextu chyby mezi vývojářem a testerem – Pomocí snapshotu virtuálního stroje Výrazné snížení času a pracnosti přípravy testovacího prostředí – Automatické klonování – Samoobslužné vytváření bez nutnosti znalosti virtualizačních produktů Paralelní běh více instancí testovacího prostředí Možnost komplexních konfigurací – Distribuované systémy – Network Isolation – automatická izolace interních virtuálních sítí brání konfliktům IP adres Výhody virtualizovaného testování
Proč virtualizované testování? Architektura a základní pojmy Příprava, vybavení a vytvoření Základní operace s prostředím Služby prostředí Agenda
Team Foundation Server (TFS) Lab ManagementTest Management Build management Work Item Tracking Source Control Hyper-V Hosts Virtual Machine1 Virtual Machine2 Virtual Machinen Library Shares Library Share1 Library Share2 Library Sharen System Center Virtual Machine Manager (SCVMM)
SCVMM server – Spravuje hostitele a knihovní servery – Obsluhuje konfigurační databázi (MS SQL) Library Server (knihovní server) – Uložené referenční virtuály, ISO image instalačních DVD apod. – Pro většinu operací se z něj pouze čte Host (hostitel) – Provozuje virtuály (HyperV) – 1 nebo více hostitelů tvoří Host Group Role v SCVMM
Centrální správa hostitelů a virtuálů – Všechny operace nabízené HyperV Nad rámec funkčnosti HyperV – Přesun virtuálů mezi hostiteli – Klonování virtuálů – Uložení virtuálu do knihovny – Vytvoření virtuálu z částí uložených v knihovně – Monitorování HW prostředků hostitele Možnosti SCVMM
demo Představení SCVMM
Skládá se ze skupiny virtuálních počítačů z nichž každý má nějakou roli (např. webový server, databázový server, klient apod.) – V triviálním případě jediný virtuální počítač Skupina je spravována jako celek: – Spuštění/zastavení – Vytvoření/naklonování/vymazání – Vytvoření/zrušení/aplikování snapshotu Laboratorní prostředí
Testing – Spouštění testů UI během automatického buildu anebo manuálně z Test Manageru Workflow – Spouštění skriptů uvnitř virtuálního prostředí během automatického buildu Network Isolation – Nastavení síťových adaptérů a virtuálních sítí pro zamezení konfliktům jmen a IP adres Schopnosti prostředí (capabilities)
Šablona počítače – Odkaz na virtuál uložený v knihovně SCVMM – Možnosti nastavení: Množství operační paměti Role, kterou typicky zastává Profil OS, pokud je proveden SYSPREP (klíč, jméno, heslo apod.) Šablona prostředí – Sada šablon počítačů s přidělenými rolemi – Možnost přepsání parametrů počítačů – Definice schopností virtuálního prostředí Šablony v Lab Managementu
demo Nastavení LM v TFS Laboratorní prostředí Práce se šablonami
Proč virtualizované testování? Architektura a základní pojmy Příprava, vybavení a vytvoření Základní operace s prostředím Služby prostředí Agenda
Hostitel – RAM, CPU a disková propustnost (čtení i zápis) pro součet virtuálů a vlastní potřebu – Příklad - můj demo stroj s 10 virtuály: 1 quad-core CPU, 16 GB RAM, 4x SATA disk (RAID 10) Cena v květnu 2009 cca Kč Library Server – Např. NAS s RAID5 (výrazná převaha čtení) Síť – Mezi hostitelem a knihovnou by měla být 1 Gbps Hardware
Operační systém a aktualizace Další potřebný software ve stavu před instalací aplikace (např. SQL server) Nainstalovaní, nenakonfigurovaní agenti – Network Isolation – vyžaduje Lab Agent – Workflow – vyžaduje Lab Agent a Build Service – Test – vyžaduje Lab Agent a Test Agent Volitelně možno uvést do předinstalovaného stavu (SYSPREP) Software virtuálů
Možné varianty: 1.Externí doména – není možné používat Network Isolation, nelze mít více instancí 2.Interní doména – jeden z počítačů prostředí funguje jako Domain Controller 3.Bez domény – režim „workgroup“ Servisní účet v externí doméně: – Pro možnosti 2. a 3. je používán virtuály pro komunikaci s okolím – Není nutné vytvářet duplikované lokální účty – Nastavení na úrovni Team Project Collection Laboratorní prostředí a doména
Z fyzických počítačů s Test Agenty (New physical environment) – Omezené možnosti, pouze pro speciální případy (HW testování apod.) Z existujících virtuálů nasazených na hostiteli (Compose) Z definovaných šablon počítačů, jejich nastavením a naklonováním (New virtual environment) Naklonováním šablony prostředí (Deploy) Způsoby vytvoření prostředí
Úskalí virtuálů
Proč virtualizované testování? Architektura a základní pojmy Příprava, vybavení a vytvoření Základní operace s prostředím Služby prostředí Agenda
Stejné jako při správě přes HyperV, ale pro celé prostředí (více počítačů) najednou: – Spuštění (Start) – Pozastavení (Pause) – zůstávají v paměti – „Čisté“ zastavení (Shut down) – „Násilné“ zastavení (Power off) Speciální operace pro Lab Management: – Připojení se k prostředí nebo jednotlivým počítačům – Oprava schopností prostředí – Označení „In Use“ spojené s komentářem Operace nad seznamem prostředí
Všechny operace, které lze provést nad seznamem prostředí Interakce s prostředím – Ctrl-Alt-Del, Full Screen Systémové informace o virtuálu Manipulace se snapshoty: – Vytvoření (Create), obnovení (Restore), přejmenování (Rename), vymazání (Delete) – Sdílení (Share) Vytvoří soubor.lvr s definicí prostředí a snapshotu Soubor lze sdílet, jeho otevřením se lze připojit k příslušnému prostředí a snapshotu Operace nad připojeným prostředím
demo Základní operace s prostředím
Proč virtualizované testování? Architektura a základní pojmy Příprava, vybavení a vytvoření Základní operace s prostředím Služby prostředí Agenda
Interní virtuální síť pro každé prostředí MAC adresa, IP adresa i jméno virtuálního počítače mohou být ve více kopiích stejné Virtuály jsou též připojeny na externí síť pomocí unikátní IP adresy a jména Jeden z počítačů může být domain controller Není třeba konfigurovat, vše nastaví Lab Agent Network Isolation IISDB Copy 1 IISDB Copy 2 Internal network Lab network
demo Network Isolation
Workflow Umožňuje spouštět libovolný skript uvnitř virtuálu s právy služby Build Service Typicky užíváno k nasazení nové verze aplikace do virtuálního prostředí (fantazii se ale meze nekladou) Komponenty: – Build Agent (uvnitř virtuálu) – provádí přidělené úlohy – Lab Agent (uvnitř virtuálu) – konfiguruje Build Agenta – Build Controller (vně virtuálu) – spouští workflow a úkoluje Build Agenty
Umožňuje spouštět automatizované testy UI uvnitř virtuálu a shromažďovat jejich výsledky – V rámci build workflow – V rámci testování z Test Manageru Komponenty: – Test Agent (uvnitř virtuálu) – spouští testy, sbírá výsledky a doprovodná data – Lab Agent (uvnitř virtuálu) – konfiguruje Test Agenta – Test Controller (vně virtuálu) – řídí a úkoluje Test Agenty Testing
demo Workflow, Testing
Definice testovacích případů s vazbou na požadavky Vytváření testovacích plánů Spouštění testů se sběrem dat o kontextu a s možností přehrání interakce při dalším spuštění („fast forward“) Monitorování průběhu testování Automatizované testování uživatelského rozhraní Co VS 2010 také umí… … ale nebylo to obsahem dnešní prezentace
Závěrem Správa testovacích prostředí je výborně integrována do Visual Studia 2010 Virtualizace testovacího prostředí dramaticky snižuje pracnost přípravy prostředí a zlepšuje efektivitu využití HW prostředků. Snapshot virtuálního prostředí je nejvyšší známou formou dokumentace chyby. Základní zdroj informací: – Chcete pomoci při implementaci? –