Vytváření kvalitních aplikací pomocí prostředí Visual Studio 2010

Pro podnikání v oblasti software mají rozhodující význam kritéria kvality. Již dlouho je známo, že pokud závady nejsou zachyceny včas, náklady s nimi spojené značně rostou. Například agilní komunita se dívá na “rapidní zhoršování” jako na důležitou výzvu k aktivitě, a proto za základní praktiky považuje průběžnou integraci a průběžné testování. Visual Studio 2010 nabízí sadu odvážných inovací týkajících se testování a kvality, které pomáhají softwarovým týmům dosáhnout mimořádných výsledků.

Na této stránce:


Graf Chaos report neuvádí žádné významné zvýšení úspěšnosti projektů

Obrázek 1: Graf Chaos report neuvádí žádné
významné zvýšení úspěšnosti projektů

Podle amerického Národního institutu standardů a technologie stojí nízká kvalita software ekonomiku Spojených států asi 59 miliard dolarů ročně (2002)1. Příčinou této ztráty je nízká produktivita a plýtvání zdroji. Studie uvádí, že zdokonalením infrastruktury testování by bylo možné ušetřit třetinu těchto nákladů. Obrázek 1 zachycuje graf Chaos Report (2009) společnosti Standish Group. Z grafu vyplývá, že množství projektů, které měly problémy, a projektů, které byly neúspěšné, v roce 2009 opět vzrostlo. Neexistuje samozřejmě jediné správné řešení. Ale náprava je možná, pokud budou organizace používat nástroje a procesy, které dávají největší šanci vyhnout se neúspěšnosti projektů. Ostatně, je pouze jediné měřítko kvality, na kterém opravdu záleží, a to zda je zákazník s produktem spokojen či nikoli. Jednoduše řečeno to znamená, že produkt dělá to, co si zákazník přeje (umožní mu větší výkonnost v každodenní práci), a že nemá závady, které by snižovaly jeho funkčnost. Prostředí Visual Studio 2010 je navrženo tak, aby poskytovalo vývojářským týmům nejlepší možné vyhlídky na vytvoření software vysoké kvality.


Uspokojení požadavků zákazníka

Získat zcela kompletní požadavky zákazníka je velmi obtížné, a to bez ohledu na nástroje, které používáte. Kořeny tohoto problému spočívají hlavně v tom, že zákazník často komunikuje nepředvídatelným způsobem. Ale pokud máte možnost sledovat požadavky zákazníka a jejich zpracování od požadavků k testům, od testů ke kódu, od kódu k chybám a od chyb k výsledkům testů, lze zajistit stabilitu a monitorovat i kvantitativně vyjádřit potřeby zákazníka. Takovýto kompletní scénář pro dohledání vztahů dovoluje určit, které požadavky mají nejvyšší prioritu, jak tým pokračuje v plnění požadavku (práce dokončená a práce zbývající) a rovněž určit povahu těchto požadavků. Má-li požadavek mnoho nedostatků, podle obecných pravidel pro kvalitu, nenaplňuje potřeby zákazníka, a tudíž jeho splnění není důležité. Přesně takovýto stupeň dohledatelnosti poskytuje server TFS. Data je možné získat ve formě předem připravených přehledů (out of the box reporting), které lze zcela přizpůsobit specifickým potřebám.

Přehled scénářů (user stories)

Obrázek 2: Přehled scénářů (user stories)

Přehled znázorněný na obrázku 2 vypadá na první pohled opravdu jednoduše, ale ve skutečnosti slučuje velké množství dat, jako je čas věnovaný různým požadavkům, testy ve vztahu k požadavkům, výsledky testování jednotlivých požadavků, nebo počet aktivních či vyřešených chyb pro jednotlivé požadavky. Není potřeba hádat z křišťálové koule, do jaké míry jste splnili požadavky zákazníka. Máte k dispozici přesnou odpověď.

3 kroky k dosažení kvality

Proces vytvoření kvalitní aplikace sestává z mnoha kroků, které lze rozdělit do třech klíčových oblastí: návrh, vývoj a testování.

