Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Bakal´ aˇ rsk´ a pr´ ace TestRunner softwarov´ y prostˇ redek pro spr´ avu test˚ u
Plzeˇ n 2014
Luk´aˇs Tancer
Zad´ an´ı
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem bakal´aˇrskou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Plzni dne 18. ˇcervna 2014 Luk´aˇs Tancer
Abstract In this thesis I deal with the testing software products. This problem falls within the area, which is called software development process. Because this area is pretty huge, main focus is on testing inside Kerio technologies, Inc. The main purpose of this work is to improve their internal program called TestRunner. At the moment TestRunner has a few bugs left from previous versions. Some functionality is no longer needed. Finally, some new functions are required. The goal is to keep TestRunner vital for next few years.
Obsah ´ 1 Uvod 2 Problematika testov´ an´ı 2.1 Testov´an´ı obecnˇe . . . . . . . . . 2.2 Role testov´an´ı ve v´ yvoji Softwaru 2.2.1 Agiln´ı metodiky . . . . . . 2.2.2 Scrum obecnˇe . . . . . . . 2.2.3 Testov´an´ı ve scrumu . . . 2.3 Typy testov´an´ı . . . . . . . . . . 2.3.1 Manu´aln´ı testov´an´ı . . . . 2.3.2 Automatick´e testov´an´ı . . 2.4 Metody testov´an´ı . . . . . . . . . 2.4.1 Black box testov´an´ı . . . . 2.4.2 White box testov´an´ı . . . 2.4.3 Gray box testov´an´ı . . . . 2.5 Typy test˚ u. . . . . . . . . . . . . 2.5.1 Unit testy . . . . . . . . . 2.5.2 Funkˇcn´ı testy . . . . . . . 2.5.3 Integraˇcn´ı testy . . . . . . 2.5.4 Syst´emov´e testy . . . . . . 2.5.5 Akceptaˇcn´ı testy . . . . . 2.6 Chyby . . . . . . . . . . . . . . . 2.6.1 Z´avaˇznost . . . . . . . . . 2.6.2 Priorita . . . . . . . . . .
1
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
2 2 4 4 6 8 10 10 11 12 12 12 12 13 13 13 13 14 16 18 18 18
OBSAH
OBSAH 2.6.3
ˇ Zivotn´ ı cyklus chyby . . . . . . . . . . . . . . . . . . . 19
3 TestRunner 3.1 Obecnˇe . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Popis funkˇcnosti . . . . . . . . . . . . . . . . . . . 3.3 Specifikace poˇzadavk˚ u . . . . . . . . . . . . . . . 3.3.1 Dashboard . . . . . . . . . . . . . . . . . . 3.3.2 Redukce pr´av . . . . . . . . . . . . . . . . 3.3.3 Z´avislost testovac´ıch pˇr´ıpad˚ u na platformˇe 3.3.4 Vyhled´av´an´ı . . . . . . . . . . . . . . . . . 3.3.5 Dvojjazyˇcnost . . . . . . . . . . . . . . . . 3.3.6 Promˇenliv´a velikost lev´eho panelu . . . . . 3.3.7 Bugfix . . . . . . . . . . . . . . . . . . . . 3.4 Aktu´aln´ı programov´e prostˇred´ı . . . . . . . . . . . 3.5 Pˇrechod na nov´ y operaˇcn´ı syst´em . . . . . . . . . 3.6 Anal´ yza . . . . . . . . . . . . . . . . . . . . . . . 3.6.1 Datov´a vrstva . . . . . . . . . . . . . . . . 3.6.2 Aplikaˇcn´ı vrstva . . . . . . . . . . . . . . . 3.7 Oprava chyb . . . . . . . . . . . . . . . . . . . . . 3.7.1 Tlaˇc´ıtka Won’t test a Reset . . . . . . . . 3.7.2 Manaˇzer koment´aˇr˚ u. . . . . . . . . . . . . 3.7.3 Ostatn´ı . . . . . . . . . . . . . . . . . . . 3.8 Odebr´an´ı nadbyteˇcn´ ych funkc´ı . . . . . . . . . . . 3.8.1 Zruˇsen´ı dvojjazyˇcnosti . . . . . . . . . . . 3.8.2 Redukce uˇzivatelsk´ ych rol´ı . . . . . . . . . 3.9 Nov´e funkce . . . . . . . . . . . . . . . . . . . . . 3.9.1 DashBoard . . . . . . . . . . . . . . . . . 3.9.2 Vyhled´av´an´ı . . . . . . . . . . . . . . . . . 3.9.3 Souˇcty pr˚ umˇern´ ych ˇcas˚ u test˚ u pro kapitoly 3.9.4 Promˇenliv´a velikost lev´eho panelu . . . . . 3.9.5 Ovˇeˇrov´an´ı pˇres LDAP . . . . . . . . . . . 3.9.6 Vazba testovac´ıch pˇr´ıpad˚ u s platformou . . 3.9.7 Tooltipy . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20 20 21 21 21 21 22 22 22 22 23 24 25 25 25 27 31 31 31 32 32 32 33 34 34 36 36 37 37 39 41
OBSAH
OBSAH
4 Testy TestRunneru 44 4.1 Automatick´e testov´an´ı . . . . . . . . . . . . . . . . . . . . . . 44 4.2 Manu´aln´ı testov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . 45 5 Z´ avˇ er
47
´ 1 Uvod V t´eto pr´aci se budu zab´ yvat testov´an´ım softwarov´ ych produkt˚ u. Protoˇze tato oblast je pomˇernˇe rozs´ahl´a, zamˇeˇr´ım se hlavnˇe na testov´an´ı uvnitˇr spoleˇcnosti Kerio Technologies s.r.o., pro kterou je tato pr´ace prim´arnˇe urˇcena. Hlavn´ım c´ılem pr´ace bude vylepˇsen´ı jejich intern´ıho programu jm´enem TestRunner. V tuto chv´ıli zb´ yv´a v TestRunneru nˇekolik chyb z pˇredchoz´ıch verz´ı. Nˇekter´e funkce jiˇz nejsou nad´ale potˇreba. Naopak vyvstala potˇreba nov´ ych. Tyto u ´pravy prodlouˇz´ı ˇzivotnost TestRunneru o nˇekolik dalˇs´ıch let. Jako prvn´ı provedu pˇrechod na novˇejˇs´ı operaˇcn´ı syst´em a kompletn´ı omlazen´ı st´avaj´ıc´ıho softwaru. D´ale provedu hloubkovou anal´ yzu k´odu. Drobn´e zmˇeny v k´odu mi pomohou k lepˇs´ımu pochopen´ı cel´eho programu. Program n´aslednˇe vyˇcist´ım od pˇrebyteˇcn´ ych funkc´ı a nˇekter´e ˇca´sti k´odu inovuji. Nakonec implementuji nov´ y autentizaˇcn´ı syst´em a dalˇs´ı poˇzadovan´e funkce. Pˇred pˇred´an´ım program d˚ ukladnˇe otestuji. V r´amci pˇred´an´ı budu zmˇeny prezentovat cel´emu QA oddˇelen´ı Kerio Technologies s.r.o.. Vzhledem k tomu, ˇze rozsah zmˇen je pomˇernˇe velk´ y, program pˇred´am a nasad´ım ve dvou iterac´ıch.
1
2 Problematika testov´an´ı 2.1
Testov´ an´ı obecnˇ e
Hlavn´ı myˇslenkou testov´an´ı je zjiˇst’ov´an´ı kvality testovan´eho produktu. V naˇsem pˇr´ıpadˇe je on´ım produktem software. D˚ uvod, proˇc se zaj´ım´ame o testov´an´ı, je jednoduch´ y. U softwaru nem˚ uˇzeme nikdy dos´ahnout perfektn´ıho v´ yvojov´eho cyklu. Abychom se mu mohli alespoˇ n pˇribl´ıˇzit, je bezpodm´ıneˇcnˇe nutn´e, aby byl jak´ ykoliv produkt d˚ ukladnˇe testov´an. Bohuˇzel i sebelepˇs´ı testovac´ı strategie m´am nem˚ uˇze zaruˇcit, ˇze v´ ysledn´ y produkt bude bezchybn´ y. Pokud ovˇsem testov´an´ı vˇenujeme dostatek ˇcasu, m˚ uˇzeme mnoˇzstv´ı chyb v´ yraznˇe omezit. Nyn´ı nast´av´a probl´em. Mus´ıme si rozvrhnout testov´an´ı tak, abychom naˇsli co nejv´ıce chyb za co nejmenˇs´ı mnoˇzstv´ı ˇcasu viz obr. 2.1.
Množství chyb
Optimální Příliš málo testů
Příliš mnoho testů
Počet provedených testů
Obr´azek 2.1: Optim´aln´ı hladina v softwarov´em testov´an´ı.[15]
2
Problematika testov´an´ı
Testov´an´ı obecnˇe
Náklady na opravu
ˇ ım pozdˇeji se chyba projev´ı, t´ım obt´ıˇznˇejˇs´ı a n´akladnˇejˇs´ı b´ C´ yv´a jej´ı odstranˇen´ı viz obr. 2.2. Z tohoto d˚ uvodu prob´ıh´a testov´an´ı jiˇz ve velice ran´ ych etap´ach v´ yvoje.
Hromadná produkce
Nasazení Stabilizace Programování Návhr Výrobní cyklus
Obr´azek 2.2: N´aklady na opravu chyby v pr˚ ubˇehu v´ yrobn´ıho cyklu [16]. Produkt se z pravidla pˇredkl´ad´a k testov´an´ı s kaˇzdou novou verz´ı. Ta m˚ uˇze b´ yt napˇr´ıklad noˇcn´ı, hodinov´a ˇci inkrement´aln´ı. Proto je velk´e mnoˇzstv´ı chyb odhaleno velice brzy. Bohuˇzel je dalˇs´ı velk´e mnoˇzstv´ı chyb, kter´e se projev´ı aˇz v pozdˇejˇs´ı etapˇe v´ yvoje. Je to zp˚ usobeno hlavnˇe architektonick´ ymi nedostatky, lidsk´ ymi chybami, mnoˇzstv´ım k´odu a jeho integrac´ı do jednoho celku.
3
Problematika testov´an´ı
2.2 2.2.1
Role testov´an´ı ve v´yvoji Softwaru
Role testov´ an´ı ve v´ yvoji Softwaru Agiln´ı metodiky
Kerio Technologies s.r.o. za dobu sv´e existence vyzkouˇselo ˇradu metodik v´ yvoje softwaru. Nejl´epe se osvˇedˇcily agiln´ı metodiky a ty nyn´ı vyuˇz´ıv´a k v´ yvoji sv´ ych produkt˚ u. Oproti tradiˇcn´ım metodik´am, nem´a program pevnˇe zadanou funkcionalitu, kter´a se mus´ı dodrˇzet nehledˇe na zdroje a ˇcas. Hlavn´ı jsou ˇcas a zdroje, od kter´ ych se odv´ıj´ı, kolik funkcionality bude implementov´ano (viz obr. 2.3). Nehroz´ı tedy, ˇze by v dan´em term´ınu nebyl program hotov, ale sp´ıˇse nebude pokryta funkcionalita s niˇzˇs´ı prioritou. Kerio vyv´ıj´ı software v iterac´ıch s periodou pˇribliˇznˇe p˚ ul roku. Fixní
Funkcionalita
Zdroje
Čas
Proměnné
Zdroje
Čas
Funkcionalita
Agilní přístup
Tradiční přístup
Obr´azek 2.3: Rozd´ıl v pl´anov´an´ı mezi klasick´ ym a agiln´ım pˇr´ıstupem [13].
4
Problematika testov´an´ı
Role testov´an´ı ve v´yvoji Softwaru
Agiln´ı metodiky jsou zaloˇzeny na iterac´ıch. K pochopen´ı, jak vlastnˇe funguj´ı, n´am poslouˇz´ı n´asleduj´ıc´ı postup: • Nult´a iterace: Z´aklad aplikace 1. Anal´ yza probl´emu. 2. Naprogramov´an´ı z´akladn´ı kostry programu. 3. Hlavn´ım c´ılem je hotov´ y kus aplikace, kter´ y lze demonstrovat. • Prvn´ı aˇz N-t´a iterace: V´ yvoj aplikace. 1. V´ ybˇer implementovan´e funkcionality a anal´ yza postupu. 2. Implementace. 3. Build, Testov´an´ı, Pˇredveden´ı. • Vyd´an´ı produktu. • Pˇri rozvoji ˇci u ´drˇzbˇe pokraˇcujeme d´ale v iterac´ıch stejnˇe jako ve v´ yvoji. Po kr´atk´em u ´vodu do agiln´ıch metodik si nyn´ı pojd’me uk´azat jejich hlavn´ı v´ yhody: 1. Je dobˇre zn´amo, kolik pr´ace t´ ym zvl´adne v jedn´e iteraci udˇelat a d´ıky tomu lze ˇr´ıdit rychlost t´ ymu. 2. Moˇznost zmˇeny zad´an´ı za bˇehu. 3. Rychl´e doruˇcen´ı produktu k z´akazn´ıkovi. 4. Po kaˇzd´e iteraci m´ame potenci´alnˇe vydateln´ y produkt.
5
Problematika testov´an´ı
2.2.2
Role testov´an´ı ve v´yvoji Softwaru
Scrum obecnˇ e
Existuje mnoho agiln´ıch metodik, protoˇze ale popis vˇsech nen´ı c´ılem t´eto pr´ace, uvedu pouze metodiku Scrum, kter´a je firmou Kerio Technologies s.r.o. aktivnˇe vyuˇz´ıv´ana. Je to opˇet iterativn´ı v´ yvoj rozdˇelen´ y do jednotliv´ ych f´az´ı naz´ yvan´ ych sprinty. Ty trvaj´ı v pr˚ umˇeru 2-4 t´ ydny. Na kaˇzdodenn´ıch sch˚ uzk´ach se aktualizuje postup na projektu, dokonˇcen´e u ´koly, n´asleduj´ıc´ı u ´koly a pˇr´ıpadn´e probl´emy. Nespornou v´ yhodou scrumu je tak´e schopnost samostatn´e organizace t´ ymu. Manaˇzerovi tedy v´ yraznˇe ubude pr´ace. A protoˇze ke scrumu nen´ı potˇreba ˇza´dn´ y dodateˇcn´ y tr´enink, je velice jednoduch´e s n´ım zaˇc´ıt. Pˇribliˇzn´a funkˇcnost scrumu viz obr. 2.4.
Obr´azek 2.4: Jak funguje Scrum [10].
6
Problematika testov´an´ı
Role testov´an´ı ve v´yvoji Softwaru
Abychom mohli se scrumem zaˇc´ıt, je tˇreba v t´ ymu urˇcit n´asleduj´ıc´ı role: • Product owner - Zodpov´ıd´a za priority, za to, co se bude v pˇr´ıˇst´ım sprintu implementovat, a urˇcuje implementaˇcn´ı detaily. • Scrum Master - Star´a se o veˇsker´e potˇreby t´ ymu a z´aroveˇ n v´ yvoj´aˇre ˇr´ıd´ı. Nemˇel by ovˇsem b´ yt program´ator. • Development Team - Jedn´a se o v´ yvoj´aˇre a testery. • Customer - Z´akazn´ık ovlivˇ nuje priority a slouˇz´ı jako prvotn´ı impulz a zpˇetn´a vazba z´aroveˇ n. D´ale budeme potˇrebovat zav´est artefakty: • Product backlog - Je to seznam veˇsker´ ych u ´loh ˇrazen´ y podle priorit, kter´ y je pro produkt udrˇzov´an. M´a ho na starosti Product owner. ´ • Sprint backlog - Je to seznam veˇsker´ ych u ´loh pro dan´ y sprint. Ulohy se d´ale dˇel´ı na d´ılˇc´ı pod´ ulohy. Je dobrou prax´ı, ˇze tyto pod´ ulohy maj´ı rozsah 4-16 hodin[10]. Sprint backlog m´a na starosti v´ yvojov´ y t´ ym a b´ yv´a ˇcasto realizov´an jako scrumboard viz obr. 2.5.
7
Problematika testov´an´ı
Role testov´an´ı ve v´yvoji Softwaru
Obr´azek 2.5: Pˇr´ıklad scrumboardu v Kerio Technologies [16].
2.2.3
Testov´ an´ı ve scrumu
Vzhledem k povaze t´eto pr´ace n´as bude ve scrumu nejv´ıce zaj´ımat role testera. Ten je souˇc´ast´ı v´ yvojov´eho t´ ymu a m´a tyto povinnosti: ´ castn´ı se vˇsech sch˚ 1. Uˇ uzek t´ ymu. 2. Spolupracuje na designu aplikace. 3. Vypracov´av´a testy, kter´ ymi aplikace mus´ı proj´ıt. Tyto testy budou nad´ale vyuˇz´ıv´any i v n´asleduj´ıc´ıch sprintech a zajiˇst’uj´ı celkovou integritu aplikace. 4. Mus´ı ovˇeˇrit funkˇcnost vˇsech funkcionalit implementovan´ ych ve sprintu. 5. Testuje se vˇzdy aktu´aln´ı build. 6. Nahlaˇsuje veˇsker´e chyby vˇcetnˇe ˇc´ısla buildu. Z charakteru v´ yˇctu je vidˇet, ˇze vˇetˇsina z tˇechto povinnost´ı je pouze organizaˇcn´ı. Rozebereme pro n´as zaj´ımav´ y bod 3.
8
Problematika testov´an´ı
Role testov´an´ı ve v´yvoji Softwaru
Nejd˚ uleˇzitˇejˇs´ı je stanovit si v´ ystupn´ı krit´eria, za kter´ ych m˚ uˇzeme test povaˇzovat za u ´spˇeˇsn´ y. Ty vych´az´ı ze specifikac´ı nebo poˇzadavk˚ u na software. Na prvn´ı pohled by se mohlo zd´at v´ yhodn´e vymezen´ı konkr´etn´ıho v´ ystupu programu. Bohuˇzel ˇcasto existuje mnoho cest jak dos´ahnout c´ıle a uˇzivatel si m˚ uˇze vybrat jinou neˇz n´ami testovanou. Proto zavedeme testov´an´ı, kter´e toto zohledn´ı a bude vytv´aˇret r˚ uzn´e cesty pr˚ uchodem programu, tzv. testovac´ı pˇr´ıpady. Ty mohou b´ yt navrˇzeny samotn´ ym testerem nebo na z´akladˇe konkr´etn´ıho pˇr´ıbˇehu uˇzivatele. Dalˇs´ı v´ yhodou tohoto postupu je jeho jednoduchost. Nen´ı potˇreba ˇz´adn´a rozs´ahl´a dokumentace ani u ´drˇzba a nav´ıc zv´ yˇs´ıme celkovou flexibilitu testov´an´ı. Dalˇs´ı velice d˚ uleˇzitou vlastnost´ı testu je jednoznaˇcnost. U kaˇzd´eho testu bychom mˇeli b´ yt schopni urˇcit, zdali test dopadl ˇci nedopadl u ´spˇeˇsnˇe. Bohuˇzel nalezneme i pˇr´ıpady, kde jsou poˇzadavky na test z ˇca´sti nekompletn´ı. Zde se vyplat´ı vyuˇz´ıt naˇse nejzkuˇsenˇejˇs´ı testery. Ti dostanou za u ´kol program prozkoumat. T´ım se program nauˇc´ı, pak vytvoˇr´ı testy a provedou je.
9
Problematika testov´an´ı
2.3
Typy testov´an´ı
Typy testov´ an´ı
2.3.1
Manu´ aln´ı testov´ an´ı
Obecn´ y popis V pˇr´ıpadˇe manu´aln´ıho testov´an´ı jsou jednotliv´e testovac´ı sc´en´aˇre vykon´avan´e ˇclovˇekem. Pro testera jsou ˇcasovˇe n´aroˇcn´e, zdlouhav´e a u ´navn´e. S t´ım je spojena dalˇs´ı niˇzˇs´ı spolehlivost test˚ u kv˚ uli pˇr´ıtomnosti lidsk´eho faktoru. Dalˇs´ı nev´ yhodou je nutnost velk´ ych investic do lidsk´ ych zdroj˚ u, kter´e b´ yvaj´ı pˇri opakovan´ ych testech vyˇsˇs´ı neˇz investice do v´ ypoˇcetn´ıch zdroj˚ u. V´ yhodou manu´aln´ıho testov´an´ı je mnohem vyˇsˇs´ı flexibilita. Dalˇs´ı nepopiratelnou v´ yhodou je lidsk´ y cit pro vyhodnocen´ı spr´avn´eho ˇci ˇspatn´eho v´ ysledku. Hlavnˇe v ran´e ˇc´asti v´ yvoje, kdy se aplikace velice ˇcasto mˇen´ı, je manu´aln´ı testov´an´ı nejvhodnˇejˇs´ı.
V praxi Kaˇzd´ y z produkt˚ u vyv´ıjen´ ych Kerio Technologies m´a na st´alo v t´ ymu minim´alnˇe jednoho ˇclena z oddˇelen´ı QA. Jeho/Jejich starost´ı je testov´an´ı aktu´alnˇe implementovan´ ych funkcionalit. V okamˇziku, kdy produkt dospˇeje do st´adia stabilizace, b´ yvaj´ı doˇcasnˇe k testov´an´ı pˇridˇeleni dalˇs´ı ˇclenov´e QA.
10
Problematika testov´an´ı
2.3.2
Typy testov´an´ı
Automatick´ e testov´ an´ı
Obecn´ y popis Automatick´e testov´an´ı je ve vˇetˇsinˇe pˇr´ıpad˚ u znatelnˇe rychlejˇs´ı neˇz manu´aln´ı. Nevyˇzaduje tolik investic do lidsk´ ych zdroj˚ u. To se projev´ı hlavnˇe pokud m´ame mnoho r˚ uzn´ ych prostˇred´ı, pro kter´a je program vyv´ıjen. Automatick´e testy je zvl´adnou pokr´ yt vˇsechny souˇcasnˇe. Z´aroveˇ n funguj´ı vˇzdy stejnˇe, a je tedy eliminov´an lidsk´ y faktor (v pˇr´ıpadˇe, ˇze je test naps´an spr´avnˇe). Za nev´ yhodu automatick´ ych test˚ u m˚ uˇzeme povaˇzovat ˇcasovou n´aroˇcnost na v´ yvoj au ´drˇzbu. Bohuˇzel ani automatick´e testy nemohou testovat vˇsechno, a tak je nelze pouˇz´ıvat jako jedinou metodu testov´an´ı. Automatick´e testy najdou nejˇcastˇeji vyuˇzit´ı v pozdˇejˇs´ıch etap´ach testov´an´ı, kdy se funkcionalita programu pˇr´ıliˇs nemˇen´ı. D˚ uvodem je niˇzˇs´ı reˇzie na jejich v´ yvoj a u ´drˇzbu.
V praxi Prvn´ı lini´ı testov´an´ı je automatick´ y pˇreklad produktu kaˇzd´ y den po p˚ ulnoci. D´ıky tomu jsou odhaleny kritick´e chyby br´an´ıc´ı pˇrekladu. O infrastrukturu automatick´ ych test˚ u a sd´ılen´e ˇc´asti test˚ u se star´a t´ ym Autotest, kter´ y spad´a pod t´ ym QA. Samotn´ y v´ yvoj test˚ u si n´aslednˇe produktov´e t´ ymy zajiˇst’uj´ı samy. Testy jsou automaticky spuˇstˇeny kaˇzd´ y den po u ´spˇeˇsn´em pˇrekladu produktu a d´ale kdykoliv na poˇza´d´an´ı.
11
Problematika testov´an´ı
2.4
Metody testov´an´ı
Metody testov´ an´ı
Existuj´ı r˚ uzn´e metody testov´an´ı softwaru. V t´eto ˇca´sti ale uvedu pouze tˇri z´akladn´ı. Tˇemi jsou black, white a gray box testov´an´ı [12].
2.4.1
Black box testov´ an´ı
Kaˇzd´ y test je navrˇzen bez znalosti jak´ ychkoliv vnitˇrn´ıch struktur programu. Ani tester nem´a znalosti architektury ˇci zdrojov´ ych k´od˚ u. Tomuto postupu se ˇr´ık´a Black-box testov´an´ı viz obr. 2.6.
Input
Blackbox
Output
Obr´azek 2.6: Black-box testov´an´ı [2].
2.4.2
White box testov´ an´ı
Testov´an´ı je detailn´ı pr˚ uzkum vnitˇrn´ı logiky a struktury zdrojov´ ych k´od˚ u. Aby mohl tester zaˇc´ıt s t´ımto testov´an´ım, potˇrebuje znalost fungov´an´ı architektury a zdrojov´ ych k´od˚ u. Pr˚ uzkumem k´odu pot´e zjiˇst’uje, kter´a ˇca´st funguje nevhodnˇe.
2.4.3
Gray box testov´ an´ı
Testov´an´ı prob´ıh´a s omezenou znalost´ı architektury a zdrojov´ ych k´od˚ u. Oproti black box testov´an´ı, kde tester mohl testovat pouze uˇzivatelsk´e rozhran´ı aplikace, u grey box testov´an´ı je moˇzn´e kontrolovat i n´avrhov´e dokumenty ˇci datab´azi. D´ıky tˇemto znalostem m˚ uˇze tester sn´aze pˇripravovat data i testovac´ı sc´en´aˇre. 12
Problematika testov´an´ı
2.5
Typy test˚ u
Typy test˚ u
Vzhledem k tomu, ˇze v´ yvoj SW zpravidla prob´ıh´a v nˇekolika f´az´ıch, je zˇrejm´e, ˇze v jednotliv´ ych f´az´ıch budeme prov´adˇet rozd´ıln´e typy test˚ u. Jejich rozdˇelen´ı lze dobˇre vystihnout takto:
2.5.1
Unit testy
Kaˇzd´ y v´ yvoj´aˇr by si mˇel svou pr´aci vˇzdy s´am otestovat. Uˇz od sam´eho zaˇc´atku m˚ uˇze eliminovat velk´e mnoˇzstv´ı chyb pouˇzit´ım unit test˚ u. Ty zahrnuj´ı n´astroje, metodiky a ˇcinnosti, jejichˇz c´ılem je ovˇeˇrov´an´ı spr´avn´e funkˇcnosti d´ılˇc´ıch ˇca´st´ı neboli jednotek zdrojov´eho k´odu. V r´amci testov´an´ı by se mˇel v´ yvoj´aˇr zamˇeˇrit i na to, jestli pouˇz´ıv´a vhodn´e algoritmy, n´avrhov´e vzory, datov´e typy atd.
2.5.2
Funkˇ cn´ı testy
Testy jsou prov´adˇen´e na stranˇe dodavatele. Aplikace nemus´ı b´ yt testov´ana na plnˇe integrovan´em prostˇred´ı. Jsou vhodn´e pro testov´an´ı jednotliv´ ych funkˇcn´ıch ˇc´ast´ı, ale nezaruˇcuj´ı funkci celku jako takov´eho.
2.5.3
Integraˇ cn´ı testy
Integraˇcn´ı testy zjiˇst’uj´ı, zdali vˇsechny souˇca´sti programu spolupracuj´ı tak, jak maj´ı. Jsou zvl´aˇstˇe uˇziteˇcn´e pro modul´arn´ı programov´an´ı. M˚ uˇzeme je d´ale rozdˇelit takto:
13
Problematika testov´an´ı
Typy test˚ u
Regresn´ı testy Ovˇeˇruj´ı, zda se v d˚ usledku zmˇeny neobjevila chyba tam, kde to pˇredt´ım jiˇz bylo v poˇra´dku. Jsou ide´aln´ım kandid´atem pro automatizaci.
Smoke testy Jedn´a se o kr´atk´ y test, kter´ y slouˇz´ı jako rychl´e ovˇeˇren´ı, zda je vyv´ıjen´a aplikace pˇripravena pro dalˇs´ı f´azi testov´an´ı. Obvykle se provede jen jednoduch´e ovˇeˇren´ı, ˇze vˇsechny ˇca´sti aplikace jsou implementov´any, nainstalov´any a spuˇstˇeny. Jsou ide´aln´ı pro testov´an´ı z´akladn´ıch funkc´ı softwaru. Protoˇze se pˇr´ıliˇs ˇcasto nemˇen´ı, jsou ide´aln´ı pro automatizaci.
2.5.4
Syst´ emov´ e testy
Bˇehem tˇechto test˚ u je aplikace ovˇeˇrov´ana jako funkˇcn´ı celek. Tyto testy jsou pouˇz´ıv´any v pozdˇejˇs´ıch f´az´ıch v´ yvoje. Ovˇeˇruj´ı aplikaci z pohledu z´akazn´ıka. Vˇetˇsinou slouˇz´ı jako v´ ystupn´ı kontrola softwaru.
Recovery testy ´ celem je otestovat, jak rychle a zda se v˚ Uˇ ubec produkt vzpamatuje po p´adu syst´emu, HW chybˇe ˇci jin´e neoˇcek´avan´e ud´alosti.
Bezpeˇ cnostn´ı testy Odhaluj´ı, jak a zda se v˚ ubec syst´em chr´an´ı pˇred neautorizovan´ ym pˇr´ıstupem. Dalˇs´ı moˇzn´e funkce jsou i nalezen´ı neˇza´douc´ıho k´odu, bezpeˇcnostn´ıch chyb nebo zranitelnost´ı.
14
Problematika testov´an´ı
Typy test˚ u
Z´ atˇ eˇ zov´ e testov´ an´ı Testov´an´ı nezahrnuje pouze funkˇcnost, ale tak´e to jak se program bude chovat v extr´emn´ıch situac´ıch. K tomu n´am pom˚ uˇze z´atˇeˇzov´e testov´an´ı, kde budeme testovat stabilitu v n´asleduj´ıc´ıch situac´ıch: • Zat´ıˇzen´ı velk´ ym mnoˇzstv´ım informac´ı, at’ uˇz n´arazovˇe nebo dlouhodobˇe. • Spouˇstˇen´ı velk´eho mnoˇzstv´ı kopi´ı programu.
V´ ykonnostn´ı testy Pˇri tomto testu syst´em odol´av´a velk´emu poˇctu r˚ uzn´ ych poˇzadavk˚ u a sleduje se, jak´a je jeho odezva, resp. jak je ovlivnˇen v´ ykon aplikace, napˇr. rychlost odpovˇed´ı na jednotliv´e poˇzadavky. T´ım lze vysledovat, kter´ ym ˇc´astem syst´emu je tˇreba vˇenovat vˇetˇs´ı pozornost, a tˇech pak prov´est pˇr´ısluˇsn´e optimalizace.
Instalaˇ cn´ı testy Tyto testy slouˇz´ı ke kontrole hladk´eho pr˚ ubˇehu instalace, odinstalace a pˇrechodu na novˇejˇs´ı verzi softwaru.
15
Problematika testov´an´ı
2.5.5
Typy test˚ u
Akceptaˇ cn´ı testy
Akceptaˇcn´ı testy slouˇz´ı k ovˇeˇren´ı funkˇcnosti pˇred nasazen´ım do ostr´eho provozu. Pokud aplikace u ´spˇeˇsnˇe projde akceptaˇcn´ımi testy je pˇripravena k vyd´an´ı. V t´eto f´azi byla jiˇz naprogramov´ana veˇsker´a funkcionalita a zb´ yv´a program doladit. Jak´akoliv dalˇs´ı vylepˇsen´ı se uˇz nedˇelaj´ı. Z hlediska v´ yvoje lze stabilizaci produktu rozdˇelit do f´az´ı viz obr. 2.7. Akceptaˇcn´ı testy obvykle prob´ıhaj´ı od bety. Pr´avˇe akceptaˇcn´ımi testy se prim´arnˇe zab´ yv´a aplikace TestRunner, kter´e se budu d´ale vˇenovat v kapitole 3.
Pre-alpha aka development releases nightly builds
Alpha Beta Release Candidate aka gamma delta
Obr´azek 2.7: Stabilizace produktu [8].
16
Problematika testov´an´ı
Typy test˚ u
Pre-alpha Pˇredt´ım, neˇz m˚ uˇze produkt postoupit do alpha verze, je tˇreba ovˇeˇrit, zdali jsou opraveny vˇsechny nahl´aˇsen´e chyby. Vˇsechny testovac´ı pˇr´ıpady jsou sdruˇzeny do skupin. Z tˇech jsou d´ale vytv´aˇreny protokoly, kde je jednoznaˇcnˇe vidˇet, zdali produkt proˇsel ˇci nikoliv. Pokud je produkt vyv´ıjen pro velk´e mnoˇzstv´ı platforem, st´av´a se kompletn´ı testov´an´ı nere´aln´ ym. M˚ uˇzeme proto testy na nˇekter´ ych z nich omezit.
Alpha V t´eto f´azi je produkt pˇripraven k prvn´ımu pouˇzit´ı, ovˇsem st´ale m˚ uˇze b´ yt velice nestabiln´ı. P´ady aplikace, pˇr´ıpadnˇe ztr´ata dat, nemus´ı b´ yt neobvykl´e. Proto je vyuˇz´ıv´an pouze zamˇestnanci spoleˇcnosti. Veˇrejnosti je zpravidla nepˇr´ıstupn´ y.
Beta Prototyp fin´aln´ıho produktu. Jeˇstˇe st´ale m´a mnoho chyb a m˚ uˇze m´ıt probl´emy s v´ ykonnost´ı. Je pˇr´ıstupn´ y omezen´emu okruhu obchodn´ıch partner˚ u nebo veˇrejnosti. T´ım se z nˇej st´av´a prvn´ı verze produktu dostupn´a mimo v´ yvojovou firmu. Nespornou v´ yhodu je mnohem vˇetˇs´ı z´akladna tester˚ u. Ta je schopn´a naj´ıt to, co relativnˇe mal´ y testovac´ı t´ ym neodhal´ı.
Release candidate Release candidate (RC) je beta verze, kter´a m´a potenci´al b´ yt fin´aln´ım produktem, a pokud se neobjev´ı v´ yrazn´a chyba, tak se j´ım tak´e stane. RC uˇz ˇ b´ yv´a pˇr´ıstupn´ y ˇsirok´e veˇrejnosti. Casto tak slouˇz´ı jako reklamn´ı produkt v´ab´ıc´ı potenci´aln´ı z´akazn´ıky.
17
Problematika testov´an´ı
2.6
Chyby
Chyby
Hlavn´ım u ´kolem testera je hledat chyby a je tedy u ´spˇeˇsn´ y pokud chybu nalezne. U chyby nalezen´e pˇri v´ yvoji softwaru hodnot´ıme z´avaˇznost a prioritu.
2.6.1
Z´ avaˇ znost
Typ z´avaˇznosti je definov´an testerem na z´akladˇe d˚ uleˇzitosti postiˇzen´e funkcionality. Odr´aˇz´ı, jak kritick´a je chyba pro cel´ y produkt.
2.6.2
Priorita
Priorita urˇcuje, jak rychle m´a b´ yt chyba opravena. Je u ´zce spojena s pl´anov´aˇ n´ım ˇreˇsen´ı probl´em˚ u. Casto je zaloˇzena na poˇzadavc´ıch a pˇra´n´ıch z´akazn´ık˚ u. ˇ ım vyˇsˇs´ı je priorita, t´ım rychlejˇs´ı je oprava chyby. C´
Priorita Kritická
Základní funkce programu nefunguje.
Nízká
Závažnost
Urgentní
Logo společnosti má špatnou barvu.
Nízká Program funguje stabilně pro maximálně 1000 uživatelů. Aktuální počet uživatelů je 500.
Špatně zarovnaný odstavec v textu nápovědy.
Obr´azek 2.8: Priorita vs z´avaˇznost chyby.
18
Problematika testov´an´ı
2.6.3
Chyby
ˇ Zivotn´ ı cyklus chyby
Kaˇzd´a chyba proch´az´ı za sv˚ uj ˇzivot r˚ uzn´ ymi stavy. Tyto stavy pˇrehlednˇe zn´azorˇ nuje n´asleduj´ıc´ı obr´azek pˇrevzat´ y z dokumentace k Bugzille [3] ke kter´emu nen´ı potˇreba ˇza´dn´ y koment´aˇr.
ˇ Obr´azek 2.9: Zivotn´ ı cyklus chyby podle Bugzilly [3].
19
3 TestRunner 3.1
Obecnˇ e
Vˇsechny teoretick´e jsou nyn´ı vysvˇetleny, pojd’me se tedy pod´ıvat pˇr´ımo na aplikaci TestRunner. TestRunner pokr´ yv´a z´akladn´ı potˇreby testov´an´ı v QA Kerio Technologies s.r.o.. Byl vytvoˇren pro tyto u ´ˇcely: 1. Spr´avu testovac´ıch pˇr´ıpad˚ u a test˚ u. 2. Poskytnout stavy a v´ ysledky test˚ u cel´e firmˇe. 3. Zefektivnit testovac´ı proces. Prvn´ı verze byla u ´ˇcelovˇe vytvoˇrena pˇr´ımo firmou Kerio Technologies s.r.o. a to bez pˇredeˇsl´ ych dokument˚ u. Pozdˇeji byl TestRunner upravov´an podle poˇzadavk˚ u QA. Nejdˇr´ıve za pomoci vlastn´ıch zamˇestnanc˚ u a pozdˇeji i student˚ u ˇ ZCU. Od jeho vytvoˇren´ı ubˇehlo jiˇz nˇekolik let a za tu dobu k´od postupnˇe rostl a stal se ˇspatnˇe udrˇzovateln´ ym. Z´aroveˇ n z pˇredchoz´ıch verz´ı: 1. Z˚ ustaly chyby, kter´e je nutn´e opravit. 2. Urˇcit´e funkce nejsou nad´ale potˇreba. 3. Jin´e funkce je naopak potˇreba implementovat. M´ ym u ´kolem bude: 1. Implementace poˇzadovan´ ych funkc´ı. 2. Odstranˇen´ı pˇrebyteˇcn´ ych funkc´ı. 3. Oprava chyb.
20
TestRunner
3.2
Popis funkˇcnosti
Popis funkˇ cnosti
Z´akladn´ı popis funkcionality TestRunneru: Pro ˇcten´aˇre neznal´eho funkcionality TestRunneru doporuˇcuji nejdˇr´ıve d˚ ukladn´e prostudovan´ı uˇzivatelsk´e pˇr´ıruˇcky uveden´e v pˇr´ıloh´ach. Pˇr´ıruˇcka byla vytvoˇrena jiˇz dˇr´ıve pro potˇreby QA Kerio Technologies s.r.o.. a v r´amci t´eto pr´ace proˇsla kompletn´ı reviz´ı.
3.3
Specifikace poˇ zadavk˚ u
V n´asleduj´ıc´ıch bodech se budu bl´ıˇze vˇenovat konkr´etn´ım poˇzadavk˚ um na moj´ı pr´aci.
3.3.1
Dashboard
• Na u ´vodn´ı str´ance TestRunneru pˇridejte grafick´ y pˇrehled aktu´alnˇe bˇeˇz´ıc´ıch test˚ u. • V pˇrehledu bude vidˇet, kolik pr´ace je z kaˇzd´eho testu hotovo a kolik zb´ yv´a. • Z pˇrehledu se bude moˇzn´e kliknut´ım dostat na patˇriˇcn´ y test.
3.3.2
Redukce pr´ av
• Souˇcasn´ y TestRunner m´a nˇekolik rol´ı: ’guest’, ’tester’, ’autotester’, ’translator’, ’project manager’, ’administrator’. • C´ılem je zredukovat pr´ava na: ’guest’, ’tester’, ’administr´ator’. • Role ’guest’ bude jako nepˇrihl´aˇsen´ y uˇzivatel. 21
TestRunner
Specifikace poˇzadavk˚ u
• Role ’tester’ pˇrevezme veˇsker´a pr´ava pro pˇrihl´aˇsen´e uˇzivatele mimo administr´atora.
3.3.3
Z´ avislost testovac´ıch pˇ r´ıpad˚ u na platformˇ e
• Nˇekter´e testovac´ı pˇr´ıpady ned´avaj´ı na nˇekter´ ych platform´ach smysl mˇely by b´ yt sv´az´any s konkr´etn´ı platformou. • Vytvoˇrit strom z´avislost´ı testovac´ıch pˇr´ıpad˚ u na platform´ach.
3.3.4
Vyhled´ av´ an´ı
• Do pohledu ’Create or Edit Test Cases’ dodˇelat stejn´e vyhled´av´an´ı, jako uˇz je hotov´e v pohledu ’Test Case Description’. • Pokud to p˚ ujde s minim´aln´ımi n´aklady, tak tot´eˇz i do pohled˚ u ’AutoTest Description’ a ’Translate Test Case Description’.
3.3.5
Dvojjazyˇ cnost
• Odstranˇen´ı veˇsker´e funkcionality ˇcesko-anglick´e dvojjazyˇcnosti, ponech´ana bude pouze angliˇctina. • Aktu´aln´ı popisy test˚ u mus´ı b´ yt zachov´any a budou slouˇceny do jednoho popisu.
3.3.6
Promˇ enliv´ a velikost lev´ eho panelu
• Lev´ y panel by mˇel m´ıt volitelnou velikost. • Pˇridat moˇznost panel kompletnˇe skr´ yt.
22
TestRunner
3.3.7
Specifikace poˇzadavk˚ u
Bugfix
• Poloˇzka ’Title’ (n´azev TestCase) je funkˇcnˇe omezena na cca 160 znak˚ u, po pˇrekroˇcen´ı pˇrestane fungovat navigaˇcn´ı strom v pohledu ’Create or Edit Test Cases’. • Nen´ı vidˇet, kdo nastavil ’Won’t test’. • Udˇelat souˇcty pr˚ umˇern´ ych ˇcas˚ u na u ´rovni kapitol. • Tlaˇc´ıtko ’Won’t test’ je vyˇsedl´e, pokud uˇz byl testovac´ı pˇr´ıpad testov´an. Tlaˇc´ıtko ale funguje. • Pokud je testovac´ı pˇr´ıpad ve stavu ’Won’t test’, tak jsou vyˇsedl´a tlaˇc´ıtka ’Send & Close’ a ’Add bug’. V tomto pˇr´ıpadˇe tlaˇc´ıtka nefunguj´ı v˚ ubec. • V pˇr´ıpadˇe, ˇze je nˇekter´ y testovac´ı pˇr´ıpad ve stavu ’Won’t test’, nemˇelo by to m´ıt vliv na stav, kter´ y je pro celou kapitolu. • Pokud je vyplnˇen pouze text v EN, nen´ı pak vidˇet v pohledu ’Test Case detail’ popis ˇza´dn´ y. • Pokud nastav´ım ’Won’t test’, mˇel by se uloˇzit tak´e tester˚ uv koment´aˇr, napˇr. proˇc to nechce testovat. To se nedˇeje a koment´aˇr se neukl´ad´a. • Manaˇzer koment´aˇr˚ u sk´aˇce na zaˇca´tek str´anky. Pˇri ’Edit testcase’ hlavn´ı str´anka pˇreskoˇc´ı na zaˇca´tek (a moˇzn´a se znovu naˇcte). D´av´a to smysl po u ´pravˇe kdy se m˚ uˇze seznam koment´aˇr˚ u zmˇenit, ale ne kdyˇz jdu teprve editovat koment´aˇr. • Manaˇzer koment´aˇr˚ u se po u ´pravˇe koment´aˇr˚ u vˇzdy vynuluje do ’Show New’, m´ısto aby se obnovil a drˇzel si nastaven´ı. • Zˇrejmˇe obr´acen´a logika tlaˇc´ıtek nebo ˇspatn´e poˇrad´ı akc´ı v manaˇzeru koment´aˇr˚ u, potvrzen´e ’Reject&Close’ neudˇel´a nic, odm´ıtnut´e to stejnˇe provede.
23
TestRunner
3.4
Aktu´aln´ı programov´e prostˇred´ı
Aktu´ aln´ı programov´ e prostˇ red´ı
Implementace TestRunneru bˇeˇz´ı na virtualizovan´em linuxov´em syst´emu CentOS ve verzi 5.5. Virtualizaci zajiˇst’uje komplexn´ı ˇreˇsen´ı od firmy VMware, Inc. K samotn´emu bˇehu aplikace jsou pak nutn´e tyto souˇc´asti: • Firebird ve verzi 1.5 [4] [11] • PHP ve verzi 5.1.6 [9] [1] • Plugin InterBase pro PHP ve verzi 15 Jako extern´ı zdroje na jin´ ych virtu´aln´ıch stroj´ıch jsou vyuˇz´ıv´any: • Intern´ı datab´aze Bugzilly [3], ke kter´e jsem vzhledem k citliv´e povaze informac´ı nemˇel pˇr´ıstup. • Autentizaˇcn´ı server Kerberos (viz [6]), ke kter´emu jsem pˇr´ıstup tak´e nemˇel. Vzhledem k tomu, ˇze vˇsechny souˇca´sti byly v dobˇe psan´ı t´eto pr´ace jiˇz pomˇernˇe zastaral´e, navrhl jsem kompletn´ı upgrade syst´emu. I pˇres firemn´ı politiku ”Co funguje, do toho se nesah´a”mi byl upgrade schv´alen.
24
TestRunner
3.5
Pˇrechod na nov´y operaˇcn´ı syst´em
Pˇ rechod na nov´ y operaˇ cn´ı syst´ em
Nejdˇr´ıve jsem syst´em zkouˇsel instalovat na sv´em notebooku. Protoˇze k p˚ uvodn´ımu operaˇcn´ımu syst´emu CentOS nebyly v´ yhrady, byl vyuˇzit znovu ve verzi 6.4 Bohuˇzel se mi d´ıky tomuto syst´emu dlouhou dobu nedaˇrilo propojit PHP server(apache) s datab´az´ı Firebird. Probl´em byl konkr´etnˇe ve funkci ’Security-Enhanced Linux’, kter´a neznala port, kter´ y datab´aze pouˇz´ıvala ke komunikaci. Bug byl sice nahl´aˇsen, ale opraven pro verzi 6.4 bohuˇzel nebyl. Po odhalen´ı t´eto chyby zb´ yvalo doˇcasnˇe odpojit Kerberos. Na z´akladˇe pozdˇejˇs´ı domluvy byl Kerberos odpojen natrvalo a m´ısto nˇeho vyuˇzita autentizace pˇres LDAP(viz [7]). Takto vytvoˇren´ y virtu´aln´ı stroj byl pot´e kompletnˇe pˇrenesen do jiˇz existuj´ıc´ı infrastruktury oddˇelen´ı QA.
3.6
Anal´ yza
Nejtˇeˇzˇs´ı ˇc´ast´ı pr´ace bylo proniknout do zdrojov´ ych k´od˚ u. Situaci jeˇstˇe zhorˇsoval fakt, ˇze na TestRunneru vˇzdy s odstupem ˇcasu pracoval nˇekdo jin´ y. T´ım se v projektu vystˇr´ıdalo velk´e mnoˇzstv´ı r˚ uzn´ ych pˇr´ıstup˚ u a ˇreˇsen´ı. Program pouˇz´ıv´a tˇr´ıvrstvou architekturu pro oddˇelen´ı dat, aplikaˇcn´ı logiky a grafick´eho uˇzivatelsk´eho rozhran´ı.
3.6.1
Datov´ a vrstva
Pro orientaci v datov´e vrstvˇe, jsem vypracoval DB model viz obr. 3.1. Tento model detailnˇe zachycuje vˇsechny tabulky i vazby.
25
TestRunner
Anal´yza
Obr´azek 3.1: DB model.
26
TestRunner
3.6.2
Anal´yza
Aplikaˇ cn´ı vrstva
Aplikaˇcn´ı vrstvu jsem chtˇel nejdˇr´ıve zmapovat pomoc´ı diagramu tˇr´ıd. To se uk´azalo, pro potˇreby t´eto pr´ace, jako velice nepˇrehledn´e ˇreˇsen´ı, a to hlavnˇe z d˚ uvodu velk´eho mnoˇzstv´ı tˇr´ıd(100+). Proto jsem vypracoval zjednoduˇsen´ y diagram tˇr´ıd, popisuj´ıc´ı pouze ty nejv´ yznamnˇejˇs´ı viz obr. 3.2.
• Tˇ r´ıda main.php Vstupn´ı br´ana pro uˇzivatele a skl´ad´a se main menu.php a main dashboard.php • Tˇ r´ıda main dashboard.php Zobrazuje pˇrehled prob´ıhaj´ıc´ıch test˚ u a kolik je z kaˇzd´eho testu hotovo. Umoˇzn ˇuje dostat se kliknut´ım na vybran´ y test. Testy lze tak´e ˇradit podle jm´ena, zb´ yvaj´ıc´ıho ˇcasu nebo zb´ yvaj´ıc´ıch procent. • Tˇ r´ıda main menu.php Rozcestn´ık pro vˇsechny funkce TestRunneru. • Tˇ r´ıda login.php Zobrazen´ı login dialogu a pˇr´ıpadn´ ych chybov´ ych hl´aˇsek. • Tˇ r´ıda logout.php Odhl´aˇsen´ı uˇzivatele. • Tˇ r´ıda autorization.php Ovˇeˇren´ı pr´av uˇzivatele. • Tˇ r´ıda task search.php Rychl´e vyhled´an´ı testu. • Tˇ r´ıda test view selection form.php Hlavn´ı obrazovka pro ’Test Results’ a ’Create Tests, Perform Tests’. ybˇer pro ’Test Results’ • Tˇ r´ıda test view detail form.php Detailn´ı v´ a ’Create Tests, Perform Tests’. • Tˇ r´ıda test bug selection form.php Hlavn´ı obrazovka pro ’Bug Statistics’. • Tˇ r´ıda test bug detail form.php Detailn´ı v´ ybˇer pro ’Bug Statistics’.
27
TestRunner
Anal´yza
• Tˇ r´ıda test description selection form.php Hlavn´ı obrazovka pro ’Test Case Description’. • Tˇ r´ıda test description detail form.php Detailn´ı v´ ybˇer pro ’Test Case Description’. • Tˇ r´ıda test autotest selection form.php Hlavn´ı obrazovka pro ’Autotest Description’. • Tˇ r´ıda test autotest detail form.php Detailn´ı v´ ybˇer pro ’Autotest Description’. • Tˇ r´ıda test manage selection form.php Hlavn´ı obrazovka pro ’Create or Edit Test Cases’. • Tˇ r´ıda test manage detail form.php Detailn´ı v´ ybˇer pro ’Create or Edit Test Cases’. • Tˇ r´ıda manage comments.php Hlavn´ı obrazovka pro ’Manage Comments’. • Tˇ r´ıda manage comments task.php • Tˇ r´ıda task comment window form.php • Tˇ r´ıda manage tr form.php Hlavn´ı obrazovka pro ’Manage TestRunner’. • Tˇ r´ıda detail users form.php Hlavn´ı obrazovka pro ’Users’. • Tˇ r´ıda edit users form.php Editace poloˇzek ’Users’. • Tˇ r´ıda detail platforms form.php Hlavn´ı obrazovka pro ’Platforms’. • Tˇ r´ıda edit platforms form.php Editace poloˇzek ’Platforms’. • Tˇ r´ıda detail dependencies form.php Hlavn´ı obrazovka pro ’Dependencies’.
28
TestRunner
Anal´yza
• Tˇ r´ıda edit dependencies form.php Editace poloˇzek ’Dependencies’. • Tˇ r´ıda detail components form.php Hlavn´ı obrazovka pro ’Components’. • Tˇ r´ıda edit components form.php Editace poloˇzek Components’. • Tˇ r´ıda detail versions form.php Hlavn´ı obrazovka pro ’Versions’. • Tˇ r´ıda edit versions form.php Editace poloˇzek ’Versions’. • Tˇ r´ıda detail products form.php Hlavn´ı obrazovka pro ’Products’. • Tˇ r´ıda edit products form.php Editace poloˇzek ’Products’. • Tˇ r´ıda detail logs form.php Hlavn´ı obrazovka pro ’Logs’.
29
30
test_manage_detail_form
test_manage_selection_form
Obr´azek 3.2: Zjednoduˇsen´ y popis tˇr´ıd edit_platforms_form edit_dependencies_form edit_components_form edit_versions_form edit_products_form
detail_platforms_form detail_dependencies_form detail_components_form detail_versions_form detail_products_form detail_logs_form
edit_users_form
detail_users_form
manage_tr_form
logout
autorization
login
task_comment_window_form
test_autotest_detail_form
test_autotest_selection_form
manage_comments_task
test_description_detail_form
test_description_selection_form
manage_comments
test_bug_detail_form
task_search
test_bug_selection_form
main_dashboard test_view_detail_form
main
test_view_selection_form
main_menu
TestRunner Anal´yza
TestRunner
3.7
Oprava chyb
Oprava chyb
V t´eto ˇc´asti se jednalo pˇredevˇs´ım o chyby, kter´e vznikly v nov´e funkcionalitˇe posledn´ı verze. Vˇsechny byly postupnˇe opraveny. Jejich opravou jsem nav´ıc z´ıskal jeˇstˇe hlubˇs´ı znalost k´odu. Nyn´ı uvedu struˇcn´ y pˇrehled:
3.7.1
Tlaˇ c´ıtka Won’t test a Reset
Tato tlaˇc´ıtka jsou souˇc´ast´ı detailu testovac´ıho pˇr´ıpadu. Pro bliˇzˇs´ı popis doporuˇcuji prostudov´an´ı kapitoly 6 v uˇzivatelsk´e pˇr´ıruˇcce.
1. Ukl´adaj´ı, kdo je nastavil. 2. Ukl´adaj´ı tester˚ uv koment´aˇr. 3. Nefunguj´ı, kdyˇz jsou vyˇsedl´a. 4. Jejich funkci spr´avnˇe indikuj´ı i ikony pro stav cel´e kapitoly.
3.7.2
Manaˇ zer koment´ aˇ r˚ u
Popis manaˇzera koment´aˇr˚ u je uveden v uˇzivatelsk´e pˇr´ıruˇcce kapitola 12.
1. Nenaˇc´ıt´a se znovu pˇri kliknut´ı na edit. 2. Pˇri zmˇenˇe se obnov´ı, ale drˇz´ı zvolen´a nastaven´ı. 3. Stisk tlaˇc´ıtka tlaˇc´ıtko nikam neposouv´a. 4. Nefunkˇcn´ı potvrzuj´ıc´ı dialog jsem odstranil.
31
TestRunner
3.7.3
Odebr´an´ı nadbyteˇcn´ych funkc´ı
Ostatn´ı
1. Poloˇzce Title v test casu jsem zvˇetˇsil velikost. 2. Ikony jsem upravil na transparentn´ı. 3. Vyhled´av´an´ı uˇz nem´a zbyteˇcnˇe agresivn´ı ˇcervenou barvu pˇri ne´ uspˇechu. 4. Upravil jsem nˇekter´e dotazy do Firebirdu kv˚ uli pˇrechodu na novou verzi.
3.8
Odebr´ an´ı nadbyteˇ cn´ ych funkc´ı
V r´amci zajiˇstˇen´ı budouc´ı vitality TestRunneru bylo tˇreba odebrat nadbyteˇcn´e funkce.
3.8.1
Zruˇ sen´ı dvojjazyˇ cnosti
Postupem ˇcasu se pro zamˇestnance spoleˇcnosti Kerio stala angliˇctina standardem. V tu chv´ıli se ze zajiˇst’ov´an´ı dvojjazyˇcnosti stala zbyteˇcn´a reˇzie, kter´a mus´ı b´ yt odstranˇena. Bohuˇzel byla ze sv´e podstaty v programu pomˇernˇe pevnˇe zakoˇrenˇena a jej´ı odstranˇen´ı vyˇzadovalo rozs´ahl´ y pr˚ uzkum k´odu i d˚ ukladn´e testov´an´ı. Skoro na kaˇzd´em z pˇriloˇzen´ ych obr´azk˚ u m˚ uˇzeme nal´ezt nˇekterou ze souˇc´ast´ı t´eto funkcionality. Konkr´etnˇe se jedn´a o poloˇzku Translate Test Case Description viz obr. 3.3, kter´a zajiˇst’ovala funkcionalitu pro pˇrekladatele. D´ale se jedn´a o vlajeˇcky pro pˇrep´ın´an´ı popis˚ u viz obr. 3.11 a 3.5. Posledn´ım ilustraˇcn´ım pˇr´ıkladem je poloˇzka translated a dvoj´ı popis test casu viz obr. 3.9. Za zm´ınku jeˇstˇe napˇr´ıklad stoj´ı zobrazov´an´ı ikon u nepˇreloˇzen´ ych testovac´ıch pˇr´ıpad˚ u pˇr´ımo ve stromu v lev´e ˇca´sti, kter´e na obr´azc´ıch nen´ı vidˇet nebo tak´e jazykov´e preference pro kaˇzd´eho uˇzivatele.
32
TestRunner
3.8.2
Odebr´an´ı nadbyteˇcn´ych funkc´ı
Redukce uˇ zivatelsk´ ych rol´ı
Vzhledem k tomu, ˇze je vˇetˇsinou ke kaˇzd´emu t´ ymu pˇriˇrazen pr´avˇe jeden tester, kter´ y zajiˇst’uje kompletn´ı servis okolo test˚ u, staly se specializovanˇejˇs´ı role nepotˇrebn´e. Naopak vznikla potˇreba jedin´e role pro pˇrihl´aˇsen´eho uˇzivatele, kter´a byla doˇcasnˇe ˇreˇsena pˇridˇelen´ım administr´atorsk´ ych pr´av. Bylo tedy rozhodnuto zredukovat p˚ uvodn´ı role: • Guest • Tester • Autotester • Translator • Project Manager • Aministr´ator a to konkr´etnˇe na: • Guest • Tester • Administr´ator Guest je nepˇrihl´aˇsen´ y uˇzivatel, Tester slouˇc´ı veˇsker´e potˇreby pro pˇrihl´aˇsen´eho uˇzivatele aˇz na samotnou administraci, kterou zajist´ı administr´ator.
33
TestRunner
3.9 3.9.1
Nov´e funkce
Nov´ e funkce DashBoard
Dashboard zobrazuje rychl´ y pˇrehled aktu´alnˇe bˇeˇz´ıc´ıch test˚ u. Mˇel zrychlit orientaci v TestRunneru, protoˇze ve vˇetˇsinˇe pˇr´ıpad˚ u n´as zaj´ımaj´ı pr´avˇe aktua´lnˇe bˇeˇz´ıc´ı testy produktu. Uˇzivatel tedy bude uˇsetˇren zdlouhav´eho proh´azen´ı stromem.
Analytick´ aˇ c´ ast Str´anku jsem rozdˇelil na dvˇe ˇc´asti, aby ji bylo moˇzn´e l´epe organizovat. D´ale jsem experiment´alnˇe zjistil nejlepˇs´ı rozvrˇzen´ı str´anky.
Implementaˇ cn´ı ˇ c´ ast K rozdˇelen´ı obrazovky poslouˇzil tzv. Split pane, kter´ y byl souˇca´st´ı JQuery UI Layout. D´ıky tomu je moˇzn´e obˇe ˇca´sti libovolnˇe zvˇetˇsovat ˇci zmenˇsovat. DashBoard obsahuje odkazy na jednotliv´e testy, a nab´ız´ı tak pˇrihl´aˇsen´emu uˇzivateli moˇznost rychl´eho pˇresunu na kter´ ykoliv test. Pro lepˇs´ı orientaci jsem implementaci doplnil o ˇrazen´ı podle sloupc˚ u (kliknut´ım na hlaviˇcku) a barevn´e odliˇsen´ı sud´ ych a lich´ ych ˇra´dek. Obˇe tyto funkce zajiˇst’uje JQuery. V´ ysledek implementace viz obr. 3.4.
34
TestRunner
Nov´e funkce
Obr´azek 3.3: Hlavn´ı str´anka - p˚ uvodn´ı.
Obr´azek 3.4: Hlavn´ı str´anka - nov´a.
35
TestRunner
3.9.2
Nov´e funkce
Vyhled´ av´ an´ı
Analytick´ aˇ c´ ast Vyhled´av´an´ı bylo implementov´ano z pˇredchoz´ı verze v pohledu ’Test Case Description’. Zadavatel poˇzadoval doplnˇen´ı do ˇca´st´ı ’AutoTest Description’ a ’Create or Edit Test Cases’.
Implementaˇ cn´ı ˇ c´ ast Vyhled´av´an´ı bylo pˇripraveno pomˇernˇe obecnˇe a jeho doplnˇen´ı nebylo pˇr´ıliˇs n´aroˇcn´e. Uk´azku vˇcetnˇe pˇr´ıkladu lze nal´ezt v uˇzivatelsk´e pˇr´ıruˇcce.
3.9.3
Souˇ cty pr˚ umˇ ern´ ych ˇ cas˚ u test˚ u pro kapitoly
Hlavn´ım d˚ uvodem pro implementaci byla moˇznost lepˇs´ı organizace ˇcasu tester˚ u. V praxi by nyn´ı mˇel tester l´epe odhadnout, kter´ y test m´a zvolit, kdyˇz chce za hodinu odej´ıt dom˚ u. Funkce viz obr.
Analytick´ aˇ c´ ast Nejdˇr´ıve bylo nutn´e rozhodnout, jak´ ym zp˚ usobem budeme ˇcas mˇeˇrit. Testrunner vyuˇz´ıv´a klasick´ y pr˚ umˇer, modus a medi´an. Po dohodˇe se zadavatelem byl vybr´an klasick´ y pr˚ umˇer. D´ale bylo nutn´e vybrat spr´avn´e m´ısto zobrazen´ı. Hlavnˇe kv˚ uli nedostatku m´ısta bylo zvoleno zobrazen´ı v tooltipu.
36
TestRunner
Nov´e funkce
Implementaˇ cn´ı ˇ c´ ast Vlastn´ı implementace spoˇc´ıvala v pˇrid´an´ı ikonky hodin ke kaˇzd´emu testu i cel´ ym kapitol´am. Po najet´ı kurzorem myˇsi na ikonku je proveden dotaz do datab´aze. Pr˚ umˇer testu je z posledn´ıch 10 ˇcas˚ u. Pro kapitoly jsou tyto ˇcasy seˇcteny viz obr. 3.6
3.9.4
Promˇ enliv´ a velikost lev´ eho panelu
Lev´ y panel slouˇz´ıc´ı k vyhled´av´an´ı je po vˇetˇsinu ˇcasu nepotˇrebn´ y. Proto je poˇzadov´ana moˇznost zmenˇsen´ı nebo skryt´ı tohoto panelu.
Implementaˇ cn´ı ˇ c´ ast Implementace probˇehla pomoc´ı frameworku jQuery [5], kter´ y byl v projektu jiˇz dˇr´ıve pouˇzit, doplnˇen´eho o JQuery UI Layout. JQuery UI Layout jsem zvolil, protoˇze plnˇe vyhovuje poˇzadavk˚ um a doplˇ nuje celkov´ y koncept modul˚ u JQuery. Umoˇzn ˇuje lev´ y panel zmenˇsit ˇci u ´plnˇe schovat dle aktu´aln´ı potˇreby viz obr. 3.6 a 3.10.
3.9.5
Ovˇ eˇ rov´ an´ı pˇ res LDAP
V z´avislosti s pˇrechodem na novˇejˇs´ı operaˇcn´ı syst´em, bylo rozhodnuto pˇrej´ıt na firmou v´ıce vyuˇz´ıvanou autentizaci pˇres LDAP. Ta je pro implementaci v PHP pomˇernˇe dobˇre zdokumentov´ana. K realizaci je potˇreba doinstalovat modul PHP-LDAP.
37
TestRunner
Nov´e funkce
Obr´azek 3.5: Detail test suite - p˚ uvodn´ı.
Obr´azek 3.6: Detail test suite - nov´ y.
38
TestRunner
3.9.6
Nov´e funkce
Vazba testovac´ıch pˇ r´ıpad˚ u s platformou
Analytick´ aˇ c´ ast Asi nejsloˇzitˇejˇs´ı ˇc´ast´ı bylo prov´az´an´ı jednotliv´ ych testovac´ıch pˇr´ıpad˚ u s platformou. Prvn´ım krokem byla volba vhodn´e implementace. Dospˇel jsem k reprezentaci stromem. viz 3.7. Strom byl oproti grafu jednoznaˇcn´ y a l´epe implementovateln´ y. V´ ysledn´ y strom nejevil sebemenˇs´ı zn´amky symetriˇcnosti nebo pravidelnosti. Nav´ıc do budoucna hrozilo, ˇze by se mohl jeˇstˇe v´ yraznˇe mˇenit. Proto jsem dospˇel k n´azoru, ˇze nejlepˇs´ı bude implementace pomoc´ı rekurze a to hlavnˇe kv˚ uli nepravidelnosti v´ ysledn´eho stromu. Protoˇze se nepˇredpokl´ad´a v´ yrazn´ y r˚ ust stromu, nemˇela by b´ yt rekurze pˇrek´aˇzkou.
Implementaˇ cn´ı ˇ c´ ast V praxi bude kaˇzd´a platforma jedn´ım ˇr´adkem v tabulce datab´aze a bude si uchov´avat pouze jm´eno, identifikaˇcn´ı ˇc´ıslo sv´e a sv´eho rodiˇce. Kaˇzd´ y testovac´ı pˇr´ıpad m˚ uˇze m´ıt v´ıce z´avislost´ı na platformˇe a z´aroveˇ n kaˇzd´a z´avislost m˚ uˇze patˇrit k v´ıce testovac´ım pˇr´ıpad˚ um. Jedn´a se tedy o vazbu M:N, kde bude d´ale nutn´a rozkladov´a tabulka. Aby bylo moˇzn´e strom v budoucnu nad´ale upravovat, musel jsem do managementu TestRuneru pˇridat poloˇzku pro spr´avu stromu viz obr. 3.8. Prvn´ı z´avislosti budou vloˇzeny do datab´aze jiˇz pˇri tvorbˇe tabulky, dalˇs´ı pak podle potˇreby. Pˇriˇrazen´ı z´avislost´ı k jednotliv´ ym testovac´ım pˇr´ıpad˚ um bude nutn´e prov´est ruˇcnˇe. To je moˇzn´e jak pro nov´e, tak i aktivn´ı testovac´ı pˇr´ıpady. Uk´azka pˇrid´av´an´ı a zobrazen´ı jednotliv´ ych z´avislost´ı viz obr. 3.10. D˚ uvodem implementace t´eto funkce je pˇredevˇs´ım lepˇs´ı zamˇeˇren´ı test˚ u.
39
40 Mobile
Obr´azek 3.7: Strom platforem. XP Vista 7
Server 2003
Server 2008
Server 2012
MS Windows
Windows Phone
iOS
Andriod
Desktop
SUSE LES
openSUSE
CentOS
Debian
RHEL
Linux
Operating systems
Root
10.7 10.8
10.5 10.6
Mac OS X
Andriod iOS
Address Book
iCal
Big Box
SW
HW
Appliance
Small Box
Windows Phone
Mobile
Desktop
For Mac OS X
2011
Applications
Outlook
2013
2007 For Windows
2010
2003
Ubuntu LTS
Browsers
Internet Explorer
11
8
Chrome
Safari
10
7
9
Firefox
6
TestRunner Nov´e funkce
TestRunner
Nov´e funkce
Obr´azek 3.8: Tvorba stromu z´avislost´ı.
3.9.7
Tooltipy
Jak uˇz bylo zm´ınˇeno v pˇredchoz´ı ˇca´sti, okno pro tvorbu test suite je ne´ umˇernˇe pomal´e (u mˇe na poˇc´ıtaˇci pravidelnˇe v´ıce neˇz 10s). Jedn´ım z d˚ uvod˚ u bylo naˇc´ıt´an´ı vˇsech tooltip˚ u pˇri otevˇren´ı okna. Dalˇs´ım probl´emem p˚ uvodn´ı implementace byla nefunkˇcnost pˇri vˇetˇs´ım mnoˇzstv´ı textu.
Analytick´ aˇ c´ ast Zbˇeˇzn´ ym pr˚ uzkumem mezi testery jsem zjistil, ˇze je velk´a ˇca´st z nich tooltipy v˚ ubec nepouˇz´ıv´a. Rozhodl jsem se je tedy naˇc´ıtat aˇz ve chv´ıli, kdy o to bude nˇekdo st´at, konkr´etnˇe aˇz pˇri najet´ı myˇsi. P˚ uvodn´ı implementace zahrnovala vyuˇzit´ı ˇspatnˇe rozˇsiˇriteln´e a neudrˇzovan´e knihovny. Z tˇechto d˚ uvod˚ u jsem se rozhodl ji nahradit knihovnou, kter´a bude tˇemto potˇreb´am v´ıce vyhovovat.
41
TestRunner
Nov´e funkce
Implementaˇ cn´ı ˇ c´ ast Pro samotnou implementaci jsem zvolil knihovnu qTip2 k frameworku jQuery, kter´ y byl v projektu jiˇz dˇr´ıve pouˇzit. Tato knihovna zvl´adla pokr´ yt p˚ uvodn´ı funkˇcnost, naˇc´ıtat tooltipy na poˇza´d´an´ı. Nemalou v´ yhodou je tak´e v´ ybornˇe zpracovan´ y manu´al. P˚ uvodn´ı implementace tooltip˚ u byla z projektu TestRunneru odstranˇena.
Obr´azek 3.9: Editace test case - p˚ uvodn´ı.
Obr´azek 3.10: Editace test case - nov´a.
42
TestRunner
Nov´e funkce
Obr´azek 3.11: Tvorba test suite - p˚ uvodn´ı.
Obr´azek 3.12: Tvorba test suite - nov´a.
43
4 Testy TestRunneru 4.1
Automatick´ e testov´ an´ı
Automatick´e testy jsem vyuˇzil pouze v menˇs´ım rozsahu. Mou volbou byl framework Selenium. Rozhoduj´ıc´ı byly m´e dˇr´ıvˇejˇs´ı pozitivn´ım zkuˇsenosti a tak´e v´ yvoj v mnou preferovan´em jazyce Java. Jako neoceniteln´ y pomocn´ık se zde uk´azala kniha Selenium Testing Tools Cookbook [14]. Testy pokr´ yvaj´ı malou oblast nejˇcastˇeji vyuˇz´ıvan´ ych a t´ım p´adem kritick´ ych funkc´ı aplikace. Spadaj´ı do kategorie Smoke test˚ u, kter´e maj´ı za u ´kol odhalit z´asadn´ı chyby. Kritick´e funkce, vhodn´e pro pokryt´ı automatick´ ymi testy, jsou n´asleduj´ıc´ı:
1. Login/Logout . 2. Kontrola pr´av pro nepˇrihl´aˇsen´eho uˇzivatele, testera a administr´atora. 3. Vytvoˇren´ı testovac´ıho pˇr´ıpadu.
44
Testy TestRunneru
4.2
Manu´aln´ı testov´an´ı
Manu´ aln´ı testov´ an´ı
Prvn´ı s´erie test˚ u prob´ıhala jiˇz v ran´e f´azi v´ yvoje, kdy jsem testoval, zdali funkcionalita odpov´ıd´a specifikaci. Pro testov´an´ı jsem zvolil funkˇcn´ı testy. N´aslednˇe jsem funkcionalitu konzultoval se zadavatelem a ˇcleny QA. Pokud nebyl zadavatel spokojen, zmˇenil jsem ji, upravil testy, znovu otestoval a pˇredvedl. Ve chv´ıli, kdy byla funkcionalita schv´alena, pˇreˇsel jsem k dalˇs´ı. Uk´azka testovac´ıho protokolu viz obr. 4.1. Pˇribliˇznˇe v polovinˇe pr´ace jsem pˇrikroˇcil k akceptaˇcn´ım test˚ um aplikace. Testovac´ı sc´en´aˇre jsem sestavoval na z´akladˇe konzultac´ı s jednotliv´ ymi ˇcleny QA. D˚ uraz byl kladen na otestov´an´ı TestRunneru pro ˇcast´e u ´kony. N´aslednˇe byl TestRunner uveden do ostr´eho provozu. Druh´a polovina pr´ace mˇela totoˇzn´ y pr˚ ubˇeh.
45
Testy TestRunneru
Číslo testu
Manu´aln´ı testov´an´ı
Popis testované situace
1.
Přihlášení uživatele
2.
Odhlášení uživatele
Kroky k provedení provedení 1. 2. 3. 4.
Kliknutí na tlačítko login. Zadání přihlašovacích údajů. Ověření změny tlačítka na logout. Ověření zobrazení aktuálně přihlášeného uživatele.
Úspěšné
Ano
1. Kliknutí na tlačítko logout. 2. Ověření změny tlačítka na login. 3. Není zobrazeno jméno žádného uživatele.
Ano
Ověření práv Nepřihlášený
1. Povolen přístup do Tests Resuls, Bug Statistics a Test Case Description. 2. Zakázán přístup do Autotest Description, Create tests, Perform, Tests, Create or Edit Test Cases, Manage Comments a Manage TestRunner.
Ano
4.
Ověření práv Tester
1. Povolen přístup do Tests Resuls, Bug Statistics, Test Case Description, Autotest Description, Create tests, Perform, Tests, Create or Edit Test Cases a Manage Comments. 2. Zakázán přístup do Manage TestRunner. 3. V Tests Resuls lze editovat, mazat odemykat/zamykat testy.
Ano
5.
Ověření práv Administrátor
1. Povolen přístup všude. 2. V Tests Resuls lze editovat, mazat odemykat/zamykat testy.
Ano
Ano
3.
6.
DashBoard
1. Korektní zobrazení na hlavní stránce. 2. Kliknutím na test, se lze dostat na jeho detail. 3. V sloupci progress, po najetí na procentuální hodnotu, zobrazení zobrazení tooltipu s konkrétním počtem testů. 4. Řazení testů po kliknutí na hlavičku sloupce.
7.
Administrace Uživatelé
1. Vytvoření nového uživatele v Manage TestRunner – Users. 2. Ověření správného jména, emailu, domény a přidělených práv.
Ano
Administrace Platformy
1. Vytvoření nové platformy v Manage TestRunner – Platforms. 2. Ověření správného jména a možnosti smazat platformu. 3. V Create Tests, Perform Tests vytvořit test s touto platformou. 4. Ověřit, že již nelze smazat platformu.
Ano
8.
Obr´azek 4.1: Uk´azka z testovac´ıho protokolu.
46
5 Z´avˇer V r´amci zad´an´ı jsem se detailnˇe sezn´amil s principy testov´an´ı, fungov´an´ım QA oddˇelen´ı spoleˇcnosti Kerio Technologies s.r.o. a doplnil si vzdˇel´an´ı v oblastech virtualizace, operaˇcn´ıho syt´emu Linux, SQL datab´az´ı, PHP, JavaScriptu, HTML, CSS, typografick´eho syst´emu LATEX a mnoh´ ych dalˇs´ıch. D´ale jsem se sezn´amil s n´astrojem TestRunner a poˇzadavky na jeho zmˇenu. Pˇripravil jsem nov´e prostˇred´ı pro bˇeh TestRunneru. Na nov´em OS jsem zprovoznil novou verzi datab´aze FireBird, PHP a pluginu InterBase. Sezn´amil jsem se s datab´azov´ ym modelem a zdrojov´ ymi k´ody. Odstranil jsem vˇsechny chyby, kter´e byly zad´any. Odebral jsem ˇradu nepotˇrebn´ ych funkc´ı a n´aslednˇe u ´spˇeˇsnˇe implementoval nov´e funkce. Celou pr´aci jsem d˚ ukladnˇe otestoval a zdrojov´e k´ody vˇcetnˇe konverzn´ıch skript˚ u k datab´azi pˇredal zadavateli. V pr´aci jsem si zkusil od vˇseho nˇeco. Jednalo se zat´ım o nejvˇetˇs´ı projekt, na kter´em jsem pracoval. Pˇresto si mysl´ım, ˇze se mi vˇsechny body zad´an´ı povedlo u ´spˇeˇsnˇe splnit.
47
Pˇ rehled zkratek AJAX CSS QA HTML LDAP PHP RC SQL UI
Asynchronous JavaScript and XML Cascading Style Sheets Quality Assurance HyperText Markup Language Lightweight Directory Access Protocol Hypertext Preprocessor Release Candidate Structured Query Language User Interface
Seznam obr´ azk˚ u
2.1
Optim´aln´ı hladina v softwarov´em testov´an´ı.[15] . . . . . . . .
2
2.2
N´aklady na opravu chyby v pr˚ ubˇehu v´ yrobn´ıho cyklu [16]. . .
3
2.3
Rozd´ıl v pl´anov´an´ı mezi klasick´ ym a agiln´ım pˇr´ıstupem [13]. .
4
2.4
Jak funguje Scrum [10]. . . . . . . . . . . . . . . . . . . . . . .
6
2.5
Pˇr´ıklad scrumboardu v Kerio Technologies [16]. . . . . . . . .
8
2.6
Black-box testov´an´ı [2]. . . . . . . . . . . . . . . . . . . . . . . 12
2.7
Stabilizace produktu [8]. . . . . . . . . . . . . . . . . . . . . . 16
2.8
Priorita vs z´avaˇznost chyby. . . . . . . . . . . . . . . . . . . . 18
2.9
ˇ Zivotn´ ı cyklus chyby podle Bugzilly [3]. . . . . . . . . . . . . . 19
3.1
DB model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2
Zjednoduˇsen´ y popis tˇr´ıd . . . . . . . . . . . . . . . . . . . . . 30
3.3
Hlavn´ı str´anka - p˚ uvodn´ı. . . . . . . . . . . . . . . . . . . . . 35
3.4
Hlavn´ı str´anka - nov´a. . . . . . . . . . . . . . . . . . . . . . . 35
3.5
Detail test suite - p˚ uvodn´ı. . . . . . . . . . . . . . . . . . . . . 38
´ ˚ SEZNAM OBRAZK U
´ ˚ SEZNAM OBRAZK U
3.6
Detail test suite - nov´ y. . . . . . . . . . . . . . . . . . . . . . . 38
3.7
Strom platforem. . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.8
Tvorba stromu z´avislost´ı. . . . . . . . . . . . . . . . . . . . . . 41
3.9
Editace test case - p˚ uvodn´ı. . . . . . . . . . . . . . . . . . . . 42
3.10 Editace test case - nov´a. . . . . . . . . . . . . . . . . . . . . . 42 3.11 Tvorba test suite - p˚ uvodn´ı. . . . . . . . . . . . . . . . . . . . 43 3.12 Tvorba test suite - nov´a. . . . . . . . . . . . . . . . . . . . . . 43 4.1
Uk´azka z testovac´ıho protokolu. . . . . . . . . . . . . . . . . . 46
Literatura [1] Apache Tutorials [online]. 2013. [cit. 2.8.2013]. Dostupn´e z: http:// httpd.apache.org/docs/2.0/misc/tutorials.html. [2] Black-box testing [online]. 2012. [cit. 2.8.2013]. Dostupn´e z: http://en. wikipedia.org/wiki/Black-box_testing. [3] The Bugzilla Guide - 4.2.6 Release [online]. 2013. [cit. 2.8.2013]. Dostupn´e z: http://www.bugzilla.org/docs/4.2/en/pdf/ Bugzilla-Guide.pdf. [4] Firebird 2.5 Quick Start Guide [online]. 2011. [cit. 2.8.2013]. Dostupn´e z: http://www.firebirdsql.org/file/documentation/reference_ manuals/user_manuals/html/qsg25.html. [5] jQuery API [online]. 2013. [cit. 2.8.2013]. Dostupn´e z: http://api. jquery.com/. [6] Kerberos Protocol Tutorial [online]. 2007. [cit. 2.8.2013]. Dostupn´e z: http://www.kerberos.org/software/tutorial.html. [7] Lightweight Directory Access Protocol [online]. 2013. [cit. 2.8.2013]. Dostupn´e z: http://php.net/manual/en/book.ldap.php. [8] Software release life cycle [online]. 2012. [cit. 2.8.2013]. Dostupn´e z: http://en.wikipedia.org/wiki/Software_release_life_cycle. [9] PHP Manual [online]. 2013. [cit. 2.8.2013]. Dostupn´e z: http://php. net/manual/en/index.php.
LITERATURA
LITERATURA
[10] Introduction to Scrum [online]. 2012. [cit. 2.8.2013]. Dostupn´e z: http://www.mountaingoatsoftware.com/presentations/ an-introduction-to-scrum. [11] SQL Tutorial [online]. 2013. [cit. 2.8.2013]. Dostupn´e z: http://www. w3schools.com/sql/default.asp. [12] Software Testing Methods [online]. 2014. [cit. 2.5.2014]. Dostupn´e z: http://www.tutorialspoint.com/software_testing/testing_ methods.htm. ´ A. Agiln´ı metodiky. In Objekty 2002. Praha: Cesk´ ˇ a [13] BUCHALCEVOVA, ˇ zemˇedˇelsk´a univerzita (CZU), 2002. ISBN 80-213-0947-4. [14] GUNDECHA, U. Selenium Testing Tools Cookbook. Community experience distilled. Packt Publishing, Limited, 2012. Dostupn´e z: http: //books.google.cz/books?id=tTyeCLSH2Z8C. ISBN 9781849515757. [15] PATTON, R. Testov´an´ı softwaru. Programov´an´ı: Pro kaˇzd´eho uˇzivatele. Computer Press, 2002. Dostupn´e z: http://books.google.cz/books? id=m1nHAAAACAAJ. ISBN 9788072266364. [16] SAMUEL, Z. Agile Testing. Prezentov´ano jako extern´ı pˇredn´aˇska k pˇredmˇetu ZSWI, 2010.
Pˇ r´ılohy
Uživatelský manuál 1. Titulní stránka .............................................................................................................. 3 1.1. Uživatelská práva ............................................................................................... 3 1.2. Popis funkcí........................................................................................................... 4 2. Seznam testů ............................................................................................................... 5 2.1. Strom testů ........................................................................................................... 5 2.2. Seznam testů ....................................................................................................... 5 2.3. Ostatní funkce ..................................................................................................... 6 3. Vytváření nebo editace testů ................................................................................. 7 3.1. Globální hodnoty ................................................................................................ 7 3.2. Komponenty ......................................................................................................... 8 3.3. Výběr testovacích případů a jejich vlastností ......................................... 8 3.4. Test na žádost ..................................................................................................... 9 3.5. Ostatní .................................................................................................................... 9 4. Detail testu ................................................................................................................. 10 4.1. Hlavička ................................................................................................................ 11 4.2. Tasks Tested ...................................................................................................... 11 4.3. Výsledky testů ................................................................................................... 11 4.4. Chyby .................................................................................................................... 12 4.5. Ostatní .................................................................................................................. 12 5. Seznam chyb.............................................................................................................. 13 6. Testovací formulář ................................................................................................... 14 6.1. Hlavička ................................................................................................................ 14 6.2. Odeslání výsledku ............................................................................................ 15 6.3. Vrácení do stavu „netestováno“ ................................................................. 15 6.4. Won’t test ............................................................................................................ 15 6.5. Chyby .................................................................................................................... 15 6.6. Descriptions ........................................................................................................ 16 6.7. Ostatní .................................................................................................................. 16 7. Test Case Update ..................................................................................................... 17 8. Seznam testovacích případů ................................................................................ 18 8.1. Strom testovacích případů............................................................................ 18 8.2. Test Case detail................................................................................................. 18
9. Vyhledávání v testovacích případech ............................................................... 19 10. Manipulace s testovacími případy ................................................................... 19 10.1. Strom testovacích postupů ........................................................................ 20 10.2. Řídící informace .............................................................................................. 20 10.3. Editační pole .................................................................................................... 21 10.4. Ukládání nově vytvořených testovacích případů ............................... 21 10.5. Ukládání updatů testovacích případů (klony) ..................................... 21 11. Popis autotestu ....................................................................................................... 22 11.1. Strom testovacích případů ......................................................................... 22 11.2. Editační pole .................................................................................................... 22 12. Manažer komentářů .............................................................................................. 23 12.1. Schválení návrhu na update ...................................................................... 24 13. Admin sekce............................................................................................................. 25 13.1. Uživatelé ............................................................................................................ 25 13.2. Platformy ........................................................................................................... 26 13.3. Závislosti na platformě ................................................................................ 26 13.4. Komponenty..................................................................................................... 27 13.5. Produktové verze ........................................................................................... 28 13.6. Produkty ............................................................................................................ 28 13.7. Logy .................................................................................................................... 29
1. Titulní stránka
Tento dialog bude zobrazovat domovskou stránku aplikace TestRunner 2.2. Standardně se zobrazují možnosti nepřihlášeného uživatele. Na tuto stránku lze přejít z ostatních dialogů kliknutím na logo aplikace. To neplatí pro následující dialogy:
Test Case Detail - formulář, kde tester vyplňuje výsledek testu Send Update - formulář pro odeslání návrhu na změnu testovacího postupu
1.1. Uživatelská práva Seznam zobrazených ikon a jejich popisů závisí na roli uživatele. Vazby možných akcí na jednotlivé role ukazuje následující tabulka: akce \ role
nepřihlášený
tester administrátor
Test Results
ANO
ANO
ANO
Bugs Statistics
ANO
ANO
ANO
Test Case Description
ANO
ANO
ANO
AutoTest Description
NE
ANO
ANO
Create Tests, Perform Tests
NE
ANO
ANO
Create or Edit Test Cases
NE
ANO
ANO
Manage Comments
NE
ANO
ANO
Manage TestRunner
NE
NE
ANO
1.2. Popis funkcí Po stisknutí tohoto tlačítka se otevře standardní přihlašovací dialog pro zadání jména a hesla. Po úspěšném přihlášení z jakéhokoliv dialogu se provede přesměrování na titulní stránku, uživateli se zobrazí položky, ke kterým má práva (viz tabulka v kapitole 1.1), a tlačítko v každém dialogu se změní na „Logout“ (popis i funkce). Při stisknutí tlačítka "Logout" se provede odhlášení uživatele ze systému a přesměrování na titulní stránku aplikace. Každý test má svoje unikátní ID. Po zadání tohoto ID se otevře detail zadaného testu. To platí z každého dialogu, ve kterém se tato funkce vyskytuje. Zobrazí se aktuální stránka online html manuálu. Podoba ani obsah manuálu není součástí této specifikace. Přesměruje na stránku s výsledky testů. Přesměruje na statistiku chybovosti jednotlivých funkcí. Přesměruje na stránku s popisem testovacích případů. Přesměruje na stránku, kde lze k popisu testovacího případu přidat popis autotestu. Přesměruje na stránku, odkud lze test vytvořit nebo spustit. Přesměruje na stránku, odkud lze vytvářet nebo editovat testovací případy. Přesměruje na stránku, odkud lze schvalovat návrhy na úpravu testovacích případů. Přesměruje na stránku, odkud lze TestRunner spravovat - správa produktů, komponent, platforem, závislostí, uživatelů a logů.
2. Seznam testů
2.1. Strom testů Základem jsou produkty, které se budou zobrazovat v abecedním pořadí. Release testy budou nově součástí standardních testů. V těch přibude komponenta „Release“. Strom testů lze rozbalit až na jednotlivé testy. Názvy jednotlivých testů bude tvořit název testované komponenty (max. dvě) a platforma v závorce (viz detail testů). Pokud budou v jednom testu vybrány více než dvě komponenty (typicky u WinRoute), bude název testu složen z názvu produktu a testované platformy v závorce (viz detail testů). Pokud by se stalo, že by v jedné verzi byly dva testy stejného jména, budou od sebe navzájem odlišeny pořadovým číslem (viz detail testů) na základě časové značky "Created". Seznam testů se zobrazí při kliknutí na verzi produktu (zobrazí se všechny testy v této verzi). Při kliknutí na jednotlivý test (buď ve stromu testů, nebo v seznamu testů) se v pravém okně zobrazí detail vybraného testu (viz detail testů). Tlačítko zabalí celý strom testů (platí pro všechny výskyty). Tlačítko rozbalí celý strom testů (platí pro všechny výskyty). 2.2. Seznam testů Seznam testů má následující vlastnosti:
„Test ID“: jednoznačný identifikátor testu (pomocí něj lze test vyhledávat a odkazovat se na něj z venku) „System“: vybraná testovaná platforma „Start“, „End“: časové značky začátku a konce testu. Začátek testu je v okamžiku, kdy tester poprvé spustí test. Konec testu je ve chvíli, kdy se test zamkne. Do té doby je položka "End" prázdná. Konec testu se aktualizuje po každém opětovném zamknutí.
„Progress“: aktuální vývoj testu. Počítá se jako poměr otestovaných a neotestovaných testovacích případů. „Bugs“: Tato funkce je dostupná pro všechny uživatele a po kliknutí na značku u příslušného testu se v tom samém okně zobrazí stránka s detaily chyb nalezených v konkrétním testu. „Lock“: Tato funkce je použita proto, aby byl vidět finální stav testu při vydání produktu. Funkce ukazuje stav zámku testu (pro všechny uživatele): o test je odemknutý a lze v něm provádět změny (testovat, editovat test). Při kliknutí na tuto značku se zobrazí dotaz, zda si uživatel opravdu přeje test zamknout. o test je zamknutý - zmražený - nelze v něm provádět žádné akce (nelze testovat, editovat, aktualizovat). Při kliknutí na tuto značku se zobrazí dotaz, zda si uživatel opravdu přeje test odemknout. Změnit stav zámku může pouze uživatel s právy tester nebo administrátor.
„Edit“: Tento sloupec se zobrazí pouze uživatelům s právy tester nebo administrátor. Značka bude aktivní pouze u odemknutých testů. Při kliknutí na tuto značku se v novém okně otevře stránka pro editaci vytvořeného testu. Při editaci testu budou předvyplněny testovací případy vybrané při vytváření testu. „Erase“: Tento sloupec se zobrazí pouze uživatelům s právy tester nebo administrátor. Značka bude aktivní pouze u odemknutých testů a po kliknutí na tuto značku se zobrazí dotaz, zda si uživatel opravdu přeje test odebrat.
2.3. Ostatní funkce Po stisku tohoto tlačítka se otevře stránka se seznamem nalezených chyb při testu v celé verzi. Pokud nebude vybrána konkrétní verze, nebude tlačítko aktivní.
Toto tlačítko je aktivní pouze pro uživatele s právy tester nebo administrátor. Po stisku tohoto tlačítka se v novém okně zobrazí formulář pro vytváření nového testu. Do formuláře pro vytváření nového testu se odešle jméno produktu a číslo verze dle aktuálního výběru:
pokud kliknu na jméno produktu a následně na tlačítko "New Test", odešle se pouze jméno produktu (pravděpodobně se vytváří test pro novou verzi)
pokud kliknu na verzi nebo na detail jiného testu a následně na tlačítko "New Test", odešle se jméno produktu a vybraná verze (pravděpodobně se vytváří nový test pro stávající verzi) Pozn.: Obě hodnoty lze v cílovém formuláři změnit
3. Vytváření nebo editace testů
3.1. Globální hodnoty „Product“: Přednastavená hodnota bude dle výběru na stránce seznamu testů. V případě potřeby lze hodnotu změnit. „Version“: Přednastavená hodnota bude dle výběru na stránce seznamu testů. V případě potřeby lze hodnotu změnit. Pokud se bude hodnota zadávat ručně nebo se bude měnit, bude toto pole odkazovat do Bugzilly do políčka "version" příslušného produktu a tyto hodnoty bude nabízet přes drop-down menu. „Dependency“: Odkazuje do stromu závislostí. Přednastavená hodnota bude "none". Před zobrazením testů je třeba hodnotu změnit. Změna způsobí načtení příslušných testů. „Platform“: Odkazuje do seznamu platforem. Platformy budou v drop-down menu abecedně řazeny. „Profundity“: Vybraná hloubka testu se přednastaví pro celý test. Hodnotu lze ale u jednotlivých kapitol či testovacích případů změnit. Drop-down menu bude obsahovat hodnoty „Deep“, „Normal“, „Simple“. K těmto hodnotám budou přiřazeny koeficienty, kterými se bude násobit časový odhad pro konkrétní testovací případ. Koeficienty jsou následující: Deep = 3, Normal = 1, Simple = 0.33. Přednastavenou hodnotou bude hodnota „Normal“. Při kliknutí na ikonku
se otevře malé okno (podobně jako třeba Sticky Notes ve
WebMailu) pro zadání komentáře k celému testu. V případě, že je komentář zadaný, změní ikonka barvu na červenou. 3.2. Komponenty V TestRunneru je třeba odlišit dvě základní skupiny testů: Release testy a Funkční testy. Release test slouží k tomu, aby se ověřilo, zda byl produkt korektně vypublikován. Při výběru tohoto testu nelze vybrat žádnou komponentu ani testovací případ z kategorie "Funkční testy". Navíc se při výběru "Release" testu zobrazí textové pole pro zadání verze nebo čísla buildu. Při výběru "Release" testu se předvyberou všechny testovací případy, které spadají do komponenty "Release". Výběr těchto testovacích případů lze měnit. Komponenty pro funkční testy budou přehledně zobrazeny do sloupců a řádků (max. 3 sloupce). Komponenty obsahují kapitoly a ty jednotlivé testovací případy. V pravé horní části je umístěna speciální komponenta „All Components“. Funkčnost komponent je následující:
pokud se označí komponenta, označí se všechny kapitoly a testovací případy, které jsou v komponentě obsaženy
pokud se odznačí vybraná komponenta, odznačí se všechny označené kapitoly a testovací případy patřící do vybrané komponenty
pokud se označí komponenta „All Components“, označí se všechny komponenty a všechny testovací případy a naopak
3.3. Výběr testovacích případů a jejich vlastností Při vytváření testu budou zobrazeny pouze poslední klony testovacích případů platných pro zadanou verzi! Při editaci testu se budou zobrazovat poslední platné klony testovacích případů, pouze pokud testovací případ nebyl ještě testován. Otestovaný testovací případ nepůjde při editaci testu odebrat. Testovací případy lze označovat i odznačovat buď jednotlivě, nebo po kapitolách (označí / odznačí se všechny testovací případy v kapitole). Všechny kapitoly se budou standardně zobrazovat zabalené. Kliknutím na název kapitoly se zobrazí jednotlivé testovací případy (opětovné kliknutí testovací případy schová). Pokud se vybere konkrétní testovací případ, bude se ve vytvořeném testu zobrazovat i název jeho kapitoly, i když kapitola nebude označena. V tomto případě zůstane komponenta, do které testovací případ spadá, neoznačená, nicméně do názvu testu se s ní bude počítat. „Comments“: kliknutím na ikonku u kapitoly nebo jednotlivého testovacího případu se otevře malé okno (podobně jako výše) pro zadání komentáře k jednotlivým kapitolám nebo testovacím případům. To, že je někde již komentář vyplněn, je signalizováno ikonkou. Při najetí myší na tuto ikonku se vypíše obsah komentáře (hint, …). Popis testovacího případu (ve zvoleném jazyce - standardně dle jazyka OS + autotest) bude k dispozici přes on-mouse-over akci (0.5s) (stejně jako v Bugzille a položky „Status Whiteboard“). „Profundity“: Hloubka testu bude přednastavena výběrem globální hloubky. Hloubku testu lze měnit pro celou kapitolu (změní se všechny testovací případy v kapitole) nebo pro jednotlivé testovací případy. „AT Coverage“: jedná se pouze o informativní hodnotu. Zobrazuje, jaká část testovacího případu je pokryta autotestem. Tuto hodnotu zadává tvůrce popisu autotestu v okně pro popis autotestu testovacího případu.
„Time“: opět se jedná pouze o informativní hodnotu. Hodnota udává čas potřebný k manuálnímu testu daného testovacího případu. Čas se bude měnit dle vybrané hloubky testu. Zároveň se mění i výsledný čas potřebný pro celý test, který je uveden v dolní části dialogu. Čas uvedený u názvu kapitoly bude součtovým časem všech časů jednotlivých testovacích případů obsažených v kapitole. Názvy kapitol budou od jednotlivých testovacích případů barevně odlišeny (viz. obrázek). 3.4. Test na žádost Formulář pro vytvoření nového testu bude standardně bez položky pro test na žádost. Pole pro zadání testu na žádost lze zadat stisknutím tlačítka. Opakovaným stisknutím lze vytvořit více polí. Posílat se bude pouze pole, ve kterém není prázdný řetězec. U každého testu na žádost se zobrazí i checkbox "Permanent". Testy na žádost jsou přidány do seznamu testovacích případů vytvořeného testu. Pokud bude vytvořený test obsahovat pouze testovací případy zadané přes formulář testu na žádost, bude název testu "Test on demand" (případně i pořadové číslo). „Permanent“: Při zaškrtnutí checkboxu u vybraného testu na žádost se navíc v Bugzille vytvoří nový záznam s následujícími parametry:
product = dle vytvářeného testu
Component = QA
Reporter = tvůrce testu Assignee = uživatel s administrátorskými právy. Pokud je těchto uživatelů více, přiřadí se do assignee první v pořadí (uživatelské jméno dle abecedy); ostatní jsou přidány do položky "Cc:"
Severity = Task
Summary = stručný popis testu, který je zapsán v poli u testu na žádost
Description = stejné jako u Summary
3.5. Ostatní Tlačítkem se vytvoří nový nebo aktualizuje stávající test. Při aktualizaci již vytvořeného testu nepůjdou odebrat již otestované testovací případy (checkboxy budou neaktivní). Po stisknutí tohoto tlačítka se zavře formulář a provede se přesměrování na stránky seznamu testů tak, aby byl vidět právě vytvořený nebo aktualizovaný test. Pokud nebude zvolen alespoň jeden testovací případ (ze seznamu nebo v testu na žádost), nebude tlačítko
aktivní.
Po vytvoření nebo aktualizaci testu se uživateli s administrátorskými právy odešle o této skutečnosti následující zpráva.
Adresa odesilatele bude:
[email protected]
4. Detail testu
4.1. Hlavička
„Product“: název produktu + číslo verze „Component“: název testované komponenty. Pokud je vybráno více komponent v jednom testu, bude zde uvedeno jméno produktu. „Systém“: vybraná platforma „Created“: časová značka vytvoření testu a tvůrce testu „Overall“: procentuální a číselné vyjádření průběhu testu „Original Estimate“: čas v hodinách potřebný k otestování celého testu „Actual Taken“: doba trvání testu. Tester u každého testovacího případu bude vyplňovat dobu, kterou věnoval testu. „Time Left“: součet časů u doposud netestovaných testovacích případů Při on-mouse-over akci na ikonu se zobrazí komentář pro celý test uložený při vytváření testu.
4.2. Tasks Tested Pokud na stránku detailu testu nahlíží uživatel, který nemá práva tester, nebudou názvy kapitol a testovacích postupů klikatelné. Na on-mouse-over se pouze zobrazí popis testovacího případu dle jazyka, který lze vybrat kliknutím na vlaječku. Standardní jazyk je dle jazyka systému. Pokud na tuto stránku nahlíží uživatel s právy tester nebo administrátor, budou navíc názvy testovacích případů klikatelné a po kliknutí na testovací případ se objeví formulář pro provedení testu. Názvy kapitol budou od jednotlivých testovacích případů barevně odlišeny (viz. obrázek). 4.3. Výsledky testů Výsledky testů jednotlivých testovacích případů a následně i kapitol jsou v závislosti s nově nalezenými chybami. Staré chyby nebudou mít na výsledek testu vliv. Pro potřeby TestRunneru budeme rozlišovat dvě úrovně chyb:
vážné – zásadní chyba ve funkčnosti nebo regrese, produkt by se s nimi neměl vydat „lehké“ – jsou to většinou light, triviality, suggestions – produkt lze s těmito chybami vydat
Výsledné stavy testu testovacích případů mohou být následující (dle závažnosti chyb):
- v testu nebyla nalezena žádná chyba
- v testu byla nalezena minimálně jedna lehká chyba. Všechny nalezené lehké chyby byly v Bugzille do uzamknutí testu převedeny do stavu RESOLVED.
- v testu byla nalezena minimálně jedna vážná chyba. Všechny nalezené vážné chyby byly v Bugzille do uzamknutí testu převedeny do stavu RESOLVED - v testu byla nalezena minimálně jedna lehká chyba. Tento stav platí, dokud bude zbývat alespoň jedna neopravená lehká chyba před zamknutím testu. - v testu byla nalezena minimálně jedna vážná chyba. Tento stav platí, dokud bude zbývat alespoň jedna neopravená vážná chyba před zamknutím testu. - případ se netestuje
Do pole "Result" pro kapitolu se propaguje nejhorší dosažený stav z testovacích případů obsažených v kapitole. Aktualizace se provádí vždy při načtení stránky. Po zamknutí testu
se zmrazí aktuální stav a výsledky se již nebudou aktualizovat. Další aktualizaci lze provést až po odemknutí testu. 4.4. Chyby Tester vkládá do testovacího formuláře čísla všech nalezených chyb. Ty se pak zobrazují ve sloupci Bugs Found a to následujícím způsobem:
červeně – chyby se severitou critical tučně – chyby se severitou serious normálně – chyby se severitou light nebo triviality kurzívou – chyby se severitou suggestion přeškrtnuté – vyřešené chyby (jsou ve stavu RESOLVED nebo VERIFIED) a mají shodný TM jako testovaná verze [přeškrtnuté v hranatých závorkách] - vyřešené chyby (jsou ve stavu RESOLVED NEBO VERIFIED), jejich TM nepatří do testované verze
"Bugs found": Při on-mouse-over akci na číslo chyby se do hintu vypíše summary, status, resolution. Při kliknutí na číslo chyby se Bugzilla otevírá v novém okně. "Old bugs": Značka znamená, že v minulosti byla v testovacím případě nalezena chyba, která byla zanesena do TestRunneru a doposud nebyla opravena. Při on-mouse-over akci na tuto značku se do hintu vypíše číslo chyby, summary, status,resolution. V případě, že chyb je více, zobrazí se chyby v hintu pod sebe. Při kliknutí na tuto značku se otevře stránka v Bugzille se seznamem chyb uvedených v testovacím případu. (Pozn.: link do Bugzilly je: https://bugzilla.kerio.com/buglist.cgi?bug_id=14091,13750,...) 4.5. Ostatní „Build #“: toto pole má pouze informativní hodnotu. Tester při vyplňování formuláře vyplňuje i číslo buildu, na kterém se testování provádí. „Comment“: Tester má rovněž možnost připojit k testu krátký komentář. Připojený komentář značí ikonka. Při on-mouse-over akci na tuto ikonku se do hintu vypíše testerův komentář (bude obsahovat jméno testera a jeho komentář). „Bugs only“: přesměruje na stránku s výpisem chyb v tomto testu. „Print“: vytiskne seznam úkolů s časy na jednotlivé úkoly i souhrnně pro celé kapitoly. Tisknutelná verze je zjednodušená graficky i obsahově a nezobrazuje aktuální stav testu (je určena pro vytisknutí před/během testu, například pro případ, kdy tester potřebuje/chce "off-line" návod k testu).
5. Seznam chyb
Seznam chyb půjde zobrazit buď pro konkrétní test, nebo pro celou verzi (několik testů). Prohlížeč si bude pamatovat poslední stav rozbalovátek pro každého uživatele (pomocí cookies).
"Opened bugs" bude zobrazovat všechny chyby objevené v testu, které dosud nejsou vyřešeny. "Resolved or Verified bugs" bude zobrazovat chyby vyřešené či čekající na potvrzení, že jsou vyřešeny. Tlačítka a rozbalují či zabalují výše popsané části. Prohlížeč si bude v cookies pamatovat stav rozbalovátek pro každého uživatele. Dále platí, že každá chyba bude obsahovat: jméno testu (komponenta + platforma v závorce), jméno kapitoly a testovacího případu, číslo chyby bude zároveň linkem do Bugzilly, summary, severity, status.
6. Testovací formulář
6.1. Hlavička
„Component“: jméno komponenty, ve které se kapitola a testovací případ nachází „Chapter“: jméno kapitoly, ve které se testovací případ nachází „Test Case“: jméno testovacího případu „Possible AutoTest Coverage“: možné pokrytí testovacího případu autotestem. Zadává tvůrce popisu autotestu. „Actual AutoTest Coverage“: aktuální pokrytí testovacího případu autotestem. Zadává tvůrce popisu autotestu. „Profundity“: hloubka testu platná pro tento testovací případ „Estimate Time (average)“: průměrný čas určený pro test tohoto testovacího případu (již po přepočítání koeficientem hloubky testu). „Estimate Time (median)“: střední hodnota všech časů z předchozích testů. (Tato hodnota je pouze informativní a jako technologický test, NENÍ přepočítávána
koeficientem hloubky testu. Slouží pro zhodnocení možnosti získávání přesnějších odhadů než je aritmetický průměr.) „Estimate Time (modus)“: nejčastější hodnota času z předchozích testů. (Tato hodnota je pouze informativní a jako technologický test, NENÍ přepočítávána koeficientem hloubky testu. Slouží pro zhodnocení možnosti získávání přesnějších odhadů než je aritmetický průměr.)
Pozn.: Tvůrcem testovacího postupu je nastaven časový odhad testu testovacího případu. Tester v každém testu zadává skutečný čas, který strávil testováním konkrétního testovacího případu. Zpět do databáze se však posílá čas v závislosti na "Profundity" (výsledný čas = skutečný čas / profundity). V hlavičce uvedený "Estimated Time" je průměrem těchto časů, který je následně vynásoben koeficientem hloubky testu. Vypočtený průměrný čas nesmí zahrnovat nulové hodnoty, které se do databáze dostanou importem z předchozí verze TestRunneru. V současné verzi již nulový čas nelze zadat! 6.2. Odeslání výsledku Stisknutím tlačítka se odesílá výsledek testu, okno se zavře a zobrazí se aktualizované okno s detailem testu. Pokud není nalezena žádná chyba, je test automaticky s výsledkem . Pokud se naleznou nějaké chyby, je výsledek závislý na jejich závažnosti, kombinaci, stavu (viz kapitola 4.3). Výsledek testu je ovlivněn pouze nově zaevidovanými chybami. Test nelze odeslat, pokud nebudou vyplněná pole Build # a Elapsed Time. Build # je pole textové a Elapsed Time číselné (pouze celá čísla > 0). Čas bude zadán v minutách.
6.3. Vrácení do stavu „netestováno“ Pokud tester odeslal výsledek testu např. omylem, je možné vrátit test to původního stavu a to stiskem tlačítka . Po stisku se okno zavře a zobrazí se aktualizované okno s detailem testu. U testu je nastaven stav . 6.4. Won’t test Stisknutím tlačítka se okno zavře a zobrazí se aktualizované okno s detailem testu. Testu je nastaven status . Po znovuotevření testovacího dialogu jsou volby pro přidání bugu a odeslání výsledku zašedlé. Pro návrat do původního stavu slouží tlačítko , po jehož stisknutí se dialog zavře a test se nastaví do stavu
.
6.5. Chyby Každá nalezená chyba je nejdříve zaevidovaná v Bugzille. Její číslo pak tester zadá do pole Bug # a stiskne se tlačítko . Chyba se přidá do seznamu chyb nalezených v tomto testu. Pokud se zaškrtne i checkbox , jedná se o vážnou chybu. Lze zadat více chyb. V případě potřeby půjde záznam odstranit (zobrazí se potvrzující dotaz). Zobrazení chyb bude dle grafického návrhu, číslo chyby bude odkazovat do Bugzilly (otevře se nové okno s detailem chyby v Bugzille).
Zadá-li se neexistující číslo chyby (rozumí se neexistující v Bugzille), zobrazí se informativní okno s hláškou Bug # does not exist in Bugzilla. a chyba se do seznamu nepřidá. „Old Bugs“: všechny chyby (nevyřešené i vyřešené), které byly k tomuto testovacímu případu do TestRunneru zadány. Prohlížeč si bude pamatovat stav rozbalovátka pro každého uživatele (pomocí cookies). 6.6. Descriptions „Test Case Description“: obecný popis testovacího případu "Chapter info": bude se zobrazovat pouze v případě, že kapitola obsahuje nějaký popis. „AutoTest Description“: popis automatického testu testovacího případu. Prohlížeč si bude pamatovat stav rozbalovátka pro každého uživatele (pomocí cookies). „History“: informace pro testera, jak se vyvíjely předchozí testy u tohoto testovacího případu. Detail viz obrázek. Nejhorší a nejlepší čas je zvýrazněn červeně, respektive zeleně. Tyto časy nejsou zvýrazňovány pro účely "odměňování" nebo "trestání" testerů, ale pro snadné nalezení extrémních hodnot, zadaných například omylem. (Záměna čísla buildu a času, "uklepnutí se" apod.) Tlačítka a rozbalují či zabalují výše popsané části. Prohlížeč si bude v cookies pamatovat stav rozbalovátek pro každého uživatele. 6.7. Ostatní Pokud se v levém horním okraji vyskytuje ikonka , znamená to, že tvůrce testu vložil k tomuto testovacímu případu nějaký komentář. Komentář se zobrazí po akci on-mouseover na této ikonce. „Comment“: Krátká poznámka testera. V detailu testu se pak zobrazuje ve sloupci Comment (odešle se s formulářem po stisku tlačítka "Tested"). Otevře nové okno pro odeslání aktualizace testovacího postupu administrátorovi.
7. Test Case Update
„Actual description“: popis testovacího případu „Update“: pole pro zapsání návrhu na změnu testovacího případu „Old updates“: Uchovává se historie toho, jak se testovací případ aktualizoval. Zobrazit či schovat tuto položku lze pomocí tlačítek a . Prohlížeč si bude v cookies pamatovat stav rozbalovátek pro každého uživatele.
Po stisknutí tlačítka
se návrh na změnu odešle ke schválení.
8. Seznam testovacích případů
8.1. Strom testovacích případů Hierarchie: Produkt -> Komponenta -> Kapitola -> Testovací případ Produkty budou řazeny abecedně (i navzdory obrázku). Komponenty budou řazeny abecedně, kapitoly a testovací případy podle čísla kapitol a testovacích případů. Označit lze komponentu, kapitolu, testovací případ (kvůli statistice chyb). Při kliknutí na testovací případ se do pravého okna zobrazí jeho detail. Při kliknutí na kapitolu nebo komponentu se do pravého okna zobrazí její obsah. 8.2. Test Case detail Údaje v hlavičce viz obrázek, vysvětlení viz hlavička testovacího formuláře. Jednotlivé části jsou formátovány dle html (
,
). Stisknutím tlačítka případu nebo kapitoly.
se přejde na stránku statistiky konkrétního testovacího
9. Vyhledávání v testovacích případech
V horní části liště TestRunneru se nachází vyhledávací dialog. Do textového pole je zadáván hledaný text, v rolovacím seznamu je vybrán produkt, kde se má vyhledávat a po stisku tlačítka
bude text vyhledán.
10. Manipulace s testovacími případy
10.1. Strom testovacích postupů Základní funkčnost stromu je stejná jako v předchozí kapitole s tím rozdílem, že se vedle kapitol a testovacích postupů zobrazují čísla kapitol a testovacích postupů. Číslo kapitoly nebo testovacího postupu je sice unikátní, ale může se časem měnit. Při kliknutí na existující testovací případ se otevře tento testovací případ pro editaci – obsahuje všechny již zadané údaje. Dialog pro vytvoření nového testovacího případu se otevře po stisknutí tlačítka . Po stisknutí tohoto tlačítka a zobrazení dialogu pro vytvoření nového testu se toto tlačítko zablokuje. Pokud je otevřen dialog pro vytvoření nového nebo editaci stávajícího postupu, lze ve stromu testovacích případů klikat na značky pro rozbalení či zabalení části nebo celého stromu bez toho, aniž by se měnil dialog v pravém okně. Pokud kliknu přímo na komponenty, kapitolu nebo testovací případ, změní se i obsah pravého (ztráta rozdělané práce) okna a aktivuje se tlačítko
.
10.2. Řídící informace „Component“: Komponenty nelze vytvářet v tomto dialogu – jsou tedy dané. Komponenta se přednastaví dle toho, kde se nachází ukazatel ve stromu při stisku tlačítka. V případě potřeby lze komponentu měnit. Tato položka je povinná. „Chapter“: Do tohoto pole půjde zadat pouze celé kladné číslo (kapitoly). Chování bude pak následující:
Pokud se ukazatel ve stromu testovacích případů nachází na konkrétní kapitole, bude hodnota přednastavena na číslo oné kapitoly. Pokud se ukazatel ve stromu testovacích případů nachází na konkrétní komponentě, bude hodnota přednastavena na první nepoužité číslo v řadě v této komponentě. V případě, že toto číslo používá již jiná kapitola, tedy provádí se vkládání, ostatní kapitoly se posunou (musí platit jedinečnost). Pokud se ukazatel ve stromu složek nachází na nově vytvořené komponentě, bude číslo kapitoly prvním volným číslem v seznamu všech kapitol. Tato položka je povinná a v případě potřeby lze přednastavené číslo změnit.
„SubChapter“:Do tohoto pole půjde zapsat pouze celé kladné číslo včetně nuly. Přednastavenou hodnotou bude první volné číslo v rámci vybrané kapitoly. V ostatních případech se hodnota nepřednastavuje. Pokud se zadá nula, značí to, že se vytváří nová kapitola. Tato položka je povinná. Pokud budu chtít vložit novou kapitolu nebo testovací případ mezi existující, zadá se pouze pozice, na které by měly kapitola nebo testovací případ být, a ostatní kapitoly nebo testovací případy, které jsou za touto pozicí, se posunou (musí platit jedinečnost). „Validity Start“: Zadává se sem číslo verze, OD které tento testovací postup platí. Pole bude provázané s Bugzillou s políčkem "version" příslušného produktu. Tato položka je povinná. „Validity End“: Zadává se sem číslo verze, DO které tento testovací postup platí. Pole bude provázané s Bugzillou s políčkem "version" příslušného produktu. Tato položka je povinná a v případě, že se nezná toto omezení, bude se zadávat unspecified. „Estimated Time“: Odhad tvůrce testovacího případu, jaký čas je potřeba na otestování
tohoto testovacího případu. Tato položka je povinná. Jedná se ale pouze o inicializační hodnotu. Tato hodnota se bude přepočítávat v závislosti na skutečném trvání testu. „New dependency“: Položka pro výběr nové závislosti na platformě. Na základě těchto závislostí jsou potom Test casy filtrovány. Pokud nejsou uvedeny závislosti, předpokládá se dostatečná obecnost pro jakýkoliv filtr. „Selected dependency“: Seznam všech závislostí na platformě. Test case je platný pouze pro tyto platformy (včetně jejich potomků, tzn. závislost operačních systémů se vztahuje i na závislost Linux, MS Windows, Mac OS atd.) 10.3. Editační pole
Klasické textové pole s možností zápisu libovolných znaků – podpora češtiny, znaků jako: „“ / ; ' \ Bude interpretovat následující html tagy: ,
,  , html odkazy.
10.4. Ukládání nově vytvořených testovacích případů Uložení testovacího případu se provede tlačítkem
.
Základní a nejjednodušší variantou je, když se vytváří nová kapitola nebo testovací případ. Při stisku tlačítka
se provede uložení následujícího:
všech řídících informací (produkt, komponenta, kapitola, …) název testovacího případu – Title popis testovacího případu - Description Příznak autotest se nastaví na false. Číslo klonu se nastaví na 0.
Ve spodní části lze přepínat mezi jednotlivými klony. 10.5. Ukládání updatů testovacích případů (klony) V případě, že se testovaná funkce změnila, je třeba změnit i testovací postup. Zároveň se ale nesmí měnit zpětně pro již vytvořené testy. Dále je třeba dát vědět tvůrcům autotestu, že se změnil popis. Z předchozích důvodů bude každé nové uložení testovacího postupu vytvářet novou verzi téhož – klon. V tomto případě bude ukládání probíhat následovně:
uloží se všechny řídící informace název testovacího případu – Title popis testovacího případu – Description překopíruje se položka „Autotest Description“ z předchozího klonu Příznak autotest se nastaví na false. Číslo klonu se zvýší o 1.
11. Popis autotestu
11.1. Strom testovacích případů Základní funkčnost je stejná jako v předchozí části s tím rozdílem, že se nezobrazují čísla kapitol. U všech testovacích případů, u kterých se nerovnají hodnoty „Possible AT Coverage“ a „Actual AT Coverage“ nebo je příznak autotest nastaven na false (byl vytvořen nebo updatován testovací případ), je zobrazena ikonka . Tato informace se propaguje dále do názvu kapitoly a komponenty. 11.2. Editační pole
Pro editaci se otevírá vždy poslední klon testovacího případu. „AutoTest Description“: Platí stejná pravidla jako u editace testovacích případů. „Test Case Description“: pouze informativní pole – nelze do něj zapsat. „Possible AT Coverage“: může nabývat hodnot 0 – 100. Toto pole je povinné. Vyjadřuje možné pokrytí testovacího případu autotestem „Actual AT Coverage“: může nabývat hodnot 0 – „Possible AT Coverage“. Toto pole je povinné. Vyjadřuje skutečné pokrytí testovacího případu autotestem. „Test Case Update“: Otevře dialog pro odeslání aktualizace testovacího postupu.
12. Manažer komentářů
V manažeru komentářů jsou přijaté návrhy na úpravu testovacích případů. V rolovací nabídce je možno vybrat, pro který produkt chceme návrhy na update zobrazit. Po vybrání produktu a stisku se návrhy zobrazí. Zaškrtávací pole slouží k vybrání, jaké návrhy na update se mají zobrazit, zdali nové, schválené, zamítnuté anebo staré. Je možno vybrat více možností najednou. Stiskem volby „Edit test case“ se otevře nové okno s formulářem pro schválení navrhovaného updatu.
12.1. Schválení návrhu na update
Po obdržení komentáře je potřeba návrh nejdříve schválit tlačítkem a následně upravit popis testovacího případu nebo návrh zamítnout tlačítkem formuláře.
. Při zamítnutí návrhu dojde k zavření
Po úpravě popisu testovacího případu a stisku tlačítka se aktualizuje stávající popis testovacího případu. Při rozsáhlejší změně je možno testovací případ uložit jako nový a to stiskem tlačítka
.
13. Admin sekce 13.1. Uživatelé
Uživatelé budou řazeni abecedně dle uživatelského jména (zobrazuje se také). Username je shodné s usernamem do domény (kvůli automatickému ověřování). Vytvářený uživatel musí mít vyplněné všechny položky. Mazání uživatele není povoleno. Řeší se odebráním práv. Uživatelům, kteří budou mít v TestRunneru účet, lze přiřadit preferovaný jazyk (čeština, angličtina). Dle tohoto nastavení se budou zobrazovat testovací postupy bez ohledu na jazyk prohlížeče. Každému nově přidanému uživateli přijde informativní zpráva o jeho vytvoření v TestRunneru. To samé platí i pro změnu údajů.
13.2. Platformy
Platformy budou řazeny abecedně. Nelze vytvořit platformu, která by jako jméno měla prázdný řetězec. Nelze vytvořit dvě stejné platformy. Platformu lze vymazat, pouze pokud není použita v žádném testu. V takovém případě se zobrazí symbol pro mazání.
13.3. Závislosti na platformě
Závislost bude vytvořena s ohledem na právě vybraný prvek stromu. To znamená že se stane potomkem zvolené závislosti.
Závislost lze vymazat, pouze pokud není použita v žádném testu nebo není rodičem jiné závislosti.
13.4. Komponenty
Jednotlivé jména komponent budou řazeny abecedně. Nelze vytvořit prázdnou komponentu nebo komponentu, aniž by bylo uvedeno, ke kterému je produktu. Nelze vytvořit dvě stejné komponenty v jednom produktu. Komponentu lze smazat, pouze pokud není v žádném testu a pokud neobsahuje žádný testovací případ. V takovém případě se zobrazí symbol pro mazání.
13.5. Produktové verze
Produktové verze budou načítány z Bugzilly.
13.6. Produkty
Produkty budou řazeny abecedně. Produktu bude přiřazeno jméno, zkrácené jméno a ID v Bugzille.
13.7. Logy
Do logu se budou vypisovat následující akce:
vytvoření, update a smazání testu zamknutí a odemknutí testu
Každý log bude mít následující schéma: datum (rok-měsíc-den) čas (hh:mm) - uživatelské_jméno akce ID_testu (viz obrázek).