Odstraňování chyb pomocí prostředí Visual Studio 2010

Odstraňování chyb v kódu zabere obrovské množství času, vždyť i jednoduché problémy chtějí svůj čas. Nový ladicí nástroj v prostředí Visual Studio 2010 Ultimate zajišťuje úspěšné výsledky pro všechny relace ladění. Co víc, vývojáři mohou udělat práci v mnohem kratším čase, než byl až dosud potřeba. Velmi rychle odstraní chyby, které jsou těžko zachytitelné, nereprodukovatelné nebo občasné, a tím ušetří čas i peníze a přispějí ke spokojenosti zákazníka.

Na této stránce:


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 (o tomto blíže v materiálu Vytváření kvalitních aplikací pomocí prostředí Visual Studo 2010), které pomáhají softwarovým týmům dosáhnout mimořádných výsledků.

Klíčovým tématem prostředí Visual Studio 2010 je myšlenka „již žádné nereprodukovatelné chyby”. Snahou je zajistit, aby bylo možné reprodukovat všechny nalezené chyby. Proč jsou nereprodukovatelné chyby takovým problémem? Protože oprava takovýchto chyb stojí čas a peníze. Anebo v horším případě prostě zůstanou neopraveny, protože je vývojář nedokáže v řízeném prostředí znovu vytvořit. Kořeny většiny těchto problémů spočívají ve způsobu hlášení chyb. Někdy se například vývojář doví o chybě telefonicky a dostane jen nejasné informace o tom, co uživatel dělal. Jindy se chyba objeví pouze v jednom počítači, nikoli v jiném, a jde tedy o onen známý syndrom „na mém počítači to funguje“. Uvedením prostředí Visual Studio 2010 udělala firma Microsoft obrovský pokrok směrem k úplnému odstranění tohoto problému.

Akční záznam chyby

Jak tento problém vyřešit? Existuje více přístupů. Jedním z nich je zajistit, aby všechny chyby zaznamenané do systému byly reprodukovatelné, a to jakýmkoli způsobem. Vývojářům je potřeba nějakým způsobem doručit akční popis chyby, čili přesnou informaci, na jejímž podkladě mohou jednat. Mlhavé představy o příčině chyby nestačí. Tato vize se stala realitou uvedením nástroje Microsoft Test Manager sady Microsoft Visual Studio Test Professional 2010 (je k dispozici rovněž v prostředí Visual Studio 2010 Ultimate). Testeři mají možnost zaznamenat videozáznam spouštěného testu, a pokud test skončí neúspěšně, vývojář podle něj přesně zjistí, co vedlo k chybě a co uživatel právě dělal. Videozáznam lze pořídit jak u ručních testů spouštěných pomocí nástroje Microsoft Test Runner, tak i spouštěním automatizovaných testů či testů funkčnosti. Tyto informace mají pro opravu chyb zcela zásadní význam a lze je pořídit prostřednictvím datových kolektorů.

Datové kolektory umožňují testovací infrastruktuře získat z testovaného systému libovolná data, která vývojáři potřebují. Datových kolektorů je několik, patří k nim Video Recorder nebo Test Impact Analysis a rovněž komplexnější nástroje, jako jsou kolektory System Information nebo IntelliTrace™. Tyto vestavěné nástroje jsou schopny dodat data, ke kterým vývojář v současnosti nemá přístup. Lze je také dále rozšířit. Jednotlivci či týmy mohou vytvořit vlastní kolektory, které budou získávat další data. Možnosti rozšíření jsou neomezené a kolektory mohou shromáždit jakékoli údaje, které jsou potřeba pro pochopení příčin selhání. Používání datových kolektorů není omezeno pouze na nástroj Test Manager. Lze je uplatnit také v testech spouštěných z prostředí Visual Studio 2010, v dlouhodobě běžících testech výkonnosti nebo v testech spouštěných pomocí nástroje Team Build.

Dohledání chyby

Jakmile vývojář pochopí, co se děje, musí nalézt konkrétní místo v kódu, které je potřeba opravit, a musí problém odstranit. Ladění kódu je náročné, ale může být ještě těžší, pokud se jedná o zděděný kód (legacy), se kterým vývojář není seznámen. Proto je ladění rovněž časově náročné. Příliš často se stává, že ohlášené chyby vývojář nemůže zopakovat. Chyby tedy zůstanou neopraveny, až dokud k nim nedochází tak často, že je možné je dohledat. Funkce IntelliTrace™ poskytuje vývojářům nový nástroj, který jim umožňuje relaci „přehrát“. Relací může být předchozí relace ladění nebo výsledek testů kódu spuštěných testerem. To znamená, že vývojář může cestovat do minulosti a podívat se, jak se aplikace chovala v libovolném bodě relace. Může dokonce rozeznat detaily selhání, aniž by měl přístup ke zdroji.