Kvalita začíná návrhem...

Mnoho nástrojů zaměřených na architekturu je v dnešní době izolováno od vývoje, požadavků a od testovacích nástrojů. Z tohoto důvodu je velice obtížné navrženou architekturu systémů dodržet a zajistit, aby se na ni průběhu psaní kódu nezapomnělo, nebo aby nebyla ignorována. Vývojáři musí neustále hledat v různých dokumentech nebo používat další nástroje, což ne vždy dělají. Vedlejším efektem je to, že návrh neodpovídá kódu a na technické úrovni se ztratí možnost sledovat vztahy. Toto rovněž ovlivňuje údržbu již existujícího kódu. Pokud systému nerozumíme, je těžké jej udržovat. Visual Studio 2010 Ultimate obsahuje novou sadu architektonických nástrojů vytvořených na základě metodologie UML. Tato sada umožňuje, aby týmy navrhovaly řešení ve svém vývojovém prostředí. Dále propojuje návrhy s požadavky způsobem, který dovoluje snadné sledování vztahů i aktualizaci. Obrázek 3 zachycuje příklady UML diagramů Use case a Activity společně s novým architektonickým nástrojem, diagramem architektury (Layer), který přímo souvisí s kvalitou.

Diagramy Use case, Activity a Layer

Obrázek 3: Diagramy Use case, Activity a Layer

Diagram architektury, někdy také diagram vrstev (pod pojmem vrstva se rozumí cokoli, metoda, třída, jmenný prostor, assembly nebo náhodné seskupení) nejen definuje návrh architektury a komunikačních kanálů, ale také je může vynutit. Není-li přijatá architektura dodržena, lze podniknout odpovídající kroky a buďto změnit návrh, nebo kód.

Pokračuje vývojáři...

Visual Studio 2010 obsahuje mnoho nástrojů, které vývojáři potřebují k tomu, aby mohli vytvořit kód v souladu s potřebami zákazníka. Funkce, jako je analýza statického kódu (pro kód .NET a databázový kód), nabízí náhled na možné zdroje problémů ve výkonnosti, stabilitě nebo bezpečnosti předtím, než k takovýmto problémům doopravdy dojde. Pomocí metriky kódu vývojáři odhalí, kde jej jejich kód nejsložitější (a tedy hůře udržovatelný), a mohou jej změnit dříve, než se z něj stane špagetový kód. Vývojáři mohou ověřit, zda aplikace splňuje požadavky zákazníka na rozšiřitelnost, ať už jde o aplikace WPF nebo ASP.NET. Mají totiž možnost testovat kód pomocí komplexních testů výkonnosti. Na obrázku 4 je znázorněn běžící test zatížení. K testovaným charakteristikám všech zahrnutých systémů jsou uvedeny podrobné údaje a k dispozici je dostatek informací, aby bylo možné odhalit problémy s výkonností. Je možné rovněž porovnat různé běhy testů zatížení a zjistit, nakolik se změnily charakteristiky výkonnosti v průběhu času.

Běžící test zatížení

Obrázek 4: Běžící test zatížení

Pokud test zatížení odhalí ve výkonnosti určité problémy, je možné nahlédnout do podrobných přehledů a přesně určit, ve které části aplikace se problémový kód nachází. Obrázek 5 znázorňuje analýzu zatížení aplikace uživateli v průběhu testu výkonnosti. Na obrázku je vidět jak zatížení, tak i stránky, které byly provedeny, a všechny výjimky a chyby, ke kterým došlo.

Přehled výsledků testu zatížení

Obrázek 5: Přehled výsledků testu zatížení

