http://excel.fit.vutbr.cz Využití statistických metod k aalýze výsledků výkoostího testováí Martia Kůrová* Abstrakt Tato práce se zabývá aalýzou dat aměřeých během výkoostího testováí s cílem rozezat ve výsledcích podezřelé hodoty a idetifikovat často se vyskytující výkoostí problémy. Užitím statistických metod, jako je apříklad regresí aalýza, je provedea aalýza výsledků, idetifikace výkoostích problémů a výsledkem je report o celkovém stavu systému z hlediska jeho výkou. Uživatel se dozví, ke kterým potecioálím výkoostím problémům mohlo dojít a jak moc velké riziko představují. Implemetací regresí aalýzy je možé detekovat výkoostí problémy jako jsou apříklad zhoršující se reakčí čas odpovědi, ízká propustost systému či odhalit úik paměti. Hlavím posláím práce je apomoci vývojářům k jedodušší aalýze reportů z výkoostího testováí a tak urychlit potřebou dobu vyaložeou právě a tuto, často opomíjeou, část životího cyklu software. Implemetovaý mechaismus obohatí report o vyhodoceí stability systému - jeho stavu z hlediska výkou. Klíčová slova: výkoostí testováí regresí aalýza detekce aomálií Přiložeé materiály: Dowloadable Code *xkurov00@stud.fit.vutbr.cz, Faculty of Iformatio Techology, Bro Uiversity of Techology 1. Úvod Na úvod je uté říci, že testováí výkou eí levou záležitostí, a proto moho zejméa malých firem jedoduše etestuje jejich aplikace a spoléhá především a zpětou vazbu od uživatelů. Napjaté termíy, vývoj do posledího mometu před uvedeím do produkce či akceptačím testováím. Firmy si pak často uvědomí, že a testováí a aalýzu výsledků prostě emají dostatek času a ebo prostředků. To vše má za ásledek opomíjeí právě té části vývojového cyklu software, která se zabývá testováím a ověřováím jeho kvality. Nicméě výkoostí testováí dokáže upozorit právě a to, co je ještě třeba zlepšit před uvedeím produktu a trh. U aplikací dispoujících ízkým výkoem z důvodu špatého ebo žádého testováí je velmi pravděpodobé, že si už od začátku pokazí reputaci a esplí očekávaé prodejí cíle. Na druhou strau dokáže odhalit i řadu problémů, které se vyskytou až po delší době používáí aplikace - příkladem je postupá degradace sledovaých metrik jako čas odpovědi či propustost. Co je důležitější, výkoostí testováí software je mimořádě výzamé pro moho velkých průmyslových projektů a ezbyté v kritických aplikacích, jako jsou apříklad kosmické programy ebo záchraé zdravotické zařízeí. Zde je uté zajistit, aby fugovali správě po dlouhou dobu a bez odchylek. Jedím z hlavích idikátorů při výběru testovacího ástroje je způsob, jakým ám prezetuje své výsledky. Právě teto výsledý report je hlavím prostředkem k odhaleí výkoostích problémů. Vygeerovaý report pomáhá vývojářům odhalovat podezřelé chováí systému a avíc je to právě to, co chce maagemet vidět, když přijde a posuzováí kvality software. Některé ástroje abízí pouze textové logy a jedoduchý přehled, další vykreslí z výsledků graf ebo dokoce poskytují možost exportovat výsledky apříklad do tabulkového procesoru, kde je vhodé místo po porováváí jedotlivých běhů testu. Námi vyviutá kompoeta poskytuje mechaismy, které urychlí a zjedoduší aalýzu výsledého reportu z výkoostího testováí. Úkolem je celková au-
tomatizace procesu zpracováí dat výsledků aměřeých během testu, rozezáí podezřelých hodot a z ich idetifikace často se vyskytujících výkoostích problémů. Je tak provedeo využitím statistických metod jako je lieárí regresí aalýza, pomocí které je možé detekovat výkoostí problémy jako apříklad zhoršující se reakčí čas odpovědi a ízká propustost systému či odhalit úik paměti. Ve fiále dojde k vygeerováí reportu z testováí s přehledem vykresleých grafů z jedotlivých testů a vyhodoceí celkového stavu systému z hlediska výkou. 2. Podobé práce Algoritmů vycházejících ze statistických metod existuje velké možství. Je to dáo také tím, že se tyto metody využívají v širokém spektru oborů. Práce [?] pojedává o využití korelačí a regresí aalýzy k detekci bezpečostích icidetů v rámci Iteretu věcí. Podobě jako u výkoostího testováí jsou pro ás ejzajímavější odchylky od běžého předpokládaého scéáře, je tomu tak stejě i u aalýzy sít ového provozu s cílem detekovat aomálie a odhalit tak útok [?] [?]. Regresí aalýza taktéž přestavuje výzamou metodu v oblasti sociologického výzkumu. 3. Hledáí iformace v datech Data miig eboli dolováí dat je soubor metod sloužících ke zpracováí růzých dat bez ohledu a o- bor a původ a získáí etriviálích iformací, které jsou v ich obsažeé. Dolováí dat je v deší době důležitý marketigový ástroj a zcela určitě ejrychleji rostoucím segmetem busiess itelligece. s jeho pomocí se sažíme z ukládaých dat získat složitější a užitečější iformace ež je grafy a základí přehledy. Příkladem může být vytvářeí statistických modelů. Ze statistického úhlu pohledu se jedá o hledáí korelací, tedy vyšetřováí vzájemých vztahů ebo vzorů v datech. Smyslem je tedy aalyzovat datové závislosti, určit tredy, a pokud to typ dat umožňuje, předpovědět budoucí vývoj. Využívají se ejrůzější metody od jedoduchých tabelací a vizualizací až po sofistikovaé přístupy jako je geetické programováí. Asi ejčastěji používaými metodami však jsou rozhodovací stromy, asociačí pravidla, euroové sítě, regresí a shluková aalýza. 3.1 Regresí aalýza Metody regresí aalýzy jsou využíváy v situacích, kdy ás zajímá závislost jisté áhodé veličiy (závislé proměé) a jedé ebo více ezávislých proměých, tzv. regresorech. Předem je dáo, která proměá je ezávislá a která je závislá. Cílem regresí aalýzy je popsat tuto závislost pomocí vhodého matematického modelu. Podle počtu ezávislých proměých rozlišujeme modely jedoduché regrese a víceásobé regrese. Jedoduchá regrese popisuje závislost vysvětlovaé proměé a jedom regresoru. Naproti tomu víceásobá regrese řeší situaci, kde závisle proměá závisí a více ež jedom regresoru. Tato práce se zabývá jedoduchou regresí, kdy je vysvětlující proměá závislá pouze a jedom regresoru. závislost je zde přímková a tedy vztah obou veliči lieárí. Lze sestavit regresí model. y = b 0 + b 1 x + e i (1) Kde y (závislá proměá) bude měřeá veličia a x (ezávislá proměá - regresor). Parametr, který určuje polohu přímky, zde začíme jako b 0, směrici přímky jako b 1. e i reprezetuje áhodou chybu modelu. 3.1.1 Metoda ejmeších čtverců Metoda ejmeších čtverců je metoda pro odhad parametrů regresí fukce a to pouze pro takové modely, které jsou lieárí v parametrech. Podstatou je tedy aproximace zadaých (aměřeých) hodot ějakou fukcí z předepsaého prostoru. Nejjedodušším příkladem je proložeí (aproximace) dat přímkou, tedy lieárí fukcí. Cílem je alezeí takové přímky, aby součet druhých moci chyb e i byl miimálí. Zameá to, že parametry fukce y i = b 0 + b 1 x i (hodoty b 0 a b 1 ) hledáme tak, aby součet čtverců odchylek pozorovaých hodot Y i od hodot Ȳ i S rez byl co ejmeší. Pro daou regresí fukci teto součet azýváme reziduálí součet čtverců. S rez = i=1 e 2 i = i=1 (y i b 0 b 1 x i ) 2 (2) Z podmíky miimálosti čtverců jsou vyvozey ormálí rovice, ze kterých se jejich řešeím vypočtou ezámé parametry b 0 a b 1. b 0 = ȳ b 1 x (3) b 1 = S xy = i=1 (x i x)(y i ȳ) S xx i=1 (x i x) 2 (4) 3.2 Korelačí aalýza Korelačí aalýza slouží k vyjádřeí síly závislosti, těsosti dvou a více umerických proměých. Odpovídá a otázku: Jak silá je závislost mezi proměými, respektive jak moc odpovídá model skutečosti?
3.2.1 Pearsoův korelačí koeficiet r Nejčastěji se pro měřeí závislosti používá Pearsoův korelačí koeficiet r, který měří lieárí závislost dvou áhodých veliči x a y s dvourozměrým ormálím rozděleím. r = i=1 (x i x)(y i ȳ) i=1 (x i x) 2 i=1 (y i ȳ) 2 (5) kde: x: je x-ová souřadice datového bodu (ezávislá proměá) x: je průměrá hodota x-ových hodot y: je y-ová souřadice datového bodu (závislá proměá) ȳ: je průměrá hodota y-ových hodot : je počet hodot Nabývá hodot od 1 do 1, které začí perfektí lieárí vztah (záporý ebo kladý), jak je zázorěo a ásledujícím obrázku: V případě kladé korelace r > 0 hodoty obou proměých zároveň stoupají. V případě záporé korelace r < 0 hodota jedé proměé stoupá a druhé klesá. V případě eexistece lieárího vztahu je r = 0. 3.2.2 Koeficiet determiace R 2 Druhá mocia korelačího koeficietu R 2 se azývá koeficiet determiace. Vyjadřuje podíl, jakým je rozptyl závisle proměé veličiy vysvětle změami ezávisle proměé. Obvykle se ásobí stem, čímž je teto podíl vyjádře v procetech. Koeficietem determiace rozumíme veličiu R 2 = 1 S rez S yy (6) kde: Syy : je celkový součet čtverců odchylek dat S yy = od průměru. i=1 (y i ȳ) 2 (7) V modelu lieárí regrese s absolutím čleem leží hodota R 2 v itervalu < 0,1 > a udává, jaký podíl rozptylu v pozorováí závislé proměé se podařilo regresí vysvětlit. Udává shodu modelu s daty. Větší hodoty zameají větší úspěšost regrese. 3.3 Základí statistické testy v regresím modelu Statistická hypotéza je předpoklad o hodotě ezámého parametru ebo o zákou rozděleí sledovaé veličiy. U modelů lieárí regrese můžeme testovat bud celý model (pomocí F testu) ebo vliv jedotlivých prediktorů (t test). Nejjedodušší ulovou hypotézou je rovost ěkterého z regresích koeficietů ule H 0 : b i = 0. Testům výzamosti koeficietů vyrovávací přímky říkáme dílčí t-testy. t = odhad hodoty parametru středí chyba odhadu parametru (8) Testujeme ulovou hypotézu, že model ic evysvětluje (proměé jsou ezávislé). Je-li parametr evýzamý, potom platí že b i = 0. t i = b i S bi (9) Hodotu t i v absolutí hodotě porováváme s t krit (1 α/2) Studetova rozděleí pro (-m) stupňů volosti, kde je počet hodota a m je počet parametrů b i. t i = b i S bi T ( m) (10) Číslo α se azývá hladia statistické výzamosti testu. Určuje pravděpodobost, že testovací charakteristika pade mimo obor přijetí. Obvykle abývá hodot od 0,001 do 0,3 v závislosti a povaze zkoumaého problému (doporučovaé hodota je 0,05). V případě, že získaá hodota je meší ež 0,05 - zamítáme H 0, tz. koeficiet b i z modelu vypustit emůžeme. 4. Detekce aomálích profilů Detekce aomálií spočívá v defiováí ormálího chováí pomocí možiy vybraých proměých, které jsou poté porováváy s ově aměřeými. Pokud jsou výrazě odlišé od očekávaých hodot, je hlášea aomálie. U výkoostích problémů je cílem sledovat fukčí závislost měřeé metriky a čase a tak idetifikovat její odchylky vůči ormálímu chováí. Zaměřujeme se a statistické metody, jejichž výhodou je schopost učit se přímo z pozorovaých dat, a tudíž eí uté procházet počátečí tréovací fází, jako je tak u áročějších metod založeých apříklad a strojovém učeí. Jedá se tedy hlavě o růzé přístupy aalýzy tredu v grafu.
4.1 Výkoostí problémy v grafech Z průzkumu často se vyskytujících výkoostích problémů v serverových aplikacích jsme vybrali takové, které se vyzačují projevováím specifických vzorů a u kterých budeme zřejmě schopi idetifikovat odchylky lišící se od ormálího chováí. 4.1.1 Úik paměti Zdrojem problému s výkoem může být případ, kdy edochází k uvolňováí již evyužívaé paměti. Úik paměti astává viou chyby v programu, at už se jedá o službu apsaou v jazyce s automatickou správou paměti či ikoliv. Jako příklad ám poslouží graf a obrázku 1 zázorňující postupé arůstající možství využité paměti. Obrázek 1. Využití paměti 4.1.2 Výkyvy v času odpovědi Pravidelé výkyvy v času odpovědi mohou být způsobeé čiostí garbage collectoru (GC). Neí to takový problém, pokud GC běží pouze po dobu pár sekud, apříklad každou miutu, jako je typické pro aplikace, které často ukládají data z databází (disku) do JVM (paměti). Problém astává, když GC trvá déle ež je ěkolik vteři. V tomto případě se už koečému uživateli může zdát aplikace pomalá. Příkladem může být graf a obrázku 2, kdy čas odpovědi dosahuje v určitých mometech až 2 vteři. Obrázek 2. Výkyvy v času odpovědi 4.1.3 Provozí špička Dalším příkladem, který má přímý vliv a výko systému, je áhlá degradace daé metriky - at už se jedá o čas odpovědi, propustost ebo využití zdrojů. způsobeá velkým počtem uživatelů v provozích špičkách. Příkladem je zázorěí času odezvy systému a obrázku 3. Existují ale i velmi specifické případy, kdy ám korelace proměých apříč celého zázamu ic e- Obrázek 3. Degradace času odezvy apoví a je uté zkoumaý rozsah zmešit a ěkolik málo posledích vzorků a ebo zvážit použití sofistikovaějších metod, zmíěých v závěrečé kapitole 6. 4.2 Idetifikace výkoostích problémů s využitím regresí a korelačí aalýzy Aalýza výkou aplikace v kotextu regresí aalýzy představuje zkoumáí závislosti daé výkoostí metriky (času odezvy, propustosti, možství spotřebovaého zdroje) a čase tedy hlavě to, jak se aměřeé hodoty v průběhu času měí. To ovlivňuje vztah závislosti mezi těmito dvěma hodotami, který lze defiovat řadou veliči pomocí korelačí aalýzy. Do vzorce regresí aalýzy 1 bychom tedy za závislou proměou dosadili zkoumaou výkoostí metriku a za ezávislou proměou čas. 4.2.1 Sklo regresí přímky Z grafu a obrázku 1 se dá vyčíst jakási růstová tedece přímky odhaduté regresí fukce zázorňující možství využité paměti vzhledem k času prováděí testu. Z matematického hlediska bychom tuto tedeci, míru těsosti závislosti dvou proměých kvatifikovali parametrem regresí fukce b 1, jehož odhad dokážeme získat podle vzorce 4 metodou ejmeších čtverců. Parametr b 1 zde představuje směrici sklo odhadovaé regresí přímky, a tudíž lze podle í odhadout, zda dochází k růstové tedeci v grafu. Na základě zalosti tohoto parametru lze tedy odhalit degradaci měřeé výkoostí metriky, at už chvilkové, zapříčiěé přetížeým provozem či z dlouhodobého hlediska. 4.2.2 Úroveň výzamosti korelace sklou Podmíky lieárího regresího modelu je uto v rámci regresí aalýzy ověřit. Využijeme k tomu základí statistické testy v regresím modelu podle kapitoly 3.3. Existeci lieárího vztahu mezi dvěma veličiami zjišt ujeme tak, že se formálě ptáme, zda je směrice b 1 rova ule. Pokud je odpověd a tuto otázku kladá, zameá to, že směrice regresí přímky se liší od uly pouze áhodě, tz., že vztah mezi sledovaými veličiami eí lieárí. Když se opět přesueme do kotextu detekce výkoostích problémů, můžeme usuzovat, že pokud vztah mezi sledovaými veličiami eí lieárí, vyskytují se v sadě amě-
řeých výsledků hodoty, které jsou výrazě odlišé od průměru a představovat apříklad podstaté výkyvy, jako je zázorěo a obrázku 2. Tímto způsobem tedy idetifikujeme poteciálí aomálí profil, který může být podle závažosti ozače za výkoostí problém. 4.2.3 Kvalitu regresího modelu Kvalitu regresího modelu můžeme hodotit pomocí koeficietu determiace R 2. Jak je vysvětleo v kapitole 3.2.2, koeficiet determiace udává, kolik procet rozptylu vysvětlovaé proměé je vysvětleo modelem. V praxi to zameá, jak moc jsou jedotlivé sledovaé hodoty odlišé od středí hodoty. Teto pozatek využijeme už je k potvrzeí předchozích hypotéz o výskytu aomálího profil. 5. Využití v praxi Výše popsaé přístupy lze využít pro detekci aomálích profilů ve výsledcích provedeého výkoostího testu. 5.1 Nová kompoeta v ástroji PerfCake Vzikla ová kompoeta typu Destiatio v reportovací části ope-source ástroje pro výkoostí testováí a geerováí zátěže PerfCake 1. Vyviutá kompoeta po skočeí testu provádí aalýzu aměřeých výsledků pomocí statistických metod a a závěr vygeeruje souhrý report, ve kterém je vyhodoce celkový stav systému vzhledem k provedeým testům defiovaým v testovacím scéáři. 5.1.1 PerfCake Nástroj PerfCake poskytuje prováděí testů a propustost systému, čas odezvy, dokáže moitorovat áročost iicializace aplikace či pamět za účelem detekce úiku paměti. K tomu také byly přizpůsobey algoritmy detekující aomálie právě v těchto metrikách, které ástroj dokáže měřit. 5.1.2 Detaily implemetace Byla implemetováa jedoduchá regresí aalýza pomocí kihovy Apache Commos Math 2 a pravidla pro idetifikaci aomálích profilů defiováa v kapitole 4.2. 1 http://www.perfcake.org 2 http://commos.apache.org/math Algorithm 1 Detekce aomálích profilů Data: regresí model Result: výkoostí problém/ormálí profil if hodota směrice regresí přímky je výrazě odlišá od uly the detekováa degradace testovaé metriky else if hypotéza o výzamosti koeficietů regresí přímky je zamítuta the detekováy výkyvy v profilu else ormálí profil ed ed Reportovací část, která zkompiluje všechy výsledky do jedoho souhrého reportu a obohatí jej sděleím, ke kterým poteciálím problémům mohlo v systému dojít a tipy čím mohly být způsobeé, je yí v procesu vývoje a bude k í využita kihova C3.js 3 5.2 Simulace výkoostích problémů K simulaci aomálích profilů pro účely testováí a optimalizace avržeých algoritmů je využíváo ěkolik služeb. Jedou z ich je ope-source služba Weaver 4, která komuikuje s okolím světem přes HTTP. Je tak možé spustit současě ěkolik vláke ozačováy jako Workers, které zpracovávají požadavky a základě růzé kofigurace jejich chováí a tak apodobit egativí testovací scéáře. Například čas odezvy s daým zpožděím, simulace úiku paměti, přepíáí mezi dvěma růzými kofiguracemi, ale i simulaci ormálího chováí. Dalším jsou webové stráky mocky.io 5 a httpbi.org 6 pro HTTP Request & Respose simulaci služeb fugující a podobém pricipu. 5.3 Průběh experimetováí Na základě zalosti výkoostích problémů a schoposti rozpozáí jejich charakteristických profilů z grayfu aměřeých hodot byly provedey experimety s vyviutou metodou pro detekci aomálích profilů za účelem zvýšeí její přesosti. Byly vytvořey jedotlivé kofigurace služby Weaver s vlastostmi charakteristickými pro zkoumaé výkoostí problémy a adekvátí kofigurace testovacího scéáře pro testováí této metriky. Z této fáze byly získaé grafy použité v kapitole 4.1. 3 http://c3js.org/ 4 http://github.com/perfcake/weaver 5 http://www.mocky.io/ 6 http://httpbi.org/
Poté bylo provedeo spuštěí služby pro simulaci serverové aplikace s kofigurací daé PI (s takovou kofigurací, aby geerovala hodoty charakteristické pro daý aomálí profil) a její otestováí ástrojem PerfCake s daým testovacím scéářem. Po skočeí testováí a získáí všech aměřeých hodot byly provedey ad výsledky heuristiky ámi vytvořeou kompoetou a shromážděy výsledky korelací těchto hodot. Následovalo zkoumáí výsledků korelačích fukcí a hledáí souvislostí mezi těmito hodotami a projeveými PI. Na základě pár vzorových případů byla vytvořea heuristická pravidla pro rozpozáí daé PI zmíěá v kapitole 4.2 a ásledě byla tato pravidla testováa a větším vzorku dat a postupě vylepšováa. 6. Shruti/Závěr, rozšířeí práce V tomto čláku pojedáváme o detekci podezřelých hodot ve výsledcích výkoostího testováí a základě regresí aalýzy, která spadá do možiy statistických metod. V budoucu je možé práci rozšířit použitím dalších metod založeých a dolováí dat či strojovém učeí. V případě strojového učeí emusíme chápat podstatu procesů geerující data, protože tyhle metody jsou založey a postupém učeí se a vylepšováí své výkoosti pro daou úlohu a základě předchozích výsledků. Tuto metodu by tedy bylo vhodé použít pro případy dlouhodobého testovaí software z hlediska jeho výkou a tím pádem odhalovat i jié typy výkoostích problémů, především postupou degradaci jedotlivých měřeých metrik systému. V oblasti dolováí dat jsou vhodé metody založeé a klasifikaci, které rozdělují vstupí data do ěkolika tříd a základě sady pravidel, vzorů ebo podobých techik. V případě detekce aomálií se obvykle jedá o biárí klasifikaci, tedy rozděleí pouze do dvou tříd - ormálí data a aomálie. Další možostí je shluková aalýza. Shluková aalýza představuje souhrý ázev pro metody vyhledáváí shluků v epopsaých datech o moha dimezích. Hlaví výhoda této metody je její schopost učit se z dat a vyhledávat v ich aomálie bez toho, abychom museli poskytout popis růzých typů těchto aomálií. Možství tréovacích dat, které je uto systému dodat, je také meší, ež u jiých metod. Výsledkem shlukové aalýzy je defiováí tzv. Outliers, které jsou z pohledu této metody objekty, které eáleží do žádého shluku, a v kotextu detekce aomálií tedy pravděpodobě reprezetují výkoostí problémy.