Nárůst výkonnosti vývojářů je obrovský. Chtějí-li chybu zopakovat, není nutné, aby aplikaci mnohokrát spouštěli. Místo toho jen přehrají relaci, ve které k chybě došlo. Mohou dokonce spustit novou instanci aplikace, k běžící aplikaci připojit log funkce IntelliTrace™, tento projít a odladit zaznamenanou relaci. Na obrázku 1 je zobrazena souhrnná stránka logu funkce IntelliTrace™. Dává představu o množství informací, které funkce dokáže shromáždit a předat vývojáři.

Log funkce IntelliTrace™ nabídne všechna vlákna, která běžela, a vývojář si mezi nimi může vybrat. Jestliže byla chyba hlášena z relace ručního testování, nemusí vývojář procházet vše. Stačí, když se podívá na tu sekci kódu, která byla spuštěna. Funkce IntelliTrace™ redukuje nejenom množství času potřebné k dohledání chyb, ale rovněž frustraci, která je s tím spojena.

Log funkce IntelliTrace™

Obrázek 1: Log funkce IntelliTrace™


Oprava chyby

Funkce IntelliTrace™ v prostředí Visual Studio 2010 Ultimate poskytuje rychlé a obsažné informace a urychluje spolupráci vývojářů a testerů na závadách. Vývojářům na volné noze se dokonce může zdát, že získali svého vlastního nadšeného testera. Na obrázku 2 je zachycena relace ladění s funkcí IntelliTrace™.

Relace ladění s funkcí IntelliTrace™

Obrázek 2: Relace ladění s funkcí IntelliTrace™

Vývojáři mají možnost vidět vše, co se stalo v průběhu relací testování a ladění. To znamená, že není potřeba nastavovat mnoho bodů přerušení, donekonečna tisknout klávesu F5 (Run), zkoumat data po přerušení a posouvat se na následující bod přerušení. Tento proces byl obzvlášť bolestivý, když vývojář propásl místo v kódu, kde se potřeboval zastavit. Musel totiž vše začít znova.

Objem informací, které jsou k dispozici, má jeden zajímavý postranní efekt. Nabízí možnost objevit chyby, které by jinak nebyly objeveny. Na obrázku 2 je zachycena situace, kdy jsou v průběhu normálního běhu aplikace nabídnuty další výjimky (exceptions). Ačkoli vývojáři tyto konkrétní problémy nehledali, stejně je našli. Běžná relace ladění by nezobrazila, co se stalo předtím, než došlo k přerušení. Ale pokud máte k dispozici takovýto pohled, získáte možnost nalézt chyby, které by předtím nebyly nalezeny.

Vývojáři mohou log funkce IntelliTrace™prohlédnout a zjistit, kde došlo k problému. Mohou v něm rovněž vyhledávat ty metody nebo třídy, které byly provedeny jako součást testu. Na obrázku 3 je znázorněna situace, kdy se vývojáři snaží zjistit, proč se do uživatelského ovládacího prvku načítá nesprávná informace.

Obrázek 3 znázorňuje situaci, kdy je načítán uživatelský prvek. Vývojář pouhým prohlížením logu zjistil, že prvek načítal informace z cookie v době, kdy neměl.

Ladění pomocí funkce IntelliTrace™

Obrázek 3: Ladění pomocí funkce IntelliTrace™

Nyní se může vývojář podívat na metodu a zjistit, co a proč se načítá a jaké byly hodnoty proměnných v průběhu ladění.

Funkce IntelliTrace™ jako úspora času

Odstraňování chyb v kódu zabere obrovské množství času, vždyť i jednoduché problémy chtějí svůj čas. Nový ladicí nástroj v prostředí Visual Studio 2010 Ultimate zajišťuje úspěšné výsledky pro všechny relace ladění. Co víc, vývojáři mohou udělat práci v mnohem kratším čase, než byl až dosud potřeba. Velmi rychle odstraní chyby, které jsou těžko zachytitelné, nereprodukovatelné nebo občasné, a tím ušetří čas sobě i testerům. Vedoucí týmů si jistě uvědomují, že s funkcí IntelliTrace™ budou moci vývojáři pokračovat v práci na nových funkcích či verzích podle plánu.