Ve finálním produktu by neměly zůstat chyby. To vyžaduje, aby je mohli vývojáři při ladění snadno nalézt a opravit. Toto a mnohem více umožňuje funkce IntelliTrace™, poslední novinka společnosti Microsoft. Díky této funkci mohou vývojáři aplikaci spustit, zastavit ji v libovolném místě, a potom se mohou v rámci ladění pohybovat vpřed nebo zpět a v daném časovém okamžiku zjistit aktuální stav aplikace. Nástroj zaznamenává historii stavu zásobníku, takže vývojáři nemusí nastavovat body přerušení a doufat, že zvolili ty pravé. Dojde-li k výjimce, mohou se ihned přesunout do místa, kde k ní došlo, zjistit, proč k ní došlo, a opravit ji. Rovněž testeři, kteří spouští testy přeložené aplikace, mají možnost zaznamenat logy funkce IntelliTrace™. Takže pokud dojde k výjimce, má vývojář přístup ke všemu, co se stalo v průběhu testu. Proto mohou nyní vývojáři vyhledávat a opravovat chyby mnohem efektivněji, než v minulosti.

Vývojáři jsou odpovědni za to, že před odevzdáním kódu testerům, dokonce ještě před jeho zanešením do systému se správou verzí, provedou některé testy. Pomocí testů modulů zjistí, zda se kód v hlavních rysech chová tak, jak by měl. Nová funkce pro vyhodnocení dopadu změn a relevantních testů (Test Impact Analysis) umožňuje snížit počet testů, které je potřeba provést. Zároveň však dává velkou jistotu, že potřebné testy proběhnou. Toto využijí zejména ty týmy, které testy modulů spouštějí velmi často, jako jsou například týmy, které řídí vývoj testy. Při vyhodnocování dopadu změn a relevantních testů probíhá analýza změn kódu a hledají se spojitosti mezi těmito změnami a jednotlivými testy modulů. Tím se zjistí, kdy by změna kódu mohla mít vliv na výsledky dříve provedených testů. Vývojáři mohou kód namátkově zkontrolovat a teprve poté jej odeslat testerům nebo oddělení pro kontrolu kvality.

Visual Studio 2010 umožňuje vývojářům také automatizovat testování uživatelského rozhraní. Vývojáři mohou pro automatizované testování prvků uživatelského rozhraní aplikací používat testy uživatelského rozhraní vytvořeného pomocí kódu. Visual Studio 2010 automaticky generuje kód testů, ať již z testu spuštěného testerem, nebo z běhu zaznamenaného samotným vývojářem. Tyto testy uživatelského rozhraní je možné spouštět ručně, nebo je lze včlenit do sestavení. Tím se automatizuje testování zavlečených chyb uživatelského rozhraní. Visual Studio Lab Management poskytuje virtualizované testovací prostředí, díky kterému mohou vývojáři spouštět kód v čerstvě nainstalovaných prostředích. Tato lépe odpovídají podporovaným provozním prostředím. Vývojáři mohou tedy testovat a experimentovat v bezpečném, snadno reprodukovatelném prostředí.

Hlavním účelem serveru Team Foundation Server je automatizované sestavení. Ve verzi 2010 nabízí server nové prostředky, které nebývale usnadňují odhalení chyb v kódu. Chyby lze najít ještě dříve, než se vůbec dostanou do hlavní databáze zdrojového kódu. Server TFS 2010 je implementován na bázi komponenty Windows Workflow 4.0 a poskytuje mocné nástroje pro pracovní postupy. Možnosti využití těchto nástrojů jsou tak široké, jak velká je vaše představivost. Jednou z průkopnických funkcí, kvůli které se TFS používá, je podmíněné zanášení změn do databáze zdrojového kódu. Jde o další zdokonalení průběžné integrace. Pokud dojde k havárii sestavení, je v případě průběžné integrace již příliš pozdě. Kód zanešený pomocí správy verzí je již poškozen a tým si musí udělat čas na jeho opravu. Podmíněné zanášení změn provede sestavení a spustí všechny požadované testy ještě předtím, než je kód zanešen do správy verzí. Proto pokud dojde k havárii sestavení, nebo pokud test proběhne neúspěšně, kód vůbec nebude zanešen do správy verzí. Zatímco bude vývojář, který kód napsal, chybu opravovat, může zbytek týmu nerušeně pokračovat v práci. Pro realizaci takovéto funkčnosti využívá podmíněné zanášení změn prostředek, který je pro TFS charakteristický, a tím je sada změn v šuplíku. Proběhne-li podmíněné zanešení změn neúspěšně, může vývojář požádat jiné vývojáře, aby mu pomohli kód opravit. To vše se děje, aniž by kdy byl chybný kód zanešen do databáze.

