Testovací laboratoř pro Internet Explorer

Posledních pět let se v Redmondu postupně stavěla laboratoř pro testování spolehlivosti a výkonu Internet Exploreru. Dnes patří mezi nejsofistikovanější nástroje pro měření webu. Denně v ní proběhne na 200 testů výkonu Internet Exploreru, provede se 5,7 milionu měření a shromáždí se 480 GB dat. Měření probíhá každých 100 nanosekund. Pro každou změnu ve zdrojovém kódu IE je tak známé, jaký měla dopad na jeho výkon.

Laboratoř je miniaturní verze Internetu. Skládá se z více jak 140 strojů nejrůznějších typů. Obsahuje desktopy, notebooky, netbooky a tablety s procesory architektury x86, x64 i ARM. Zahrnuje webové servery, DNS servery, routery a emulátory sítí, které mají za úkol simulovat různé typy připojení. Síť umožňuje odstranit všechny zdroje náhody. Všechny prováděné testy mohou být deterministické a lze je tedy kdykoliv zopakovat.

Laboratoř využívá Windows Performance Tools (WPT), díky kterému je možné spustit stejné testy a porovnat výsledky. Jdou spustit pro různé prohlížeče, panely nástrojů, antivirové programy i další programy třetích stran. WPT dokáže měřit vše od zátěže CPU a GPU až po účinnost cache pamětí, vytížení sítě a využívání paměti. To vše za účelem zajistit, aby byly hardware, ovladače, Windows a Internet Explorer vzájemně optimalizovány. Jeden test zabere okolo 6 hodin a vytvoří 22 GB dat. Infrastrukturu laboratoře tvoří tři celky – síť a servery, klienty a měřící technika.

Jak se měří

Webové servery

Servery s webovými stránkami obsahují kopie skutečných stránek z Internetu. Jejich zdrojový kód je jen upraven tak, aby byl deterministický. Například volání funkce Math.Random je nahrazeno statickou hodnotou. Dynamické URL jsou nahrazeny statickými. Webová aplikace je implementována tak, že se z URL vytvoří hash, podle kterého se dohledá statický HTML kód, který je nakešován v paměti. Každý server má 16 jader a 16 GB RAM. Kromě toho obsahuje laboratoř ještě samostatné servery, na kterých běží Outlook Web Access a Office Web Apps.

Emulátory sítě

Na některá síťová spojení jsou aplikovány hardwarové emulátory, které zpožďují a mění pořadí paketů. V závislosti na konkrétní konfiguraci tak emulují 56k, DSL a kabelové modemy či WAN a 4G sítě. Přestože je toto řešení složitější a dražší, než použití softwarového řešení či proxy, je to jediný způsob, jak přesně měřit výkon. Prohlížeč má omezení na počet současných připojení k proxy, takže by to ovlivnilo měření. Softwarový emulátor na klientovi by zase využíval jeho výkon a znehodnocoval tak měření, obzvláště pak na zařízeních napájených z baterie.

Klienti

Laboratoř obsahuje 120 strojů, na který běží nejnovější stabilní build Internet Exploreru z TEST branche (na TFS je ještě DEV a MAIN branch). Jednotlivé stroje se velmi liší a zastupují celou škálu zařízení – tablety a netbooky počínaje a výkonnými x64 desktopy konče. Některé mají integrovanou grafickou kartu, jiné ne.

Klienti jsou sdruženi do skupin. V každé skupině jsou počítače s přesně stejným hardwarem. Když se totiž vyskytne porucha, po výměně vadné komponenty za novou dojde téměř vždy ke zrychlení stroje. Když se měří s přesností na 100 nanosekund tak i pár taktů dokáže ovlivnit výsledek. Pokud k tomu dojde, je počítač ze skupiny odstraněn.

Pokud se měří výkon grafiky IE, využívá se strojů z druhé laboratoře pro měření grafického výkonu Windows, která obsahuje téměř každý vyrobený typ chipsetu. Tato laboratoř je neocenitelná při vyšetřování chyby napříč jednotlivými chipsety a verzemi ovladačů grafické karty.

Měřící technika

Měřící data jsou nejprve nashromážděna. Jejich rozbor probíhá na samostatných serverech HP ProLiant DL160 G6. Má 16 jader a 16 GB RAM. Tisíce metrik, které se vypočtou, jsou nakonec uloženy na SQL Server. Ten shromažďuje 6 milionů měření vytvořených každým dnem. Běží na 24 jádrovém serveru s 64 GB RAM.

Co se měří

Načítání obsahu

