Nedostatečná výkonnost aplikací stojí společnosti každý rok miliony dolarů a někdy i jejich dobré jméno. Firmy by měly odevzdat software, který se chová očekávaným způsobem, konzistentně a má dobrou odezvu. Tento jednoduchý požadavek však není snadný. Vnitropodnikové aplikace s nízkou výkonností dále zvyšují náklady jak ve formě ztráty produktivity, tak ve formě promeškání termínů. Microsoft Visual Studio 2010 poskytuje nástroje pro měření, zvýšení a ověření výkonnosti aplikací v těch nejnáročnějších podmínkách, takže aplikace obstojí nezávisle na situaci.
Na této stránce:
Nedostatečná výkonnost aplikací stojí společnosti každý rok miliony dolarů a někdy i jejich dobré jméno. Proč se to děje, je celkem jasné. Zákazníci se nemohou dostat na požadovaný web nebo si nemohou koupit produkt, protože aplikace má buďto špatnou odezvu, nebo neodpovídá vůbec. A to je jen pokud jde o webové aplikace. Časem plýtvají i vnitropodnikové aplikace, které trpí nedostatečnou výkonností. A čas je drahý, stojí jak ztrátu produktivity, tak promeškání termínů. V minulosti špatná výkonnost neměla tak zřetelný dopad, ale v dnešní době je velice drahá. Ovšem nemusí to tak být. Microsoft Visual Studio 2010 nabízí nástroje pro měření, zvýšení a ověření výkonnosti aplikace v těch nejnáročnějších podmínkách, takže aplikace bude fungovat očekávaným způsobem bez ohledu na situaci. Testování výkonnosti se v mnoha případech vůbec nedělá. Přitom hlavním důvodem není nedostatek času, ale nákladnost a složitost nástrojů, které jsou na to potřeba.
Známé prostředí
Jedním z hlavních přínosů integrovaných nástrojů pro testování zatížení je to, že pracují v prostředí, na které jsou vývojáři zvyklí. Visual Studio 2010 nabízí intuitivní rozhraní pro tvorbu webových testů, testů modulů a s nimi souvisejících testů zatížení. Všechny testy jsou založeny na tomtéž rozšiřitelném testovacím prostředí, které za posledních pět let dozrálo co do rozsahu a je dobře podporováno.
Integrace s prostředím Visual Studio není jedinou výhodou. Další výhodou je to, že úpravy testů nevyžadují, abyste se učili nový jazyk. Jsou podporovány prostředím Microsoft .NET. Mnoho jiných standardních nástrojů pro testování výkonnosti vyžaduje, abyste se naučili nový skriptovací nebo programovací jazyk a seznámili se s novým integrovaným vývojovým prostředím. S integrovanými nástroji prostředí Visual Studio můžete začít rychle a s minimálním zaškolením.
Problémy s výkonností je potřeba odhalit na začátku
Aplikace může mít problémy s výkonností z různých důvodů. Často k nim dochází v důsledku volby architektury. Špatná struktura vede ke kritickým místům v kódu a může zpomalit celou aplikaci. Jestliže software není správně navržen, nepomůže ani přidání rychlejšího hardware. Oprava problémů, jejichž kořeny spočívají v architektuře, bývá náročná a nákladná. Naproti tomu odhalení potíží na začátku procesu výrazně ušetří čas i náklady.
Modelování chování uživatelů pomocí testů webové výkonnosti
Testy webové výkonnosti jsou jednu z klíčových složek testování výkonnosti v prostředí Visual Studio 2010. Tento nástroj byl poprvé uveden v prostředí Visual Studio 2005. Společnost Microsoft tento tehdy již existující a spolehlivý nástroj převzala a rozšířila tak, aby se snadněji používal a nabízel lepší prostředky.
Testy webové výkonnosti zaznamenávají požadavky prohlížečů na úrovni vrstvy HTTP. Tyto požadavky je možné spustit v rámci testu zatížení a simulovat tím chování uživatele. Takovéto testy jsou jednoduché a velmi účinně generují vysoké zatížení.
Testy webové výkonnosti jsou funkčně rozmanité. Automaticky podporují technologii Ajax a zdroje stránek. Do testů lze snadno přidat podmínky a cykly, aniž by bylo potřeba psát kód. Dynamické parametry, cookies a ověření oprávnění jsou zpracovány za vás. Testy mohou být navázány na data a umožňují vytvořit flexibilní testy řízené daty. Testy webové výkonnosti lze rovněž rozšířit. Pokud vestavěná ověřovací pravidla nejsou z vašeho pohledu úplná, můžete přidat vlastní. Potřebujete-li zpracovat dynamické parametry speciálním způsobem, můžete pomocí několika řádků kódu vytvořit vlastní modul. Existuje mnoho způsobů, jak lze přizpůsobit různé aspekty testování webové výkonnosti. Na obrázku 1 je znázorněn výstup testu webové výkonnosti.