Je ověřena testery...

Testeři až dosud nebyli členy vývojových týmů. Testování představovalo činnost, která se odehrávala až po dokončení vývoje. Teprve v poslední době si organizace uvědomují, že testeři jsou integrální součástí vývojových týmů. Důvodem jsou konkrétní čísla zmíněná v úvodu tohoto materiálu. Visual Studio 2010 plně zapojuje testery do všech projektů. Nabízí nástroj Test Case Management a profesionální nástroj pro správu a spouštění testů, Microsoft Test Manager (MTM), který je znázorněn na obrázku 6.

Microsoft Test Manager

Obrázek 6: Microsoft Test Manager

Tým pro kontrolu kvality může na začátku projektu přiřadit přímo k požadavkům jednotlivé testy. Vývojáři tedy vědí, jaké testy budou spuštěny. Později kód otestují testeři, kteří ověří, zda odpovídá kritériím zákazníka. Pro zajištění kvality aplikace existuje mnoho typů testů. Asi 70% všech testů, které dnes organizace provádějí, tvoří ruční a obecné testy. K dispozici jsou ovšem i jiné typy testů. Pohybují se v rozmezí od standardních testů modulů a testů výkonnosti až po a automatizované testy a testy zatížení. Testeři mohou v průběhu testování získat detailní statistická data a pořídit videozáznamy běhu testů. Čili pokud dojde k vytvoření záznamu o chybě, bude záznam akční a vývojář opravdu bude moci závadu odstranit. Obrázek 7 představuje sekci reprodukovatelnost testu pro chybu zaznamenanou prostřednictvím MTM. Všechny kroky jsou detailně popsány, obsahují informaci o tom, zda proběhly úspěšně nebo zda detekovaly chybu, a obsahují rovněž přílohy a poznámky. Indexování pomocí času videozáznamu dovoluje, aby se vývojář podíval přímo na to místo videa, kde došlo k chybě. Je zde také log funkce IntelliTrace™ testu vedoucího k chybě, který poskytuje detailní informace pro analýzu chyby.

Kroky pro reprodukci chyby

Obrázek 7: Kroky pro reprodukci chyby

Vyhodnocení dopadu změn a relevantních testů je nová funkce, která poskytuje testerům důležité informace. Na základě těchto informací mohou vybrat ty testy, které jsou vzhledem ke změnám, jež v kódu provedl vývojář, nejdůležitější. Pokud dojde ke změně již otestovaného kódu, testeři budou upozorněni a mohou tyto testy znova spustit. Tím se sníží počet zavlečených chyb, nebo se tyto chyby zcela odstraní. Lab Management nabízí ještě dokonalejší nástroje ve formě virtualizace testovací infrastruktury. Pokud se objeví závada, je možné pořídit snímek virtuálního prostředí. ´Vývojář pomocí tohoto snímku snadno reprodukuje chybu v tom prostředí, ve kterém se vyskytla.

... a je čitelná pro vedení

Visual Studio 2010 a TFS 2010 podporují kvalitu aplikace ve všech směrech, ale vedení potřebuje znát stav projektu. Musí totiž informovat zákazníka o vývoji a o kvalitě software. Pokud se o problémech doví až na poslední chvíli, jen těžko může změnit kurz. TFS poskytuje detailní přehledy na bázi služby SQL Server Analysis Services. Zkombinuje-li se tato služba se serverem Microsoft Office SharePoint Server a se službou Excel Services, jsou k dispozici vždy přesné a aktuální informace. Přitom jde o opravdové informace, nikoli o pouhá data. Na obrázku 8 je zobrazena jedna z nástěnek informací o kvalitě.

Metriky kvality

Obrázek 8: Metriky kvality

