Michael Juřek Software Architect Microsoft s.r.o. Testování aplikací Michael Juřek Software Architect Microsoft s.r.o.
Agenda Proč testovat aplikace? Funkční testování Zátěžové testování
Stokrát více... Zdroj: Ron Patton, Software Testing, SAMS, 2005
Proč funkční testování? Funguje aplikace podle požadavků? Počítám se všemi alternativami? Fungují nové věci dobře? Nepřestaly kvůli novým věcem fungovat staré věci?
Proč zátěžové testování? Je moje aplikace dostatečně rychlá? Zvládne moje aplikace dostatečný počet uživatelů? Co když bude něco špatně – zvládne to má aplikace? Vydrží moje aplikace pod zátěží dostatečně dlouho?
Agenda Proč testovat aplikace? Funkční testování Zátěžové testování
Definici testování tvoří… Testovací případy (test case) Mají vazbu na požadavky (requirement, user story) Statické nebo dynamické množiny testovacích případů (test suite) Testované konfigurace Např. Windows XP US, Windows 7 CZ Testovacích plány Konfigurace sběru dat a dalších věcí Jeden nebo více testovacích běhů (test run) Běh tvoří sada testovacích případů, testovací konfigurace a nastavení Spouštění testů z testovacího plánu Sledování průběhu testů a monitorování chyb
Vlastní spuštění testu Vykonává testovací případy Sbírá informace ze systému Diagnostika, konfigurace, protokol událostí, analýza dopadu Volitelně zachycuje videozáznam a snímky obrazovky Sbírá informace od testera Výsledky kroků, uživatelské akce, komentáře Formulář pro zadání chyby včetně kontextu Při opakovaném spuštění je možné automaticky vykonat kroky vykonané při prvním spuštění („fast forward“)
Sledování a vyhodnocení testů Průběh testování Veškerá data ukládána v datovém skladu Připravené reporty anebo vlastní analýzy Dokumentace chyb Čím více informací o chybě, tím lepší kontext Čím lepší kontext, tím větší šance na zjištění příčiny Vytvořit dostatečné informace ručně je pracné Automatický sběr dat řeší tento problém
Funkční testování aplikace demo Funkční testování aplikace
Virtualizace testovacího prostředí Aneb upoutávka na moji zítřejší prezentaci 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í
Agenda Proč testovat aplikace? Funkční testování Zátěžové testování
Zátěžové testování Mnohonásobné paralelní provádění: unit testů – testují cokoliv, co je vývojář schopen testovat web testů – testují web stránky Sběr hodnot přednastavených výkonových čítačů Porovnání hodnot s nastavenými mezními hodnotami Možnost nastavení mixu scénářů, prohlížečů, kvality síťového spojení Flexibilní nastavení zátěže: Konstantní Postupné zvyšování Zvyšování až do splnění nějakého cíle
Do 250 současných uživatelů VS Ultimate
Pro tisíce uživatelů… VS Ultimate Test Controller Test Agent
Zátěž – unit testy Lze testovat cokoliv, co je vývojář schopen zavolat z kódu: Výkonnost databáze Rychlost výpočtů Rychlost čtení z diskového pole …
Zátěž – web testy Nahraná posloupnost webových stránek, tj. HTTP komunikace prohlížeč – web server Možnosti: Validace výsledků Extrakce hodnot pro další použití Veškerá HTTP komunikace (web služby, AJAX apod.) Variace zádavaných hodnot (data-driven test) Simulace šířky pásma, latence, ztráty paketů Absolutní rozšiřitelnost průběhu testu
Zátěžové testování aplikace demo Zátěžové testování aplikace
Zdroje a jiné Zkušební verze Visual Studia Krátká instruktážní videa http://www.microsoft.com/visualstudio/en-us/download Krátká instruktážní videa http://www.mstv.cz Pozvání na zítřek: Testujeme aplikace ve ve virtualizovaném prostředí, 11:20 – 12:20
Závěrem Testování není zadarmo… … ale problémy, které dokáže eliminovat by stály mnohem víc Snižuje rizika Posiluje důvěru a právní jistoty dodavatele i odběratele Kontakt - mjurek@microsoft.com