Obrázek 1: Výstup testu webové výkonnosti
Používání testů modulů k řízení práce
Jedním z největších přínosů nástrojů pro testování výkonnosti a zatížení v prostředí Visual Studio je možnost pracovat s testy modulů. To znamená, že pro testování výkonnosti nepotřebujete kompletní uživatelské rozhraní a dokonce ani všechny součásti aplikace. Výkonnost můžete testovat dokonce dříve než je v průběhu vývoje běžné, například máte-li podezření na kritické místo. A ještě jeden přínos, který se týká webových služeb. Protože stále více aplikací využívá webové služby pro uživatelská rozhraní, lze jejich výkonnost testovat nezávisle.
Vytváření testů zatížení
Jak funguje testování zatížení v prostředí Visual Studio 2010? Nejdříve vytvoříte test modulu nebo test webové výkonnosti případně kombinaci obou typů testů. Potom pomocí jednoduchého průvodce sestavíte složitější testy zatížení, které mohou používat různou šířku pásma, různé charakteristiky zatížení, kombinace testů, nebo prohlížeče. Dále můžete určit zahřívací dobu, jak dlouho test poběží, zda je potřeba časový odstup mezi požadavky a také můžete stanovit, pro která zařízení chcete získat čítače výkonu. I když je rozhraní pro volbu těchto možností jednoduché, jako celek dovoluje specifikovat jakýkoli výkonnostní profil. Chcete, aby bylo několik vzorků uživatelů ve standardní šířce pásma 10 MB/s, a aby všichni ostatní používali komutované připojení? Co takhle získat podrobné informace o výkonnosti nejenom z testované vrstvy systému, ale také z datové vrstvy, proxy serveru, zařízení pro vyrovnání zatížení sítě, nebo z různých jiných zařízení komunikační cesty? Tyto rovněž nastavíte pomocí průvodce. Průvodce Load Test je znázorněn na obrázku 2.

Obrázek 2: Nastavení kombinace testů podle předpokládaného zatížení
Výkonnost získáte z testovaného systému pomocí sad čítačů. Sady jsou dodávány s předem nakonfigurovanými prahovými hodnotami, které upozorní na situaci, kdy jsou zdroje přetíženy (obrázek 3).

Obrázek 3: Výběr sad čítačů výkonnosti
Testovací prostředí lze rozšířit rovněž vytvořením vlastních datových kolektorů, které sbírají specifické informace podle potřeby. Díky těmto prostředkům získáte logy aplikací, zatížení sítě, logy požadavků pro server SQL nebo jakékoli další informace, a to vše ušito na míru vašim požadavkům.
Ke všem možnostem, které máte, a kterých je příliš mnoho, abychom je zde všechny vyjmenovali, patří ještě jedna. Testovací prostředí může růst podle vašich potřeb. Pomocí řadičů a testovacích agentů lze vytvořit model skutečného podniku s desetitisíci uživatelů, a to s nižšími náklady než dosud. A nejlepší na tom je licenční politika, která je jednoduchá. Další uživatele přidáte tak, že si zakoupíte balíky uživatelů. Zde neexistují různé typy uživatelů, další náklady na řadiče, ani žádná skrytá překvapení. Jste pružnější a náklady na testování výkonnosti můžete předem předpovědět.
Analýza výsledků testu
Testování zatížení je výborná věc. Ale testy samotné by nebyly k ničemu, kdyby nebylo možné analyzovat jejich výsledky. Zobrazení grafu analyzátoru testu zatížení dovoluje uvést do vzájemného vztahu pokles výkonnosti s akcemi a podmínkami v serveru, jako jsou chyby zaznamenané v protokolu událostí nebo rozsáhlé využívání zdrojů (obrázek 4). V testu zatížení jsou automaticky nakonfigurovány prahové hodnoty čítačů zatížení. Tyto umožňují odhalit zdroje serveru, které jsou vysoce zatíženy.