V první řadě se měří navigace z jedné stránky do druhé. To zahrnuje měření napříč jedenácti vrstvami Internet Exploreru, které společně zajišťují načtení nové stránky.

  • Síťová vrstva se stará o komunikaci se servery a o místní kešování.
  • HTML vrstva se stará a parsování HTML a sestavení DOM (Document Object Model).
  • CSS vrstva se stará o přiřazení stylů jednotlivým prvkům v DOM.
  • Vrstva pro shromažďování metadat načítá údaje z tagů meta a HTTP hlaviček pro pozdější využití.
  • Vrstva s JavaScriptem je asi nejznámější. Zaměstnává další vrstvy i po načtení stránky.
  • Marshaling vrstva načítá ActiveX prvky a Visual Basic Script. Zkrátka komponenty, které nejsou implementace přímo v IE.
  • Native OM vrstva zpřístupňuje DOM těmto vnějším komponentám.
  • Vrstva pro formátování sestavuje z DOM a kaskádových stylů Display Tree.
  • Další vrstva sestavuje obdélníkové bloky, které se zobrazují uživateli.
  • Vrstva pro rozložení sestavuje z jednotlivých bloků stránku.
  • A konečně renderovací vrstva pomocí DirectX, nebo GDI+ vykresluje stránku.

Pečlivým měřením na všech těchto vrstvách vznikají takovéto statistiky. Jsou klíčem k rozhodování, které části Internet Exploreru je třeba optimalizovat, nebo reimplementovat. Na první pohled se z nich pozná, jestli stránka používá velké množství javascriptových knihoven nebo používá nadměrné množství kaskádových stylů.

XmlHttpRequest

Další oblastí, která je předmětem měření, je dynamické načítání dat ve formě XML a následná úprava stránky pomocí JavaScriptu. Měření probíhá na zdrojových kódech oblíbených stránek pro sdílení krátkých zpráv, sociálních sítích a aplikacích jako Outlook Web Access a Office Web Apps.

Uživatelské rozhraní

Neméně důležité je také měření samotného prostředí prohlížeče. Mezi nejdůležitější interakce patří otevření a zavření prohlížeče, přepínání záložek, změna velikosti klávesnicí, myší či dotykem a zacházení s historií či oblíbenými stránkami.

Výběr vzorků

Velmi známé a často hodně přeceňované testy, jako například WebKit SunSpider, jsou v laboratoři také. Jsou užitečné pro testování zátěže konkrétní vrstvy prohlížeče. Tyto testy však simulují chování, které na běžném webu zřídka kdy nastane. Testy byly psány spíše s cílem ukázat nedostatky konkrétních prohlížečů a zdůraznit jejich rozdíly. Proto se klade důraz především na testy, které testují prohlížeč jako celek.

K výběru testovacích stránek slouží zvláštní internetový vyhledávač. Na stránkách měří 68 různých ukazatelů. Jedná se například o šířku a hloubku DOM stromu, složitost CSS pravidel, použité javascriptové frameworky nebo jazykové odlišnosti (kterým se v Redmondu říká international features). Na základě tohoto průzkumu webu se vyberou stánky, které slouží k testování v laboratoři. Tím se zajišťuje, že je výběr stránek dostatečně reprezentační.

Metriky

Výkon prohlížeče se nedá vyjádřit jedním číslem. Testy, které se o to snaží, se vždy soustředí jen na určitou oblast. Celkem se měří přes 850 různých metrik. Společně tvoří mozaiku výkonnosti Internet Exploreru. V první řadě se sleduje pět hlavních oblastí.

  • Čas, který uplyne od doby, kdy uživatel klikne na odkaz, do načtení stránky.
  • Čas od načtení stránky do dokončení úloh na pozadí (jako například odesílání údajů serverům měřící návštěvnost webu).
  • Zátěž CPU, který je v případě webových stránek úzkým hrdlem (pomineme-li síť). Proto se samotné vykreslování přesunulo s devátou verzí IE na GPU.
  • Zpoždění způsobené zdroji jako sítě, GPU, RAM, SSD či HDD a stovky dalších.
  • Spotřeba energie na zařízeních napájených z baterie, zejména při používání HTML5 videa.

Sběr těchto dat z Windows probíhá přes ETW (Windows Event Tracing Infrastructure) a VMMap (virtual and physical memory analysis utility). ETW sbírá každých 10 mikrosekund snímky paměťového zásobníku. S pomocí debugging symbolů se dají poté jednotlivé snímky procházet zpětně.

Měření softwaru třetích stran

Hodně aplikací používá Trident. Rozšíření Internet Exploreru jsou testovány tak, že jsou srovnávány testy prohlížeče s doplňkem a bez něj. Při tom je kladen důraz hlavně na dobu spuštění prohlížeče a dobu načítání stránky. Hodně doplňků posílá požadavky na servery během načítání stránky. Některé to však dělají synchronně, což logicky zbrzdí její načítání. Nehledě na situace, kdy je pečlivě nastavený firewall nebo je počítač offline.

Rychlejší prohlížeč pro všechny

Rychlost prohlížeče je velmi důležitá. Pečlivé měření Internet Exploreru zajišťuje jeho kvalitu napříč velkým množstvím hardwaru, na kterém běží. Data, která laboratoř naměří, se nevyužívají jen k jeho vývoji, ale přispívají k optimalizaci Windows a k návrhu rychlejšího hardwaru pro PC.

Článek byl sepsán pro TechNet Blog CZ/SK.