Co říkají jiní

Minitab

Minitab

Softwarová firma pomocí integrované sady nástrojů snižuje náklady a modernizuje vývoj

Firma Minitab, která se věnuje vývoji statistického software, chtěla zjednodušit a urychlit vývoj. Zavedla integrované řešení, jehož součástí jsou Microsoft Visual Studio 2010 Ultimate, Visual Studio Team Foundation Server 2010 a Visual Studio Team Lab Management 2010. Díky funkcím jako IntelliTrace nebo Microsoft Visual F# má nyní možnost zvýšit produktivitu, snížit náklady na vývoj a licence a trávit čas získáváním nových objednávek.

„IntelliTrace bude pro nás velmi významným ladicím nástrojem. Umožňuje nám totiž zachytit průběh testování, a poté jej připojit k hlášení o chybě. Kromě toho je v prostředí Visual Studio 2010 k dispozici funkce IntelliSense, která nabízí nové možnosti v oblasti hlášení chyb, rozborůa zpracování na pozadí, které vývoj jednoznačně urychlí. Visual Studio Team Foundation Server 2010 budeme používat k zanášení do databáze kódu a ke sdílení průběhů testování zaznamenaných pomocí logů funkce IntelliTrace.“
Matt Kowalski, vedoucí databázového vývoje, Minitab


Wintellect

Wintellect

Konzultační firma očekává, že díky novému nástroji zrychlí ladění o nejméně 25 procent

Softwarová konzultační firma Wintellect chtěla inovovat proces ladění, aby mohla rychleji řešit chyby a zvýšit kvalitu kódu. Firma nalezla to, co potřebovala, ve vývojovém prostředí Microsoft Visual Studio 2010 Ultimate, které nabízí novou funkci pro ladění IntelliTrace. Nyní má firma k dispozici nástroje, které ji umožňují zkvalitnit spolupráci, snížit náklady a odladit aplikace o čtvrtinu rychleji.

„Pokud vím, nikdo nemá žádný takový nástroj pro ladění, jako je funkce IntelliTrace v prostředí Visual Studio 2010 Ultimate.“
John Robbins, spoluzakladatel, Wintellect

„... tento problém bych se standardními nástroji pro ladění řešil asi dvě hodiny, ale s funkcí IntelliTrace mi to trvalo 20 minut. I když aplikace běží v módu ladění s funkcí IntelliTrace trochu pomaleji, malý úbytek výkonnosti není z dlouhodobého pohledu významný. S touto funkcí budu aplikace ladit nejméně o čtvrtinu rychleji.“
John Robbins, spoluzakladatel, Wintellect

„Díky funkcím IntelliTrace a Concurrency Visualizer získám více informací, než kdybych jen vytiskl zdrojový kód. Vidím stav aplikace, mohu změnit proměnné, spustit kód a podívat se do logu, co se děje. Mohu porovnat dva běhy programů. Usnadňuje mi to dolaďování programu, protože jasněji vidím, co mohu zlepšit.”
John Robbins, spoluzakladatel, Wintellect

„Testeři již nemusí přesvědčovat ostatní, že chyby, které nikdo není schopen reprodukovat, opravdu odhalili. Stačí, aby sdíleli soubor IntelliTrace v serveru Visual Studio Team Foundation Server 2010. Existence těchto dat a důkazů pozitivním způsobem změní dynamiku vztahů mezi testery a vývojáři.“
John Robbins, spoluzakladatel, Wintellect

„Doba ladění je obvykle prodloužena o čas, který je potřeba strávit řešením obtížných chyb, takových, které nelze reprodukovat. To je důvod, proč jsem funkcí IntelliTrace tolik nadšen. Je to první nástroj za dvacet let, který doopravdy mění kulturu ladění a který pomáhá zkrátit čas, jejž ladění obvykle věnujeme.“
John Robbins, spoluzakladatel, Wintellect

„Jediná chyba v produkci může společnost velmi rychle přijít na 100 000 dolarů, ne-li na víc, a může poškodit její pověst. V dnešních podmínkách se firmy mohou takovýmto nákladům a rizikům vyhnout tím, že budou používat nástroje jako funkce IntelliTrace. Pro mne je to v prostředí Visual Studio 2010 absolutní nutnost. Vše ostatní je druhotné.„
John Robbins, spoluzakladatel, Wintellect