Obrázek 4: Přehled výsledků testu zatížení
Pomocí grafu aktivit virtuálního uživatele je možné zjistit, co jednotliví virtuální uživatelé v průběhu poklesu výkonnosti dělali (obrázek 5).

Obrázek 5: Graf aktivity virtuálního uživatele
Oprava kritických míst
Když už jste zjistili problém, je potřeba, abyste měli možnost jej opravit. Pro tyto účely nabízí Visual Studio 2010 datový kolektor Microsoft ASP.NET Profiler. Tento kolektor umožňuje rozebrat kód včetně kódu v prostředí .NET, analyzovat jej až na úroveň metod a nalézt jeho kritická místa. Typický příklad vypadá tak, že spustíte test zatížení a zjistíte, že některý ze scénářů (objednávka položky) běží pomaleji, než by měl. Vy chcete zjistit, proč to tak je. Když už víte, který scénář je problémový, můžete se podívat do datového kolektoru, kde najdete podrobné informace o všech metodách volaných v průběhu relace (obrázek 6). Takto naleznete kritickou cestu, čili nejpomalejší cestu v kódu.

Obrázek 6: Náhled na detaily funkce
Nalezněte problémy ve výkonnosti související s geografickou vzdáleností zákazníka již před nasazením aplikace
ASP.NET Profiler si dobře poradí s problémy ve výkonnosti aplikace. Ale stalo se vám už někdy, že jste nasadili aplikaci, která fungovala velmi dobře pro lokální klienty, ovšem vzdálení klienti v rámci sítě WAN s ní měli problémy? Problémy ve výkonnosti často způsobují klienti, kteří mají mnoho drobných požadavků, nebo klienti, kteří odesílají a přijímají velké množství dat. Takovéto aplikace fungují dobře v lokální síti, ale mají problémy v síti WAN. Visual Studio 2010 umožňuje spouštět aplikace při současném simulování sítě WAN a dovoluje tak nalézt tyto typy problémů s výkonností včas.
Vytvoření velkých datových sad pomocí generování dat
Množství dat v databázi představuje oblast, která je často přehlížena. Čím více je dat, tím spíše budou požadavky vyřizovány pomalu a tím spíše dojde k zablokování. Jednou z funkcí prostředí Visual Studio verze Premium nebo Ultimate je možnost generovat testovací data. Díky této funkci můžete bez námahy generovat a testovat velké objemy reálných dat (obrázek 7).

Obrázek 7: Generování dat
Přehledy
Visual Studio 2010 zavádí novou sadu přehledů, které dovolují analyzovat běhy testů a sdílet jejich výsledky se zákazníky. Pomocí mocných analytických prostředků aplikace Microsoft Excel je možné snadno porovnávat běhy testů (znázorněno na obrázku 8). Na obrázku je zobrazen čas odezvy stránky na příslušnou operaci v místech, kde se aplikace zpomalila, a kde se její výkonnost zvýšila.

Obrázek 8: Porovnání běhu stránek
Na obrázku 9 je zachyceno porovnání transakcí (čili jak dlouho trvalo provedení sady kroků, které tvoří uživatelský scénář). Podle tohoto obrázku se uživatelé v některých scénářích přihlašují do systému, v jiných si objednávají nebo chtějí zaplatit.
K dispozici jsou standardními přehledy jako čas čítače výkonnosti, chyby, celkové výsledky testů a další. Filtrováním přehledů lze získat detaily požadovaného stupně. Po nalezení kritických míst je možné prozkoumat kód a provést změny podle potřeby.

Obrázek 9: Časy transakcí
Testování zatížení pro každého
Nástroje prostředí Visual Studio pro testování zatížení nabízejí vyspělou, stabilní a rozšiřitelnou základnu pro testování, analýzu výsledků testů a pro následné kroky. Výsledky testů nejenom nabízí líbivé přehledy, ale díky těsnému provázání s vývojovým prostředím jsou i akční. Týmy mají možnost analyzovat data, prozkoumat kód, který způsobuje kritické místo, opravit jej, znovu spustit testy a ověřit vlivy změn. Tyto nástroje umožňují zlepšit výkonnost aplikace bez ohledu na to, zda se jedná o aplikaci pro malý nebo velký počet uživatelů, nebo zda je její význam zásadní či nikoli. Není potřeba sahat po nákladných nástrojích a začínat se učit vše od začátku.