Graf Test Plan Progress znázorňuje, kolik testů je k dispozici, kolik jich bylo spuštěno a kolik jich proběhlo úspěšně. Graf Build Status zachycuje počet automatizovaných sestavení v průběhu času a jejich úspěšnost. Kombinuje úspěšnost či neúspěšnost sestavení s výsledky automatizovaných testů, které jsou součástí sestavení. Poskytuje tedy denní snímek kvality aplikace. Grafy Bug Progress a Bug Reactivation podrobně informují o tom, jaký je stav všech záznamů o chybách aplikace, a o tom, jaké množství práce je nutné udělat znovu z důvodu nesprávných oprav chyb.

Díky těmto informacím může vedení včas pozměnit kurz. Jestliže bylo vytvořeno více záznamů o chybách, mohou podniknout kroky ke snížení jejich počtu. Jestliže se nespouští testy, mohou zajistit více testerů. Zlepší se tedy vyhlídky, že zákazníkovi bude k jeho spokojenosti včas dodán kvalitní produkt.

Na kvalitě záleží

Všechny vývojové týmy přistupují k projektům s jediným cílem, vytvořit kvalitní aplikaci. Avšak pokud nemají k dispozici vhodné podpůrné nástroje, dosahují tohoto cíle jen velmi obtížně. Visual Studio 2010 poskytuje ideální podpůrné nástroje pro zabezpečení nejvyšší kvality aplikací, ať už jde o návrh architektury, vývoj, testování, nebo o údržbu. Tyto nástroje byly pro vás připravovány tak, abyste mohli lépe vyhovět požadavkům svých zákazníků, a to bez ohledu na roli, kterou ve vývojovém procesu zastáváte.

Co říkají jiní

ICONICS

ICONICS

Geograficky rozprostřená softwarová firma očekává od zavedení nového řešení pro podporu vývoje zdvojnásobení produktivity

Firma ICONICS, držitel certifikátu Gold Certified Partner firmy Microsoft, dodává organizacím ve více než 60 zemích světa software pro průmyslovou automatizaci a vizualizaci. Zaměstnanci vývojových týmů společnosti působí ve třech různých zemích a tato geografická rozprostřenost přináší určité problémy v oblasti spolupráce. Vývojářům chyběla integrovaná sada nástrojů, která by ulehčovala řízení projektu, podporovala přístup k datům, zrychlila vývoj a automatizovala proces testování. V roce 2009 firma ICONICS rozšířila své vývojové prostředí nasazením nástrojů Visual Studio 2010 Ultimate, Visual Studio Team Foundation Server 2010 a Visual Studio Lab Management 2010. Plně integrované řešení dává geograficky rozprostřeným týmům jednotné nástroje pro zjednodušení řízení projektů a zefektivnění procesů životního cyklu produktu. V důsledku toho může ICONICS snížit náklady a zvýšit kvalitu produktů. Očekává, že zvýší produktivitu o 100 procent.

„Nové testovací možnosti v prostředí Visual Studio 2010 jsou revoluční. Očekávám, že až poskytneme tyto nástroje více týmům, naše produktivita se zdvojnásobí. Automatizované testy můžeme spouštět v noci, aniž by byl kdokoli přítomen. Rovněž předpokládáme, že nástroje jako IntelliTrace v budoucnu významně zkrátí čas potřebný pro ladění aplikací.“
Chris Elsbree, vedoucí softwarový architekt, ICONICS

„Všechny výhody používání prostředí Visual Studio 2010 spočívají ve výkonnosti a v kvalitě. Prostředky, jako je sledování hierarchických vztahů pracovních položek, vizualizace větví nebo IntelliTrace, společně s tím, že jsme schopni sestavit starší verze pomocí nového systému, přispívají k celkovému zlepšení naší výkonnosti. Ve svém důsledku to vede k vyšší kvalitě produktů.„
Russ Agrusa, prezident a výkonný ředitel, ICONICS


1 National Institute of Standards and Technology. (2002). Planning Report 02-3, The Economic Impacts of Inadequate Infrastructure for Software Testing. U.S. Department of Commerce.
2 Standish Group, (2009). Chaos Report.