Vysoká škola ekonomická v Praze Fakulta informatiky a statistiky Katedra informačních technologií
Studijní program: Aplikovaná informatika Obor: Informatika
Testování softwaru BAKALÁŘSKÁ PRÁCE
Student
:
Yauhen Rybak
Vedoucí
:
doc. Ing. Alena Buchalcevová, Ph.D.
Oponent :
Mgr. Anna Borovcová
2012
Prohlášení: Prohlašuji, že jsem tuto bakalářskou práci na téma „Testování softwaru“ zpracoval samostatně a že jsem uvedl všechny použité prameny a literaturu, ze které jsem čerpal.
V Praze dne 27. 0. 2012
.................................. Jméno a příjmení
Poděkování Rád bych poděkoval paní doc. Ing. Aleně Buchalcevové, Ph.D. za pomoc, pečlivou korekturu a cenné připomínky při vedení této bakalářské práce.
Abstrakt Tato bakalářská práce představuje základní aspekty testovacího nástroje IBM Rational Functional Tester. Cílem této práce je seznámit čtenáře se základy testování softwaru a vytvořit příručku jmenovaného testovacího nástroje pro začínající testery, ukázat na příkladech proces automatizace testování. První část této bakalářské práce představuje teoretický úvod do problematiky testování softwaru, druhá část se zabývá popisem procesu testování webové aplikace pomocí nástroje IBM Rational Functional Tester. V poslední částí je ukázáno na konkrétním praktickém příkladu, jakým způsobem lze otestovat Java aplikaci vybraným testovacím nástrojem.
Klíčová slova Testování softwaru, Kvalita softwaru, IBM Rational Functional Tester, Webová aplikace, Java aplikace
Stránka - 4 - z 50
Abstract This bachelor thesis presents the fundamental aspects of the testing tool IBM Rational Functional Tester. The aim of this thesis is to acquaint readers with the basics of software testing and to create the guide of the named testing tool for beginning testers; to show the process of automated testing on examples. The first part of this thesis presents a theoretical introduction to software testing; the second part describes the process of testing web applications using IBM Rational Functional Tester. In the last part is shown in a particular practical example how to test Java application with the selected testing tool.
Keywords Software testing, Software quality, IBM Rational Functional Tester, Web application, Java application
Stránka - 5 - z 50
Obsah Prohlášení: .......................................................................................................................... - 2 Poděkování ......................................................................................................................... - 3 Abstrakt ............................................................................................................................... - 4 Klíčová slova ............................................................................................................ - 4 Abstract ............................................................................................................................... - 5 Keywords .................................................................................................................. - 5 -
1
Úvod - 8 1.1 1.2 1.3 1.4 1.5
2
Testování softwaru ....................................................................................... - 10 2.1 2.2 2.3 2.4 2.5 2.6
3
Vymezení tématu práce a důvod výběru tématu ...................................................... - 8 Cíle práce ..................................................................................................................... - 8 Metoda dosažení cíle .................................................................................................. - 8 Předpoklady a omezení .............................................................................................. - 9 Struktura práce ........................................................................................................... - 9 -
O čem je testování .................................................................................................... - 10 Co je považováno za softwarovou chybu ............................................................... - 11 Kvalita softwaru ........................................................................................................ - 12 Základní pojmy testování ......................................................................................... - 12 Klasifikace a způsoby testování .............................................................................. - 13 Typy testů .................................................................................................................. - 14 2.6.1 Funkční testování......................................................................................... - 14 2.6.2 Nefunkční testování ..................................................................................... - 15 2.6.3 Testování související se změnami .............................................................. - 15 -
Úvod do softwarových produktů Rational od společnosti IBM ................. - 17 3.1 Historie řady Rational software od IBM .................................................................. - 17 3.2 IBM Rational Functional Tester ............................................................................... - 18 3.3 Porovnání IBM RFT s alternativními testovacími nástroji ..................................... - 18 Stránka - 6 - z 50
3.4 První kroky s IBM RFT .............................................................................................. - 19 3.4.1 Instalace........................................................................................................ - 19 3.4.2 První spuštění .............................................................................................. - 20 3.4.3 Příprava testovacího prostředí ................................................................... - 22 -
4
Testování webových aplikací nástrojem IBM RFT ...................................... - 23 4.1 4.2 4.3 4.4
5
Testování Java aplikace nástrojem IBM RFT .............................................. - 32 5.1 5.2 5.3 5.4
6
Nastavení pracovního prostředí .............................................................................. - 23 Nastavení testované aplikace .................................................................................. - 24 Vytváření skriptu ....................................................................................................... - 25 Spouštění zaznamenaných testů ............................................................................. - 29 -
Nastavení pracovního prostředí Java ..................................................................... - 32 Nastavení testované Java aplikace ......................................................................... - 33 Vytváření skriptu pro Java aplikaci ......................................................................... - 33 Spouštění zaznamenaných testů ............................................................................. - 38 -
Závěr - 40 -
Seznam odborné literatury.................................................................................. - 41 Seznam použitých obrázků a tabulek ................................................................ - 42 Seznam obrázků ............................................................................................................... - 42 Seznam tabulek ................................................................................................................ - 42 -
Terminologický slovník ....................................................................................... - 43 Použité zkratky .................................................................................................... - 46 Přílohy
- 47 -
Příloha 1. Kód záznamu scénáře „Registrace“ .............................................................. - 47 Příloha 2. Kód záznamu scénáře „Vytváření nové objednávky“ .................................. - 49 -
Stránka - 7 - z 50
1 Úvod Kvalita finálního produktu hraje v moderním životě důležitou roli. Při nákupu jakéhokoliv výrobku chce mít každý z nás jistotu, že za své peníze dostává kvalitní a spolehlivý produkt, při jehož provozu nevzniknou v budoucnu problémy. K těmto produktům patří i informační technologie, po nichž roste poptávka každým dnem. Není tajemstvím, že je jednodušší předem zabránit problémům, než potom řešit jejich důsledky. Testování je nástroj, který umožnuje efektivně jednat právě tímto způsobem, proto musí vývojáři softwaru vynaložit hodně času a prostředků na testování.
1.1
Vymezení tématu práce a důvod výběru tématu
Tématem práce je problematika testování softwaru. Hlavní důraz autor klade na praktické využití nástroje IBM Rational Functional Tester při vytvoření skriptů pro automatizaci testovacího procesu. Téma jsem si vybral, protože mě zajímá oblast testování a vypracováním této bakalářské práce jsem chtěl nejen prohloubit své teoretické znalosti obdržené při studiu na Vysoké Škole Ekonomické v Praze, ale i získat vedlejší praktické zkušenosti při práci s nástroji.
1.2
Cíle práce
Cílem práce je seznámit čtenáře s problematikou testování softwaru, zaměřit se na základní pojmy, klasifikace a způsoby testování, prozkoumat různé typy testů. Dále pak vytvořit uživatelskou příručku nástroje IBM Rational Functional Tester pro začínající testery a ukázat proces automatizace testování softwaru pomocí jmenovaného nástroje.
1.3
Metoda dosažení cíle
Základem pro tuto práci bylo studium níže uvedených pramenů a také praktické zkušenosti získané při absolvování mezi-semestrálního kurzu 4IT356 - Testování softwaru s metodikou a nástroji IBM na Vysoké Škole Ekonomické v Praze.
Stránka - 8 - z 50
1.4
Předpoklady a omezení
Pro vypracování praktické části této bakalářské práce byl použit nástroj IBM Rational Functional Tester v poslední aktuální verzi 8.2.1.1. Nástroj byl stažen z oficiálních webových stránek společnosti IBM, je plně funkční a nemá žádná omezení.
1.5
Struktura práce
Práce je rozdělena na tři části. V první částí této bakalářské práce se čtenář dozví o základních aspektech problematiky testování, jsou zde rozebrány nejdůležitější pojmy, cíle a výhody. Dále jsou v úvodní části popsány také klasifikace a způsoby testování, dozvíte se i o typech testů. Následující část popisuje nástroj IBM Rational Functional Tester včetně historie vývoje, procesu instalace, základního nastavení a nejdůležitějších funkcí jmenovaného nástroje. V dalších částech se zaměřím na popis procesu testování webových a Java aplikací pomocí nástroje IBM Rational Functional Tester. Popíši proces nastavení pracovního prostředí a testované aplikace. Dále budu popisovat proces automatizace, to znamená zaznamenání a spuštění testovacích skriptů podle vytvořených testovacích případů pomocí daného nástroje.
Stránka - 9 - z 50
2 Testování softwaru V této kapitole se zaměřím na vysvětlení pojmu testování softwaru, vysvětlím, k čemu slouží a jaké jsou jeho hlavní cíle. Kromě toho budou popsány i základní pojmy související s touto tematikou, klasifikace, typy a nejčastěji používané způsoby testování.
2.1
O čem je testování
Mnohé organizace, zabývající se vývojem softwaru, vydávají na testování až 50% finančních prostředků přidělených na vývoj programů, což představuje miliardy dolarů po celém světě. Nicméně, i přes obrovské investice, velké množství softwarových společností nemá dostačující znalosti o podstatě testování. Z tohoto důvodu většina programů není dostatečně spolehlivá ani po "důkladném otestování". [1] O skutečném stavu věci nejlépe svědčí fakt, že většina lidí, kteří pracují v oblasti zpracování dat, neumí ani správně definovat slovo “testování”, což poté často bývá jednou z hlavních příčin neúspěchu projektu. [1] Existuje mnoho různých definic pojmu testování. Jednou z nich je: “Testování je proces, který potvrzuje správnost programu. Ukazuje, že v programu nejsou chyby”. Hlavní nevýhodou této definice je, že ve skutečnosti popisuje opak toho, co je potřeba chápat jako testování. Program není testován proto, aby ukázal, že funguje, ale spíše naopak. Testování vychází z předpokladu, že existuje chyba, kterou je potřeba najít. Hlavním úkolem je tedy najít maximální počet možných chyb, aby se zvýšila spolehlivost konečného produktu a tím pádem i jeho hodnota. Cílem testování je zjištění chyb co nejdříve. Především je důležité, aby se na tyto chyby přišlo včas, nejlépe ještě než je odhalí uživatelé konečného produktu. Příkladem může být tvrzení Rona Pattona, podle kterého výše nákladů na opravu chyb má logaritmickou stupnici. To znamená, že postupem času vzroste vždy na desetinásobek původní hodnoty. [2] Na otázku, proč vůbec testovat, můžeme odpovědět slovy člověka, který je považován za jednoho z „otců kvality“: „Vyrobit něco vysoce kvalitního nemusí stát o nic víc, či dokonce může stát méně, než vyrobit něco nekvalitního“ Philip Crosby [4]
Stránka - 10 - z 50
2.2
Co je považováno za softwarovou chybu
Odpovědět na tuto otázku může být stejně tak snadné, jako obtížné. Softwarovou chybu (bug) lze především chápat jako chybu v programu, která se projevuje při jeho používání. Bugem můžeme také pojmenovat i nedokumentované nebo nežádoucí vedlejší účinky programu na uživatelskou činnost, stejně jako i používání programu s jiným softwarem nebo jiným technickým vybavením. Podle Pattona pro správné formulování softwarové chyby musíme nejprve popsat podpůrný pojem „specifikace“. Ta definuje a podrobně popisuje, jak bude produkt vypadat, jak se bude chovat, co bude a nebude dělat. [2] V knize Testování software je uvedena následující definice softwarové chyby: „O chybě hovoříme, pokud je splněna jedna nebo více z následujících podmínek: 1. Software nedělá něco, co by podle specifikace produktu dělat měl. 2. Software dělá něco, co by podle údajů specifikace produktu dělat neměl. 3. Software dělá něco, o čem se produktová specifikace nezmiňuje. 4. Software nedělá něco, o čem se produktová specifikace nezmiňuje, ale měla by zmiňovat. 5. Software je obtížně srozumitelný, těžko se s ním pracuje, je pomalý, nebo – podle názoru testera softwaru – jej koncový uživatel nebude považovat za správný.“ [2] Podle mého názoru je tato definice dostačující, ale příliš dlouhá. Hlavní myšlenku lze vyjádřit v následující větě. Softwarová chyba – je odchylka skutečných výsledků od očekávaných, kdy očekávané výsledky jsou dané specifikací. Na závěr můžeme stanovit pravidlo, které vždy potvrdí existenci bugu. Ovšem toto pravidlo bude platit pouze při splnění všech třech níže uvedených podmínek. Tři podmínky existence bugu: 1. Předem je znám skutečný výsledek. 2. Předem je znám očekáváný výsledek. 3. Je známo, že výsledek z prvního bodu se nerovná výsledku z bodu druhého.
Stránka - 11 - z 50
2.3
Kvalita softwaru
Pokud mluvíme o testování softwaru, musíme také rozebrat pojem „kvalita softwaru“, který bezprostředně souvisí s danou oblastí, protože testování je jedním z neúčinnějších způsobů jak zajistit kvalitu softwaru Velmi často se můžeme setkat s poněkud abstraktním pojmem "kvalita softwaru" a pokud se zeptáme programátora nebo testera - "Co je kvalita?" To si každý může najít svůj výklad. Podívejme se na definici "kvality softwaru" v kontextu mezinárodních norem: Kvalita softwaru - sada softwarových funkcí souvisejících s jeho schopností plnit stanovené a předpokládané potřeby a cíle. [5] Podle mého názoru kvalita softwaru souvisí s vlastnostmi a schopnostmi produktu a má být zajištována procesy verifikace a validace.
Verifikace je proces, jehož cílem je ověření, jestli produkt vyhovuje všem požadavkům a specifikacím.
Validace je potvrzení získané prostřednictvím poskytnutí objektivních důkazů, že požadavky na specifické zamýšlené použití nebo specifickou aplikaci byly splněny. [6]
Při validaci produktu musíme zkontrolovat následující body: 1. Jestli zákazník skutečně potřebuje to, co požaduje (například určité vlastností nebo funkčností produktu). 2. Jestli stanovené požadavky na kvalitu produktu odpovídají potřebám zákazníka. 3. Jestli návrh řešení v dostatečně míře splňuje všechny požadavky na kvalitu. 4. Nakonec musíme zkontrolovat, zda produkt odpovídá prvotnímu návrhu a zároveň splňuje požadavky zákazníka.
2.4
Základní pojmy testování
Testovací plán (test plan) je dokumentem řídícím celý proces testování, který obsahuje určení rozsahu testování. Definuje, jaké testy budou na co aplikovány, jaké zdroje je třeba zajistit včetně nástrojů, dat a lidí. Dále určuje zodpovědnosti, stanovuje priority, pravidla a identifikuje rizika. Testovací případ (test case) je dokument, ve kterém je popsán seznám kroků testujících jeden konkrétní případ, který při používání testované položky může nastat. Stránka - 12 - z 50
Testovací scénář (test scenario) je logické spojení několika po sobě jdoucích testovacích případů do tematicky uspořádaného scénáře. Testovací skript (test script) je přepis jednoho či několika testovacích případů nebo scénářů do programovacího jazyka, aby spolu tvořily logický celek, určený k automatickým testům aplikace. Testovací data jsou reálná nebo vygenerovaná data, určená pro účely testování. Hlášení chyby (bug report) je oznámení popisující možnou chybu, postup vyvolání jejího projevu, její dopad, význam, stav opravy a další náležitosti, kterými se chyba vyznačuje. Test log poskytuje informace o proběhlých testech. [7]
2.5
Klasifikace a způsoby testování
Testování můžeme klasifikovat podle způsobu provedení na manuální a automatizované, a podle toho, jestli je potřeba spouštět softwaru na statické a dynamické. Manuální testování probíhá prostřednictvím člověka (obvykle testera), který provádí testy podle předem stanovených testovacích směrnic, podle vlastních zkušeností nebo náhodně. Automatizované testování představuje spouštění naprogramovaných testů ve speciálním programu, který zpracovává velký objem dat za kratší dobu. Statické testování se provádí bez nutnosti spuštění programového kódu. Testování probíhá analýzou kódu (code review). Analýza může být provedena buď ručně, nebo pomocí speciálních nástrojů. Cílem této analýzy je včasné odhalení chyb a možných problémů budoucího programu. Pomocí revize kódu v počátečních fázích projektu lze identifikovat chyby v kódu finálního výrobku. Na rozdíl od statického, dynamické testování se provádí spouštěním programu a kontrolou jeho funkčnosti. Testování probíhá prováděním ručních nebo spouštěním předem připravených automatických testů. Existuje také několik způsobů testování podle znalosti kódu - to je například testování „skříněk“. Testování „černé skříňky“ (black box testing), testování „bílé skříňky“ (white box testing) a někdy se vyčleňuje i testování „šedé skříňky“ (grey box testing). Pokud vyjdeme z terminologie zkušených testerů, pak se výrazy „testování bílé skříňky“ a „testování černé skříňky“ vztahují k tomu, zda má tester přístup ke zdrojovému kódu, nebo zda se k testování používá uživatelské rozhraní či rozhraní speciálních aplikací. [3]
Stránka - 13 - z 50
Testování černé skříňky znamená, že tester má přístup k programu jenom přes stejné rozhraní jako zákazník nebo uživatel. Typicky se tento druh testování se provádí pomocí specifikací nebo jiných dokumentů popisujících systémové požadavky. Při testování bílé skříňky, má tester přístup ke zdrojovému kódu programu a zná vnitřní datové a programové struktury. Při testování šedé skříňky, má tester přístup ke zdrojovému kódu, ale obvykle při spouštění testu, nepotřebuje ke kódu přistupovat. [3]
2.6
Typy testů
Všechny druhy testování softwaru, v závislosti na sledovaných cílech, lze rozdělit do následujících skupin:
Funkční
Nefunkční
Související se změnami
Dále budou podrobněji popsány jednotlivé druhy testů, jejich účely a způsoby využití v procesu testování.
2.6.1
Funkční testování
Funkční testování je obvykle založeno na funkcích, vlastnostech a možnostech interakce programu s jinými systémy. Testy mohou být prováděny na všech úrovních testování: na úrovni jednotek či komponent (Component/ Unit Testing), integrační (Integration testing), systémové (System Testing) a akceptační (Acceptance Testing). Tyto funkce jsou obvykle popsány v požadavcích nebo specifikacích. Dále jsou uvedeny některé z nejčastějších typů testů, spadajících pod funkční testování: Testy funkcionality (Funktional Testing) - testování funkčnosti aplikace - aby splňovala požadavky. Hodnocení se provádí pomocí srovnání očekávaných a skutečných výsledků na základě funkční specifikace. Bezpečnostní testy (Security and Access Control Testing) - testovací strategie, která se používá k testování bezpečnosti systému, stejně jako k analýze rizik spojených s ochranou aplikací před hackery, viry nebo neoprávněným přístupem k důvěrným údajům.
Stránka - 14 - z 50
Testy interoperability (Interoparability Testing) - funkční testování, které ověří schopnosti aplikace pro interakci s jedním nebo více komponenty nebo systémy. Zahrnuje testování kompatibility a integrace (integration testing).
2.6.2
Nefunkční testování
Nefunkční testování popisuje testy potřebné k určení určitých vlastností softwaru, které mohou být stanovené. Obecně můžeme říci, že to je komplexní testování toho, jak systém funguje. Dále jsou uvedeny hlavní typy nefunkčních testů: Zátěžové testování (Perfomance and Load Testing) – automatizované testování, které simuluje práci a chování určitého počtu uživatelů v jednom společném prostředí a ověřuje výkonnost programu pod vlivem zatížení. Stresové testování (Stress Testing) - umožní vyzkoušet, jak efektivní jsou aplikace a systém jako celek v podmínkách stresu a posoudit schopnost systému k regeneraci, tj. k návratu k normálnímu stavu, po ukončení působení stresu. Testování stability a spolehlivosti (Stability and Reliability Testing) - druh testu, který ověřuje provozuschopnost programu při dlouhodobém testování za středního zatížení. Testování použitelnosti (Usability Testing) – metoda testování orientovaná na stanovení úrovně pohodlnosti použití, srozumitelnosti a uživatelské přitažlivosti při určitých podmínkách daných ve specifikacích nebo požadavcích. Testování instalace (Installation Testing) - hlavním cílem je ověření úspěšné instalace a konfigurace, upgradu nebo odstranění softwaru. Testování k selhání a obnovení (Failover and Recovery Testing) – kontroluje program ve smyslu schopnosti k odolnosti a úspěšnému obnovení po případném selhání, které bylo způsobeno poruchou hardwaru nebo softwaru.
2.6.3
Testování související se změnami
Po provádění nezbytných změn, například oprav chyb nebo defektů, musí být software znovu otestován, abychom mohli zjistit, zda došlo k odstranění problému. Níže jsou uvedeny typy testování, které je doporučeno provádět po instalaci softwaru nebo opravení chyby, pro ověření provozuschopnosti programu: Dýmové testování (Smoke Testing) – je prováděno za účelem kontroly všech modulů systému ve věci ověření provozuschopnosti. Stránka - 15 - z 50
Regresní testování (Regression Testing) – ověřuje, jestli se ve funkční verzi programu v důsledku změny neobjevila chyba. Sanitní testování (Sanity Testing) – uzkosměrové testování, dostačující dokázat, že konkrétní funkce funguje v souladu s požadavky uvedenými v zadávací dokumentaci.
Stránka - 16 - z 50
3 Úvod do softwarových produktů Rational od společnosti IBM V této kapitole se budu zabývat popisem produktů od IBM, historií a porovnáním s řešením ze strany konkurentů. Podrobněji se zaměřím na nástroj IBM Rational Functional Tester, na jeho funkce a proces instalace, popíšu základní nastavení, potřebné při prvním spuštění.
3.1
Historie řady Rational software od IBM
V roce 1981 byla založena společnost Rational Software. Původní název zněl „Rational Machines“, ale později byl změněn na více známý Rational Software. Hlavním cílem společnosti vždy bylo vytváření nástrojů pro správu vývoje softwaru. V letech 1994-95 byli k práci v Rational Software přizváni odborníci Grady Booch, James Rumbaugh a Ivar Jacosbson. S jejich přímou účastí byl v krátké době definován soubor elementů a pravidel jejich využití v Unifikovaném Modelovacím Jazyku (UML) a prototyp metodiky vývoje softwaru Rational Unified Process (RUP). Na začátku roku 2003 bylo Rational Software koupeno společností IBM a tím se zařadilo bok po boku mezi tak známé společnosti, jako jsou Websphere, Tivoli, Lotus a DB2, které gigant IBM také vlastní. K softwaru Rational bylo přidáno pojmenování IBM, celý název tedy zněl IBM Rational. Na konci roku 2004 na základě platformy Eclipse od IBM, byly prezentovány následující významné produkty: IBM Rational Software Modeler a IBM Rational Software Architect pro vizuální modelování, nástroj pro psaní a spouštění funkčních testů IBM Rational Functional Tester (RFT), nástroj pro simulace zátěže na testovaném systému IBM Rational Perfomance Tester (RPT), atd. Řada od IBM Rational byla v té době nejmodernějším softwarem, určeným pro organizaci vývoje softwaru, s podporou většiny procesů. Významných událostí, týkajících se Rational Software a IBM bylo samozřejmě mnohem více, než jsem zde uvedl, ale záměrně jsem zmínil ty nejdůležitější. To proto, abych poukázal na fakt, že celá historie vzniku tradiční řady IBM Rational je jakýmsi klasickým příběhem z obchodního světa - vychází z živého konkurenčního boje nejúspěšnějších světových společností o zisk pokročilých technologií s cílem představit vlastní, konkurenceschopnější produkt. Tradiční řada Rational Software ovládla obrovský sektor trhu automatizace a vývoje softwaru na mnoho let. [8]
Stránka - 17 - z 50
3.2
IBM Rational Functional Tester
IBM Rational Functional Tester – nástroj pro testování funkcionality, který také zahrnuje nástroj manuálního testování – IBM Rational Manual Tester, je určen pro vývojáře uživatelského rozhraní (GUI) a pro testery, kteří potřebují plnou kontrolu nad procesem testování softwarových aplikací. Řešení IBM Rational Functional Tester umožnuje automatizovat funkční a regresní testování různých softwarových aplikací, včetně aplikací založených na Javě, webových aplikací, aplikací .NET a aplikací založených na technologii „tlustý“ klient. Produkt od IBM v sobě sjednocuje prostředky pro zaznamenávání akcí uživatele s velkým množstvím konfiguračních nastavení a inteligentními funkcemi, které umožnují vytvářet a spouštět testy s potřebnou mírou pružnosti (agility). Tento nástroj zjednodušuje komplexní úkoly pro začátečníky a současně poskytuje prostředky pro práci se skriptovacími jazyky i pro odborné uživatele. [8]
3.3
Porovnání IBM RFT s alternativními testovacími nástroji
Produkt IBM Rational Functional Tester není jediným monopolním řešením na trhu. Jeho hlavním konkurentem je produkt HP QuickTest Professional. Oba nástroje jsou určeny pro velké projekty, ale existuje i program pro malé firmy - Selenium. Nemá bohužel takový soubor funkčnosti jako konkurenti, ale jelikož je open source, nevyžaduje od potenciálního zájemce žádné finanční náklady. Selenium je objektově-orientovaná aplikace, založená na JavaScriptu, která dokáže analyzovat soubory určité struktury a nacházet v nich příkazy pro automatizované ovládání prohlížeče. Aplikace je poměrně populární, oblíbenosti se těší především mezi malými společnostmi. Existuje verze Selenium IDE, která je rozšířením prohlížeče Firefox - ta umožňuje nahrávat a přehrávat skripty, které představují obyčejné HTML stránky s tabulkou příkazů. Pokud budeme porovnávat Selenium s produktem od IBM, můžeme říci, že oba testovací nástroje nabízejí určité základní možnosti automatizace testování. Nicméně celkově je mezi IBM RFT a aplikací Selenium obrovský rozdíl. Pokud je cílem otestovat pouze základní funkčnost a není problémem, že výstupní skripty budou potřebovat vysokou úroveň korekce a polepšení, pak Selenium dostačuje. V opačném případě IBM RFT poskytuje řadu důležitých doplňků - například používání objektu přímo mezi skriptem a aplikací v rámci testu. To znamená, že v případě změny aplikace není třeba nacházet objekt ve skriptech a měnit vlastnosti, což může ušetřit spoustu času. Dále se vyplatí zmínit, že IBM RFT je úzce propojen s Rational Quality Manager, což zajišťuje velkou úroveň automatizace. Ještě se krátce věnujme poslednímu zmíněnému produktu - Hewlett Packard QTP. Jedná se o komerční nástroj pro automatizované testování, určený k provádění funkčního a regresního testování různých softwarových aplikací a prostředí prostřednictvím uživatelského Stránka - 18 - z 50
rozhraní, jako je nativní GUI nebo webové rozhraní. V případě porovnání s produktem od IBM můžeme tvrdit, že QuickTest Professional má prakticky stejnou funkčnost, včetně kladů i záporů oproti svému přímému konkurentovi. HP QTP má pochopitelnější a uživatelsky přívětivější rozhraní a je poměrně snadné se s ním naučit pracovat v krátkém čase. Mezi zápory zas můžeme zmínit vyšší pořizovací cenu v porovnání s RFT a podporu pouze VBscript, jako skriptovacího jazyka.
3.4
První kroky s IBM RFT
V této podkapitole rozeberu proces instalace IBM Rational Functional Tester, popíšu jednotlivé moduly, nejdůležitější tlačítka. Také se zaměřím na přípravu testovacího prostředí.
3.4.1
Instalace
V této kapitole popisuji instalaci poslední aktuální verze nástroje IBM RFT 8.2.1.1. Před vlastní instalací je potřeba stáhnout instalační soubor z oficiálních stránek korporace IBM (http://www.ibm.com/support/cz/cs/). Pro stažení třicetidenní trial verze je potřeba se zaregistrovat a uvést účel použití nástrojů. Pokud na stávajícím počítači nikdy nebyl nainstalován ani jeden z produktů od IBM Rational, celkový proces začne instalací speciálního průvodce IBM Installation Manager, který bude pomáhat a směrovat celou instalaci a provede vás všemi nezbytnými kroky, potřebnými při instalací nástrojů od IBM. Po stažení instalačních souborů instalujeme IBM Rational Functional Tester pomocí IBM Installation Manager. Poslední verze produktu podporuje následující operační systémy: Red Hat Entrprs Linux (RHEL) Dsktp, SUSE Linux Enterprise Desktop (SLED), SUSE Linux Enterprise Server (SLES), Windows 2000, Windows 7, Windows Server 2003, Windows Server 2008, Windows Vista, Windows XP. Minimální hardwarové požadavky jsou stanoveny následovně: procesor minimálně 1.5 GHz Intel Pentium 4 nebo výkonnější, minimálně 1GB operační paměti. Nástroj také potřebuje alespoň 750 MB volného místa na pevném disku. Functional Tester vede žurnály, aby mohl informovat uživatele o tom, co se děje v průběhu testu. Ve výchozím nastavení jsou tyto žurnály uloženy ve formátu HTML dokumentů. Nicméně pro zobrazení dalších informací je používána konkrétní aplikace „comparator“, která zdůrazňuje rozdíly mezi očekávanými a skutečnými výsledky. Pokud chceme, aby Functional Tester spustil aplikaci „comparator“, na počítači musí být nainstalováno a nakonfigurováno prostředí Java Runtime Environment, které lze zadarmo stáhnout na oficiálních stránkách společnosti Oracle (http://java.com/en/download/). Stránka - 19 - z 50
3.4.2
První spuštění
Po nainstalování můžeme nástroj Functional Tester spustit z menu „Start“ ve Windows, výběrem All Programs > IBM Software Delivery Platform > IBM Rational Functional Tester > Java Scripting. Při prvním spuštění budeme muset zadat adresář pracovního úložiště, jak je znázorněno na obrázku číslo 1. Úložištěm může být libovolný adresář, ve kterém budou uloženy výsledky práce.
Obrázek 1. Výběr adresáře pracovního uložiště (zdroj: Yauhen Rybak)
Po výběru adresáře úložiště se dostaneme na úvodní obrazovku IBM Rational Functional Tester, která je zobrazena na obrázku číslo 2. Hlavní stránka nabízí veškeré prostředky a nastavení potřebné pro testování funkčnosti aplikace. Toto je nezbytné především pro vývojáře, testery nebo inženýry pro zajištění kvality. Na obrázku číslo 2 jsou zobrazeny jednotlivé moduly nástroje: 1. Okno se seznamem projektů - nachází se v levé časti úvodní obrazovky a poskytuje seznam složek, skriptů, protokolů atd. pro otevřený projekt. 2. Editor kódu – slouží k prohlížení a úpravě kódu 3. Pohled na aplikaci – zobrazuje snímky aplikace, které jsou zachyceny při nahrávání skriptů. Stránka - 20 - z 50
4. Úkoly – zobrazuje chyby, varování nebo jiné informace, které jsou generované nástrojem.
Obrázek 2. Úvodní obrazovka IBM RFT při otevřeném projektu (zdroj: Yauhen Rybak)
Dále popíši nejdůležitější tlačítka panelu nástrojů, který je vidět na obrázku číslo 3. Panel je umístěn v horní časti úvodní obrazovky. Nový testovací skript - vytvoření nového prázdného testovacího skriptu Nová objektová mapa - vytvoření nové objektové mapy Nahrát test skript – tlačítko pro nahrávání testovacích skriptů Vložení záznamu do testovacího skriptu Spuštění testovacího skriptu – stisknutím tlačítka bude testovací skript spuštěn Ladění spuštěného testovacího skriptu – spouští aktuální testovací skript a poskytuje informací o ladění 7. Spuštění a nakonfigurování externích nástrojů – umožnuje nastavit externí nástroje, které nejsou součástí RFT 1. 2. 3. 4. 5. 6.
Obrázek 3. Panel nástrojů (zdroj: Yauhen Rybak)
Stránka - 21 - z 50
3.4.3
Příprava testovacího prostředí
Pokud chceme začít pracovat s nástrojem IBM RFT budeme potřebovat připravit prostředí k procesu testování - to znamená vytvořit projekt, ve kterém budou uložena data Functional Testeru. Operaci začneme spuštěním nástroje IBM RFT. Pomocí hlavního menu zvolíme File > New > Functional Test Project. Zobrazí se okno, které je znázorněno na obrázku číslo 4. Jako příklad vytvořím projekt s názvem Test a zvolím dané uložiště. Pro dokončení stiskneme tlačítko Finish.
Obrázek 4. Vytvoření projektu Functional Test (zdroj: Yauhen Rybak)
Jak je vidět na obrázku číslo 5, dvě nové složky byly přidány do okna seznam projektů. Jedna pro ukládání testovacích dat, druhá pro ukládání protokolů s výsledky.
Obrázek 5. Okno se seznamem projektů (zdroj: Yauhen Rybak) Stránka - 22 - z 50
4 Testování webových aplikací nástrojem IBM RFT V této kapitole se zaměřím na popis procesu testování webových aplikací pomocí nástroje IBM Rational Functional Tester. Na začátku popíši proces nastavení pracovního prostředí a testované aplikace. Dále budu popisovat proces automatizace, to znamená zaznamenání testovacích skriptů pomocí daného nástroje.
4.1
Nastavení pracovního prostředí
Před začátkem potřebujeme nastavit pracovní prostředí. To umožní Functional Testeru identifikovat objekty a elementy testované aplikace. Standardně je podporován prohlížeč od společnosti Microsoft Internet Explorer. Pro účely této bakalářské práce jsem při práci s nástrojem používal webový prohlížeč Internet Explorer verze 8. Jako příklad v praktické časti, předvedu, jak lze přidat Mozilla Firefox mezi podporované prohlížeče. Vybereme Configure > Enable Environments for Testing. Zobrazí se okénko „Povolit Prostředí“, jako je zobrazeno na obrázku číslo 6. Stiskneme tlačítko „Add“ a uvedeme adresář uložiště zvoleného prohlížeče. V mém případě Path: C:\Program Files\Mozilla Firefox.
Obrázek 6. Nastavení pracovního prostředí (zdroj: Yauhen Rybak) Stránka - 23 - z 50
4.2
Nastavení testované aplikace
Nastavení testované aplikace nemá na aplikaci samotnou žádný vliv, ani ji jakýmkoliv způsobem nemění. Jedná se čistě o proces vytvoření odkazu v prostředí Functional Testeru, což nám dále usnadňuje spouštění aplikace. Pokud chceme nastavit testovanou aplikací, vybereme Configure > Configure Applications for Testing. V okně „Nastavení testované aplikace“, které je zobrazeno na obrázku číslo 7, se zobrazí seznam všech aplikací, které byly nastaveny pro účely testování s Functional Testerem. Jako webovou aplikaci jsem (coby praktický příklad pro tuto bakalářskou práci) vybral webové stránky obchodu Datart. Pro přidání aplikace do seznamu potřebujeme stisknout tlačítko Add > HTML Application > URL: http://www.datart.cz > Finish. Dále v okně „Nastavení testované aplikace“ vybereme námi zvolený prohlížeč a stiskneme tlačítko Apply.
Obrázek 7. Nastavení testované aplikace (zdroj: Yauhen Rybak)
Stránka - 24 - z 50
4.3
Vytváření skriptu
Testy mohou být vytvořeny psaním kódu, záznamem akcí nebo kombinací těchto způsobů. Když chceme vytvořit nějaký obecný skript, je mnohem jednodušší zaznamenat nutné kroky, a potom teprve upravit skript dle vlastích požadavků. V této podkapitole popisuji postup, jak lze vytvořit skript pomocí nástroje IBM Rational Functional Tester. Jako příklad používám test case z tabulky číslo 1, který popisuje proces registrace na webových stránkách obchodu Datart.
Vložená data
Popis
Očekávaný výsledek
Uživatel otevře webovou stránku http://www.datart.cz/
Objevuje se hlavní stránka
Uživatel stiskne „Registrace“
tlačítko
Objevuje stránka
Uživatel stiskne „Zaregistruj se“
tlačítko
se
registrační
Jméno = „“
Zobrazuje se chyba:
Příjmení = „“
Tento údaj je povinný!
E-mail = „“
Vaše správná adresa!
Heslo = „“
Heslo min 6 znaků!
Heslo pro kontrolu = „“ Mobilní telefon = „“ Uživatel vyplňuje políčka a stiskne tlačítko „zaregistruje se“
Jméno = „Tester“ Příjmení = „Tester“
Zobrazuje se stránka o úspěšné registraci
E-mail = „
[email protected]“ Heslo = „tester12345“ Heslo pro kontrolu = „tester12345“ Mobilní telefon = „“
Tabulka 1. Testovací případ „Registrace“ (zdroj: Yauhen Rybak)
Stránka - 25 - z 50
Pokud chceme vytvořit skript, musíme za prvé spustit IBM RFT a otevřít existující testovací projekt, v mém případě projekt „Test“ (viz obrázek číslo 4). Dále vybíráme File > Fuctional Test Scripts Using Recorder a vyplňujeme název skriptu. Jako příklad, který je zobrazen na obrázku číslo 8, vytvořím skript Test a stisknu tlačítko Finish.
Obrázek 8. Vytvoření testovacího skriptu Test (zdroj: Yauhen Rybak)
Dále se objeví okno „Jak začít“, které je zobrazeno na obrázku číslo 9. V něm bude zaznamenán každý uživatelský krok.
Stránka - 26 - z 50
Obrázek 9. Okno Getting Started (zdroj: Yauhen Rybak)
Pro spuštění vybrané aplikace stiskneme tlačítko „ Konfigurace a spuštění aplikace“ a vybereme požadovaný název ze seznamu, jak je ukázáno na obrázku číslo 10.
Obrázek 10. Výběr aplikaci (zdroj: Yauhen Rybak)
Dále provádíme všechny kroky, které jsou popsány v testovacím případu. Kroky budou zaznamenány a jako výsledek dostaneme testovací skript. Pro ověření očekávaného chování aplikace v procesu testování vytváříme tzv. „kontrolní bod“ (verification point), který při přehrávání testovacího skriptu bude porovnávat skutečné hodnoty se zaznamenanými. V tomto příkladu vytvářením kontrolního bodu ověřím, zda se po zanechání prázdných registračních políček a stisknutí tlačítka „Zaregistruj se“ neobjeví chyba. Pro zapnutí kontrolního bodu stiskneme tlačítko „Insert Verification Point or the Action Command“. Otevře se speciální průvodce, který je zobrazen na obrázku číslo 11. Můžeme si vybrat určitý objekt, podle stavu kterého vytvoříme kontrolní bod. Před zaznamenáním kontrolního bodu bychom měli vidět červenou linii, která leží podél hranice prohlížeče nebo vybraného objektu. Jako příklad v testovacím skriptu jsem vytvořil kontrolní bod v podobě kopie obraStránka - 27 - z 50
zovky (screen shot). Po dokončení procesu registrace buď zavřeme internetový prohlížeč, nebo stiskneme tlačítko „Stop“ v okénku „Jak začít“.
Obrázek 11. Vytváření Kontrolního bodu (zdroj: Yauhen Rybak)
Provedené kroky jsou zaznamenány dvěma způsoby. Prvním je okno se záznamem provedených kroků, uvedené na obrázku číslo 12. Příkaz „klick“ zde znamená stisknutí tlačítek, příkaz „type“ vyplňuje vybraná políčka hodnotami.
Stránka - 28 - z 50
Obrázek 12. Okno se záznamem uživatelských kroků (zdroj:Yauhen Rybak)
Druhým způsobem záznamu je Java kód, který automaticky zaznamenává každou činnost, kterou jsem provedl. Jako přiklad uvedu vkládání hodnoty „Tester“ políčko Příjmení (lastName). Tento krok byl zaznamenán nástrojem od IBM v následujícím kódu: setSimplifiedScriptLine(12); // Click lastName text_lastName().click(atPoint(249, 14)); setSimplifiedScriptLine(13); // Type Value Tester browser_htmlBrowser(document_datartRegistrace(), DEFAULT_FLAGS).inputChars("Tester"); Kde, operátor „click(atPoint(249, 14))” provádí nalezení elementu na stránce podle koordinát (X, Y). Příkaz „inputChars("Tester")“ odpovídá za vložení hodnoty do políčka příjmení. V příloze se nachází celý kód záznamu scénáře „Registrace“.
4.4
Spouštění zaznamenaných testů
Vytvořili jsme testovací skript, teď na jeho základě můžeme spustit test. Potřebujeme mít otevřený skript, kde stiskneme tlačítko „Spustit Functional Test skript“, které se nachází v panelu nástrojů. Zobrazí se okno „Vybrat Log soubor“. V tom okně vybereme název logu, v mém případě „Test“ a stiskneme tlačítko Finish.
Stránka - 29 - z 50
Obrázek 13. Přehrání zaznamenaných testů
Otevře se nastavený internet prohlížeč a testovaná aplikace. Testoval jsem internetový obchod Datart a prvním krokem v testovacím případě bylo otevření stránky s registrací stisknutím tlačítka „Registrace“. Tento krok je zobrazen na obrázku číslo 13. Po spuštění testu se objeví okno „Přehrání zaznamenaných testů“, kde je popsán každý momentálně vykonaný krok. Uživatel dále může zastavit nebo ukončit test pomocí tlačítek „Udělat pauzu“ a „Konec“. Výsledky provedeného testu lze najít v Log souboru, který je vygenerován ve formátu HTML a zobrazuje se po skončení testu v nastaveném prohlížeči. Příklad Log souboru je zobrazen na obrázku číslo 14.
Stránka - 30 - z 50
Obrázek 14. Přiklad Log souboru (zdroj: Yauhen Rybak)
Stránka - 31 - z 50
5 Testování Java aplikace nástrojem IBM RFT V této kapitole na praktickém příkladu ukážu, jak lze otestovat Java aplikaci nástrojem IBM RFT. Věnuji se nastavení nástroje, vytváření a spuštění testovacího skriptu.
5.1
Nastavení pracovního prostředí Java
Tak jak bylo popsáno v minulé kapitole, je třeba nastavit pracovní prostředí, aby IBM RFT mohl identifikovat objekty a elementy testované aplikace. V hlavním menu aplikace vybereme Configure > Enable Environments for Testing. Dále zvolím záložku „Java Environment“. IBM SDP Java Runtime Environment je výchozím prostředím pro testování Java aplikací. Pokud aplikace bude používat jiné JRE, mohu povolit příslušné Java prostředí pomocí daného uživatelského rozhraní, jak je ukázáno na obrázku číslo 15. Přidat prostředí mohu stiskem tlačítka „Add“ a výběru uložiště.
Obrázek 15. Nastavení Java prostředí (zdroj: Yauhen Rybak)
IBM nástroj Rational Functional Tester taký podporuje prostředí Eclipse. Pokud máme nainstalovaný nástroj Eclipse, můžeme přidat dané rozšíření v záložce „Eclipse Platformy“. Stejným způsobem lze postupovat i pro rozšíření SAP.
Stránka - 32 - z 50
5.2
Nastavení testované Java aplikace
Pro nalezení a bezproblémové spuštění testované aplikace nástrojem IBM Rational Functional Tester musíme nastavit uložiště a přidat aplikaci do seznamu testovaných aplikací. Pro provedení této činnosti v hlavním menu nástroje vybereme Configure > Configure Applications for Testing. Zobrazí se okno “Nastavení testované aplikace”. Jako přiklad popíši přidání Java aplikace Distributor SW, tento krok je zaznamenán na obrázku číslo 16. Pro přidání Java aplikace do seznamu stiskneme Add > Java Application > Vybereme uložiště > Finish. V poli JRE vyberu potřebované Java prostředí, jako příklad jsem vybral standardní IBM Rational SDP JRE. Pokud chceme uložit nastavení- stiskneme Apply a potom Finish.
Obrázek 16. Nastavení testované Java aplikace (zdroj: Yauhen Rybak)
5.3
Vytváření skriptu pro Java aplikaci
Vytváření skriptu pro danou verzi testované aplikace může usnadnit testování v budoucnu. Jakmile bude hotova nová verze, můžeme spustit testovací skript a vyzkoušet funkčnost a správnost nové verze, což bude mnohem rychlejší než provádět manuální testování. Stránka - 33 - z 50
V této podkapitole popíši proces testování aplikace Distributor SW, která byla vytvořena studenty z kurzu 4IT115 - Základy softwarového inženýrství na Vysoké Škole Ekonomické v Praze. Tato aplikace slouží jako evidence pro potřeby distributora počítačového softwaru. Aplikace Distributor SW umožňuje vkládat údaje o zákazníkovi do evidence zákazníků, údaje o nové objednávce do evidence objednávek a údaje o novém zboží do evidence výrobků. Jedna objednávka může obsahovat více položek (více výrobků). U každé položky objednávky se sleduje její stav:
nová
objednána ve velkoobchodě
k dodání
zaplacená
V závislosti na těchto stavech aplikace umožňuje zobrazit různé přehledy - výrobky k objednání, výrobky k dodání, zaplacené výrobky. Pro testování dané aplikace budu používat testovací případ, který popisuje proces vytváření nové objednávky v aplikaci Distributor SW, a je zobrazen v tabulce číslo 2.
Vložená data
Popis
Očekávaný výsledek
Uživatel otevře Java aplikaci Distributor SW
Objevuje se okno „Seznam Objednávek“
Uživatel stiskne tlačítko „Vložit objednávku“
Objevuje se okno „Vložení objednávky“
Uživatel stiskne „Vložit položku“
tlačítko
Objevuje se okno „Vložení položky“
Uživatel „Uložit“
tlačítko
stiskne
Kód výrobku = „“
Zobrazuje se chyba:
Počet kusů = „“
„Položky kód výrobku a počet kusů jsou povinné položky!“
Stav položky = „nová“ Uživatel vyplňuje políčka „Kód výrobku“ a „Počet kusů“ a stiskne tlačítko „Uložit“
Kód výrobku = „V0001“ V okně „Vložení objednávky“ do seznamu je přidána nová Počet kusů = „2“ položka: Stav položky = „nová“ Kód výrobku = „V0001“ Název výrobku =„Kvanto“ Stránka - 34 - z 50
Počet kusů = „2“ Stav položky = „nová“ Uživatel vyplňuje pole „Zákazník č.“ a stiskne tlačítko „Uložit“
Zákazník č. = „Z0001“
Objevuje se upozornění: „Uložit změny v objednávce?“
Objevilo se upozornění „Uložit změny v objednávce?“ a uživatel stiskne tlačítko „Ano“
Zobrazuje se okno „Seznam Objednávek“, kde do seznamu byla přidána objednávka: Kód = „OBJ004“ Zákazník =„Bronislav Malý“ Datum = „30-03-2012“ Vyřízené položky = „0“ Celková cena = „9000“
Objevilo se okno „Seznam Objednávek“ a uživatel stiskne tlačítko „Uložit“
Objevuje se upozornění: „Opravdu chcete uložit všechna data v paměti do souboru?“
Objevilo se upozornění:
Uložení proběhlo úspěšně
„Opravdu chcete uložit všechna data v paměti do souboru?“ a uživatel stiskne tlačítko „Ano“
Tabulka 2. Testovací případ „Vytváření nové objednávky“ (zdroj: Yauhen Rybak)
Pokud chceme vytvořit skript pro testování Java aplikace, musíme postupovat stejným způsobem, jako při testování webové aplikace. Za prvé musíme spustit IBM RFT a otevřít existující testovací projekt, v mém případě projekt „Test“ (viz obrázek číslo 4). Dále vybíráme File > Fuctional Test Scripts Using Recorder a vyplňujeme název skriptu. Vytvořím skript Test1 (viz obrázek číslo 8) a stisknu tlačítko Finish. Po provedení těchto činností se otevře okno „Jak začít“, které je zobrazeno na obrázku číslo 9. Dále v okně „Jak začít“ stisknu tlačítko „ Konfigurace a spuštění aplikaci“ (jedná se o třetí tlačítko zleva, které vypadá jako dialogové okno a před ním zelený trojúhelník) a vyberu danou aplikaci ze seznamu. V mém případě to je distributor. Pokud udělám všechno správně, otevře se aplikace „Distributor SW“ a vedle bude otevřeno okno „Jak začít“, kde bude napsáno „Zápis“ (recording). Přiklad je uveden na obrázku číslo 17. Stránka - 35 - z 50
Obrázek 17. Příklad zaznamenání testovacího skriptu (zdroj: Yauhen Rybak)
Dále budu postupovat podle kroků, popsaných v testovacím případě „Vytváření nové objednávky“. Jenom se zastavím u kroku číslo 5 (Uživatel vyplňuje polička „Kód výrobku“ a „Počet kusů“ a stiskne tlačítko „Uložit“). V daném místě vytvořím kontrolní bod (verification point), pro kontrolu jestli hodnoty jsou vloženy do okna „Vložení objednávky“. Pro vytvoření kontrolního bodu použiji tlačítko „Insert Verification Point or the Action Command“ (jedná se o čtvrté tlačítko zleva v okně „Jak začít“) a přetáhnu ho do pole objednávky, jako je ukázáno na obrázku číslo 18, aby políčko bylo označeno červeným rámečkem.
Obrázek 18. Označení objednávky pro vytvoření kontrolního bodu (zdroj: Yauhen Rybak)
Stránka - 36 - z 50
Pokud udělám všechno správně, zobrazí se pomocník „Verification Point and Action Wizard“. Stiskneme Next, dále v okně „Data Value“ vybereme „Table contents“(obsah tabulky) a stiskneme Next. Jako výsledek se dostaneme do okna „Data kontrolního bodu“, ve kterém je vidět jaké hodnoty jsme zaznamenali (viz obrázek číslo 19). Při následujícím spuštění testu, RFT ukáže rozdíly mezi aktuálními hodnotami a hodnotami uloženými v kontrolním bodu.
Obrázek 19. Hodnoty zaznamenané v kontrolním bodu (zdroj: Yauhen Rybak)
Dále pokračujeme v provádění kroků testovacího případu „Vytváření nové objednávky“ až do posledního bodu. Pro ukončení operace a generování skriptu stisknu tlačítko „Stop“ nebo zavřu Java aplikaci. Tímto způsobem jsem vytvořil testovací skript, který lze opakovatelně spouštět, příkladem může být regresní testování, kdy budeme spouštět testy s každou novou verzí aplikace. Jako výsledek dostanu Java kód, který je uveden v příloze číslo 2. „Kód záznamu scénáře „Vytváření nové objednávky““ a okno se záznamem uživatelských kroků, který je zobrazen na obrázku číslo 12. V pravé části hlavního menu lze také najít Průzkumník skriptu (script explorer), který je zobrazen na obrázku číslo 20. Průzkumník skriptu poskytuje uživateli informaci o skriptu, jako například hierarchie tříd, data pooly, kontrolní body a objekty související s testem.
Stránka - 37 - z 50
Obrázek 20. Průzkumník skriptu (zdroj: Yauhen Rybak)
5.4
Spouštění zaznamenaných testů
Po ukončení nahrávání si můžete přehrát skript, který jsme vytvořili. Functional Tester projde všemi nahranými akcemi, což vlastně automatizuje proces testování. Vytvořili jsme testovací skript, teď na jeho základě můžeme spustit test. Potřebujeme mít otevřený skript, kde stiskneme tlačítko „Spustit Functional Test skript“, které se nachází v panelu nástrojů. Zobrazí se okno „Vybrat Log soubor“, kde vyplníme název log souboru a stiskneme tlačítko Finish. Jako výsledek se zobrazí okno „Playback“ (viz obrázek číslo 13) a otevře se testována aplikace. Po dokončení přehrávání- se výsledky testu zobrazí v protokolu, praktický příklad je zobrazen na obrázku číslo 20, log soubor testované Java aplikace. Výsledky zahrnují veškeré zaznamenané události, jako je selhání kontrolních bodů, další chyby a varování.
Stránka - 38 - z 50
Obrázek 21. Log soubor Test1 (zdroj: Yauhen Rybak)
Stránka - 39 - z 50
6 Závěr Během posledních deseti let pronikly informační technologie a software do všech sfér lidské činnosti. Distribuce softwarových systémů dosáhla stádia, kdy se stáváme stále více závislí na úspěšném rozvoji a poskytování softwaru. S rostoucími sazbami na softwarovém trhu vzrůstá potřeba vyvíjení většího počtu softwarových produktů za kratší časové intervaly. Taková situace klade vysoké nároky na vývojáře a testery, a to nejen pokud jde o urychlení vývoje softwarových produktů, ale také o zajištění odpovídající úrovně kvality. Za těchto okolností se na přední místo posouvají technologie a metody testování softwaru, které umožnují v pravý čas odhalit a opravit chyby. Vysoce kvalitní software je reputací firmy, proto je potřeba se seriózně věnovat problematice testování, což ve výsledku pomůže nejen udržet pozici na trhu, ale i dobýt nové zákazníky. V současné době existující metodiky testování softwaru bohužel neumožnují jednoznačně a plně identifikovat všechny vady a chyby, ani zajistit bezproblémový běh a provoz analyzovaného programu. Proto jsou všechny metody testování založeny na formálním procesu prověřování kvality při vývoji softwaru. Takový proces formální verifikace nebo validace nemůže zajistit ani garantovat neexistenci chyby v produktu kvůli lidskému faktoru, který je přítomen ve všech fázích životního cyklu softwaru. Existuje velký počet přístupů k řešení problematiky testování a ověřování kvality programů. Efektivní testování komplexních softwarových produktů je ovšem velice kreativním procesem, který nepředstavuje jenom pouhé dodržování přesných a jasných postupů různých metodik. Ve své bakalářské práci jsem se snažil seznámit čtenáře s oblastí testování softwaru, popsal jsem zde nejdůležitější pojmy, klasifikace, druhy a typy testů. Cílem této práce bylo, kvůli nedostatku literatury v českém jazyce, vytvořit uživatelskou příručku nástroje IBM Rational Functional Tester pro začínající testery. Prošel jsem celým procesem testování, začínajícím instalováním jmenovaného nástroje, prvním spuštěním a základními nastaveními. Dále jsem na praktickém příkladu ukázal proces testování webových a Java aplikací a vytvořil jsem testovací skript, který lze používat pro automatizaci testování.
Stránka - 40 - z 50
Seznam odborné literatury [1] Glenford J. Myers, "The Art of Software Testing", John Wiley and Sons 2004, ISBN: 0471469122 [2] PATTON, Ron. Testování softwaru. 1. Vyd. Praha, Česká republika: Computer Press, 2002. ISBN 8072266365 [3] TAMRES, Louise. Introducing Software Testing, Addison-Wesley Professional, 2002. ISBN 978-0201719741 [4] CROSBY, Philip B. Quality is Free: The Art of Making Quality Certain. Penguin Books Ltd, 1982. ISBN 0451624688. [5] ISO 8402:1994, Quality management and Quality assurance [6] ISO 9000: 2000, Eurachem Guide. The Fitness for Purpose of Analytical Methods 1998 [7] BOROVCOVÁ, Anna. Testování webových aplikací. Praha, 2008. 140s. Diplomová práce. Univerzita Karlová v Praze [8] IBM. IBM Rational Functional Tester [online]. [cit. 2012-03-13]. Dostupné z: http://www-01.ibm.com/software/awdtools/tester/functional/
Stránka - 41 - z 50
Seznam použitých obrázků a tabulek Seznam obrázků Obrázek 1. Výběr adresáře pracovního uložiště (zdroj: Yauhen Rybak) .................................- 20 Obrázek 2. Úvodní obrazovka IBM RFT při otevřeném projektu (zdroj: Yauhen Rybak) .........- 21 Obrázek 3. Panel nástrojů (zdroj: Yauhen Rybak) .................................................................- 21 Obrázek 4. Vytvoření projektu Functional Test (zdroj: Yauhen Rybak) ..................................- 22 Obrázek 5. Okno se seznamem projektů (zdroj: Yauhen Rybak) ...........................................- 22 Obrázek 6. Nastavení pracovního prostředí (zdroj: Yauhen Rybak) .......................................- 23 Obrázek 7. Nastavení testované aplikace (zdroj: Yauhen Rybak) ..........................................- 24 Obrázek 8. Vytvoření testovacího skriptu Test (zdroj: Yauhen Rybak) ...................................- 26 Obrázek 9. Okno Getting Started (zdroj: Yauhen Rybak) ......................................................- 27 Obrázek 10. Výběr aplikaci (zdroj: Yauhen Rybak)................................................................- 27 Obrázek 11. Vytváření Kontrolního bodu (zdroj: Yauhen Rybak)...........................................- 28 Obrázek 12. Okno se záznamem uživatelských kroků (zdroj:Yauhen Rybak)..........................- 29 Obrázek 13. Přehrání zaznamenaných testů .......................................................................- 30 Obrázek 14. Přiklad Log souboru (zdroj: Yauhen Rybak) .......................................................- 31 Obrázek 15. Nastavení Java prostředí (zdroj: Yauhen Rybak)................................................- 32 Obrázek 16. Nastavení testované Java aplikace (zdroj: Yauhen Rybak) .................................- 33 Obrázek 17. Příklad zaznamenání testovacího skriptu (zdroj: Yauhen Rybak) .......................- 36 Obrázek 18. Označení objednávky pro vytvoření kontrolního bodu (zdroj: Yauhen Rybak) ....- 36 Obrázek 19. Hodnoty zaznamenané v kontrolním bodu (zdroj: Yauhen Rybak) .....................- 37 Obrázek 20. Průzkumník skriptu (zdroj: Yauhen Rybak) .......................................................- 38 Obrázek 21. Log soubor Test1 (zdroj: Yauhen Rybak) ...........................................................- 39 -
Seznam tabulek Tabulka 1. Testovací případ „Registrace“ (zdroj: Yauhen Rybak)...........................................- 25 Tabulka 2. Testovací případ „Vytváření nové objednávky“ (zdroj: Yauhen Rybak) .................- 35 Stránka - 42 - z 50
Terminologický slovník Bug
Softwarová chyba
Log soubor
V rámci této bakalářské práce můžeme definovat jako soubor, který poskytuje informaci o proběhlých testech
Installation Manager
Speciální průvodce, který pomáhá a směruje během celého procesu instalace
Code Editor
Speciální editor, který slouží k prohlížení a úpravě kódu
UML
Unifikovaný Modelovací Jazyk, grafický jazyk pro objektové modelování
Program
Seznam instrukcí, napsaných v programovacím jazyce, který se používá ke kontrole chování počítačových stroje
Open Source
Bezplatný software s otevřeným zdrojovým kódem
Testování
Proces, který potvrzuje správnost programu. Ukazuje, že v programu nejsou chyby
Softwarová chyba
Odchylka skutečných výsledků od očekávaných, kdy očekávané výsledky jsou dané specifikací
Kvalita softwaru
Sada softwarových funkcí souvisejících s jeho schopností plnit stanovené a předpokládané potřeby a cíle
Verifikace
Proces, jehož cílem je ověření, jestli produkt vyhovuje všem požadavkům a specifikacím
Validace
Potvrzení získané prostřednictvím poskytnutí objektivních důkazů, že požadavky na specifické zamýšlené použití nebo specifickou aplikaci byly splněny
Testovací plán
Dokument, který řídí celý proces testování a obsahuje určení rozsahu testování
Testovací případ
Dokument, ve kterém je popsán seznám kroků testujících jeden konkrétní případ
Testovací scénář
Logické spojení několika po sobě jdoucích Stránka - 43 - z 50
testovacích případů do tematicky uspořádaného scénáře Testovací skript
Přepis jednoho či několika testovacích případů nebo scénářů do programovacího jazyka, aby spolu tvořily logický celek, určený k automatickým testům aplikace
Testovací data
Reálná nebo vygenerovaná data, určená pro účely testování
Hlášení chyby
Oznámení popisující možnou chybu, postup vyvolání jejího projevu, její dopad, význam, stav opravy a další náležitosti, kterými se chyba vyznačuje
Manuální testování
Testování, které probíhá prostřednictvím člověka, který provádí testy podle předem stanovených testovacích směrnic, podle vlastních zkušeností nebo náhodně
Automatizované testování
Testování, které představuje spouštění naprogramovaných testů ve speciálním programu
Statické testování
Testování, které se provádí bez nutnosti spuštění programového kódu
Dynamické testování
Testování, které se provádí spouštěním programu a kontrolou jeho funkčnosti
Testování černé skříňky
Testování, kdy tester má přístup k programu jenom přes stejné rozhraní jako zákazník nebo uživatel
Testování bílé skříňky
Testování, kdy tester má přístup ke zdrojovému kódu programu a zná vnitřní datové a programové struktury
Testování šedé skříňky
Testování, kdy tester má přístup ke zdrojovému kódu, ale obvykle při spouštění testu, nepotřebuje ke kódu přistupovat
Testy funkcionality
Testování funkčnosti aplikace - aby splňovala požadavky
Bezpečnostní testy
Testovací strategie, která se používá k testování bezpečnosti systému, stejně jako k analýze rizik spojených s ochranou aplikací před hackery, viry nebo neoprávněným Stránka - 44 - z 50
přístupem k důvěrným údajům. Testy interoperability
Funkční testování, které ověří schopnosti aplikace pro interakci s jedním nebo více komponenty nebo systémy.
Zátěžové testování
Automatizované testování, které simuluje práci a chování určitého počtu uživatelů v jednom společném prostředí a ověřuje výkonnost programu pod vlivem zatížení
Stresové testování
Testování, které umožní vyzkoušet, jak efektivní jsou aplikace a systém jako celek v podmínkách stresu a posoudit schopnost systému k regeneraci
Testování stability a spolehlivosti
Druh testu, který ověřuje provozuschopnost programu při dlouhodobém testování za středního zatížení.
Testování použitelnosti
Metoda testování orientovaná na stanovení úrovně pohodlnosti použití, srozumitelnosti a uživatelské přitažlivosti při určitých podmínkách daných ve specifikacích nebo požadavcích
Testování instalace
Testování, kdy hlavním cílem je ověření úspěšné instalace a konfigurace, upgradu nebo odstranění softwaru
Testování k selhání a obnovení
Testování, které kontroluje program ve smyslu schopnosti k odolnosti a úspěšnému obnovení po případném selhání, které bylo způsobeno poruchou hardwaru nebo softwaru
Dýmové testování
Testování, které je prováděno za účelem kontroly všech modulů systému ve věci ověření provozuschopnosti
Regresní testování
Testování, které ověřuje, jestli se ve funkční verzi programu v důsledku změny neobjevila chyba
Sanitní testování
Testování, dostačující dokázat, že konkrétní funkce funguje v souladu s požadavky uvedenými v zadávací dokumentaci
Stránka - 45 - z 50
Použité zkratky RFT
Rational Functional Tester
SW
Software
GUI
Grafical User Interface
HTML
Hyper Text Markup Language
IDE
Integrated Development Environment
RUP
Rational Unified Process
IBM
International Business Machines
UML
Unified Modelling Language
JRE
Java Runtime Environment
Stránka - 46 - z 50
Přílohy
Příloha 1. Kód záznamu scénáře „Registrace“ // DO NOT EDIT: This file is automatically generated each time the script is modified. // To modify this file either use 'Insert Java Code Snippet'or 'Insert Java Method' import resources.TestHelper; import com.rational.test.ft.*; import com.rational.test.ft.object.interfaces.*; import com.rational.test.ft.object.interfaces.SAP.*; import com.rational.test.ft.object.interfaces.WPF.*; import com.rational.test.ft.object.interfaces.dojo.*; import com.rational.test.ft.object.interfaces.siebel.*; import com.rational.test.ft.object.interfaces.flex.*; import com.rational.test.ft.object.interfaces.generichtmlsubdomain.*; import com.rational.test.ft.script.*; import com.rational.test.ft.value.*; import com.rational.test.ft.vp.*; import com.ibm.rational.test.ft.object.interfaces.sapwebportal.*; // BEGIN custom imports //TODO: Add custom imports here. // END custom imports /** * Description : Functional Test Script * * @author Rybak */ public class Test extends TestHelper { /** * Script Name :
Test Generated :
25.03.2012 15:45:05 * Description : Functional Test Script Original Host : WinNT Version 6.1 * Build 7601 (S) * * @since 2012/03/25 * @author Rybak */ public void testMain(Object[] args) { setSimplifiedScriptLine(1); // Start Application www.datart.cz startApp("www.datart.cz"); // Group: DATART | Opravdový elektro specialista: // http://www.datart.cz/index.html setSimplifiedScriptLine(2); // DATART | Opravdový elektro specialista:// http://www.datart.cz/index.html timerStart("DATARTOpravdovýelektrospecialista_2"); setSimplifiedScriptLine(3); // Click Registrace link_registrace().click(); timerStop("DATARTOpravdovýelektrospecialista_2"); // Group: HtmlDialog setSimplifiedScriptLine(4); // HtmlDialog timerStart("HtmlDialog_4"); setSimplifiedScriptLine(5); // Click Html.DialogButton&Yes dialog_htmlDialogButtonYes().click();
Stránka - 47 - z 50
timerStop("HtmlDialog_4"); // Group: // HTML Browser setSimplifiedScriptLine(6); // // HTML Browser timerStart("HTMLBrowser_6"); setSimplifiedScriptLine(7); // Click htmlBrowser browser_htmlBrowser(document_datartRegistrace(), DEFAULT_FLAGS).click(atPoint(740, 802)); setSimplifiedScriptLine(8); // Verify Image // RootTestObject.getScreenTestObject RootTestObject.getScreenTestObject().performTest(Screen_imageVP()); timerStop("HTMLBrowser_6"); // Group: DATART | Registrace: // https://www.datart.cz/muj_datart/registrace/index.html setSimplifiedScriptLine(9); // DATART | Registrace: //https://www.datart.cz/muj_datart/registrace/index.html timerStart("DATARTRegistracehttpswwwdatart_9"); setSimplifiedScriptLine(10); // Click firstName text_firstName().click(atPoint(256, 20)); setSimplifiedScriptLine(11); // Type Value Tester browser_htmlBrowser(document_datartRegistrace(), DEFAULT_FLAGS) .inputChars("Tester"); setSimplifiedScriptLine(12); // Click lastName text_lastName().click(atPoint(249, 14)); setSimplifiedScriptLine(13); // Type Value Tester browser_htmlBrowser(document_datartRegistrace(), DEFAULT_FLAGS) .inputChars("Tester"); setSimplifiedScriptLine(14); // Click Vaše e-mailová adresa ve správném text_vaeEMailovAdresaVeSprv().click(atPoint(220, 11)); setSimplifiedScriptLine(15); // Type Value
[email protected] browser_htmlBrowser(document_datartRegistrace(), DEFAULT_FLAGS) .inputChars("
[email protected]"); setSimplifiedScriptLine(16); // Click Přihlašovací heslo min. 6 znaků// dlouhé text_pihlaovacHesloMin6Znak().click(atPoint(204, 23)); setSimplifiedScriptLine(17); // Type Value tester12345 browser_htmlBrowser(document_datartRegistrace(), DEFAULT_FLAGS) .inputChars("tester12345"); setSimplifiedScriptLine(18); // Click Heslo pro kontrolu musí mít // alespoň 6 znaků a shodovat se s hesl text_hesloProKontroluMusMtAl().click(atPoint(191, 17)); setSimplifiedScriptLine(19); // Type Value tester12345 browser_htmlBrowser(document_datartRegistrace(), DEFAULT_FLAGS) .inputChars("tester12345"); setSimplifiedScriptLine(20); // Click datart-bar html_datartBar().click(atPoint(671, 0)); timerStop("DATARTRegistracehttpswwwdatart_9"); // Group: HtmlDialog setSimplifiedScriptLine(21); // HtmlDialog timerStart("HtmlDialog_21"); setSimplifiedScriptLine(22); // Click Html.DialogButton&Yes dialog_htmlDialogButtonYes().click(); timerStop("HtmlDialog_21"); }
Stránka - 48 - z 50
// tvaru
}
Příloha 2. Kód záznamu scénáře „Vytváření nové objednávky“ // DO NOT EDIT: This file is automatically generated each time the script is modified. // To modify this file either use 'Insert Java Code Snippet'or 'Insert Java Method' import resources.Test1Helper; import com.rational.test.ft.*; import com.rational.test.ft.object.interfaces.*; import com.rational.test.ft.object.interfaces.SAP.*; import com.rational.test.ft.object.interfaces.WPF.*; import com.rational.test.ft.object.interfaces.dojo.*; import com.rational.test.ft.object.interfaces.siebel.*; import com.rational.test.ft.object.interfaces.flex.*; import com.rational.test.ft.object.interfaces.generichtmlsubdomain.*; import com.rational.test.ft.script.*; import com.rational.test.ft.value.*; import com.rational.test.ft.vp.*; import com.ibm.rational.test.ft.object.interfaces.sapwebportal.*; // BEGIN custom imports //TODO: Add custom imports here. // END custom imports /** * Description : Functional Test Script * @author Rybak */ public class Test1 extends Test1Helper { /** * Script Name :
Test1 * Generated :
30.03.2012 17:48:26 * Description : Functional Test Script * Original Host : WinNT Version 6.1 Build 7601 (S) * * @since 2012/03/30 * @author Rybak */ public void testMain(Object[] args) { setSimplifiedScriptLine(1); //Start Application distributor startApp("distributor"); // Group: Seznam Objednavek setSimplifiedScriptLine(2); //Seznam Objednavek timerStart("SeznamObjednavek_2"); setSimplifiedScriptLine(3); //Click Vlozit objednavku vlozitObjednavku().click(); timerStop("SeznamObjednavek_2"); // Group: Vlozeni objednavky setSimplifiedScriptLine(4); //Vlozeni objednavky timerStart("Vlozeniobjednavky_4"); setSimplifiedScriptLine(5); //Click Vlozit polozku vlozitPolozku().click(); timerStop("Vlozeniobjednavky_4");
Stránka - 49 - z 50
// Group: Vlozeni polozky setSimplifiedScriptLine(6); //Vlozeni polozky timerStart("Vlozenipolozky_6"); setSimplifiedScriptLine(7); //Type Value V0001 vlozeniPolozky().inputChars("V0001"); setSimplifiedScriptLine(8); //Click Počet kusů: poetKus().click(atPoint(80,6)); setSimplifiedScriptLine(9); //Type Value 2 vlozeniPolozky().inputChars("2"); setSimplifiedScriptLine(10); //Click Ulozit ulozit().click(); timerStop("Vlozenipolozky_6"); // Group: Vlozeni objednavky setSimplifiedScriptLine(11); //Vlozeni objednavky timerStart("Vlozeniobjednavky_11"); setSimplifiedScriptLine(12); //Verify Table Contents of JTable jTable().performTest(_contentsVP()); setSimplifiedScriptLine(13); //Click Zákazník č.: zkaznk().click(atPoint(23,9)); setSimplifiedScriptLine(14); //Type Value Z0001 vlozeniObjednavky().inputChars("Z0001"); setSimplifiedScriptLine(15); //Click Ulozit ulozit2().click(); timerStop("Vlozeniobjednavky_11"); // Group: Uložení objednávky setSimplifiedScriptLine(16); //Uložení objednávky timerStart("Uloženíobjednávky_16"); setSimplifiedScriptLine(17); //Click Ano ano().click(); timerStop("Uloženíobjednávky_16"); // Group: Seznam Objednavek setSimplifiedScriptLine(18); //Seznam Objednavek timerStart("SeznamObjednavek_18"); setSimplifiedScriptLine(19); //Click Ulozit ulozit3().click(); timerStop("SeznamObjednavek_18"); // Group: Uložení do souborů setSimplifiedScriptLine(20); //Uložení do souborů timerStart("Uloženídosouborů_20"); setSimplifiedScriptLine(21); //Click Ano ano2().click(); timerStop("Uloženídosouborů_20"); } }
Stránka - 50 - z 50