Integrace testovacích nástrojů pro zlepšení kvality softwaru Alena Buchalcevová, Jan Ženíšek
Vysoká škola ekonomická v Praze, Fakulta informatiky a statistiky, katedra informačních technologií nám. W. Churchilla 4, 130 67 Praha 3 e-mail:
[email protected],
[email protected]
Abstrakt: Testování a řízení kvality softwaru se dnes již neobejde bez softwarových nástrojů. Společnosti většinou s ohledem na cenu využívají pro podporu testování open-source nástroje, které jsou ale používány, instalovány a nasazovány samostatně bez jakékoliv integrace a jejich nasazení je často obtížné. Proto je v Kompetenčním centru Software Quality Assurance na VŠE v Praze ve spolupráci s firmou Trask solutions a. s. realizován projekt vývoje Integrovaného testovacího nástroje, který má poskytnout jednotné řešení, které propojuje řízení testování, sledování chyb a automatizované testování různého typu (funkční, zátěžové, integrační a jiné), a to na bázi open-source nástrojů. Klíčová slova: řízení kvality softwaru, testování, automatizované testování, nástroje, spolupráce s praxí Abstract: Software tools are needed to support testing and software quality processes. Given the high price of commercial tools supporting testing, companies strive to utilize open source tools that are free of charge. However, these tools are used, installed and deployed independently without any integration in place. Alongside, it is quite difficult to deploy such tools because they require numerous customizations due to their universality (openness) that prolong the entire deployment process. Therefore the Software Quality Assurance Competence Centre at the University of Economics in Prague in collaboration with the Trask Solutions a.s. company started a project aimed at development of an Integrated Testing Tool (ITN). The main aim of the project is to develop unified solution linking up test management, bug management and individual applications for automated software testing (functional, performance, integration and other) on the basis of open source tools. Keywords: Software Quality Assurance, testing, automated testing, tools, academicindustry collaboration
1. Úvod Význam informačních systémů a informačních a komunikačních technologií (IS/ICT) ve společnosti stále roste a s tím roste i význam řízení kvality při vývoji softwaru, jak uvádí například (Orso & Rothermel, 2014). Ačkoliv je obecně testování softwaru považováno za podstatnou součást procesu vývoje, je často do jisté míry přehlíženo, a to jak z pohledu zdrojů, tak i z pohledu využívání nových přístupů a technologií. I v současné době je testování prováděno až v závěrečných fázích projektu, což vede k pozdnímu odhalení chyb a vyšším nákladům, protože náklady na opravu chyb rostou SYSTÉMOVÁ INTEGRACE 1-2/2015
29
Alena Buchalcevová, Jan Ženíšek
exponenciálně v čase. Chyba nalezená v úvodní fázi projektu je odstraněna s výrazně nižšími náklady než chyba odhalená v závěru projektu (Patton, 2002). Jak ukazuje Winter et al. (2011) tradiční přístup ke kvalitě softwaru vyžadující kompletní, testovatelné a konzistentní požadavky, trasovatelnost požadavků k návrhu, kódu a testovacím případům a podrobnou dokumentaci, je nahrazován agilním přístupem. S rostoucím významem kvality softwaru roste i význam lidských zdrojů, které se účastní procesu vývoje softwaru, zejména jejich úrovně znalostí, dovedností a zkušenosti, které představují významný faktor úspěšnosti. Průzkum zaměřený na testování a řízení kvality softwaru v České republice (Havlickova, 2012) ukázal velmi nízkou úroveň znalostí v oblasti řízení kvality softwaru a také málo dostupných školení v této oblasti. Je zde tedy prostor, aby se vysoké školy zapojily do procesu výchovy specialistů v oblasti testování a řízení kvality softwaru. Pilgrim (2013) na základě průzkumů prováděných v Austrálii konstatuje, že existuje napětí mezi univerzitami a průmyslem ve vztahu k obsahu studijních programů v oblasti ICT. Univerzity se zaměřují spíše na klíčové základní znalosti, než na speciální ICT dovednosti a zaměstnavatelé nebyli spokojeni se znalostmi a dovednostmi studentů v oblasti byznys procesů, řízení projektu a komunikačních dovedností. Poukazuje na to, že základní dovednosti, které praxe požaduje, jsou týmová práce, testování a ověřování možností, komunikační dovednosti, měření kvality a zlepšování procesů. Průzkumy požadavků praxe a struktury znalostí a dovedností absolventů vysokých škol byly prováděny i v České republice, v letech 2006 a 2010 (Voříšek et al., 2007), (Maryška et al., 2012). Doucek, Maryska & Novotny (2014) porovnávají výsledky obou těchto průzkumů a konstatují, že došlo k podstatnému zlepšení ve sladění potřeb praxe se znalostmi a dovednostmi, které poskytují univerzity. V těchto průzkumech ale nebyla explicitně definována znalostní oblast Řízení kvality softwaru ani role inženýra kvality či testera, takže o sladění potřeb v této oblasti nemáme přesné informace. Je ale jasné, že pro zajištění rostoucích potřeb praxe v oblasti řízení kvality softwaru a testování je třeba vychovávat studenty s odpovídajícími znalostmi a dovednostmi. Jak ukazuje např. Rusu et al. (2009) mnohé dovednosti, které by studenti měli mít, mohou získat jen praxí. To zahrnuje komunikaci se zákazníkem, napjaté termíny a rozpočty, práci v týmu. K podobným závěrům dochází i Eldh & Punnekkat (2012), kteří konstatují, že studenti se učí různé procesy teoreticky, ale často jim chybí reálná praktická zkušenost, aby chápali odlišnosti, které ovlivňují softwarový systém. Způsobem, jak umožnit studentům účast na praktických projektech, je spolupráce akademické sféry s praxí. Existuje řada prací, které ukazují význam takové spolupráce (Wohlin, 2013; Mandviwalla et al., 2015), další popisují její přínosy (Lee, 2000) a výzvy (Runeson, Minör & Svenér, 2014) či získané zkušenosti (Bučar & Rojec, 2015). Proto vzniklo v roce 2012 i kompetenční centrum Software Quality Assurance (SQA), které působí na Fakultě informatiky a statistiky Vysoké školy ekonomické v Praze. Cílem kompetenčního centra SQA je poskytovat firmám odbornou pomoc při plánování a realizaci procesů řízení kvality softwaru, zejména testování. V polovině roku 2014 bylo kompetenční centrum zkontaktováno českou softwarovou společnosti TRASK solutions a.s. s návrhem na uzavření spolupráce a s nabídkou vytvoření technického řešení cíleného na komplexní a integrované použití opensource nástrojů při řízení kvality softwaru. Z návrhu tohoto technického řešení vznikl Projekt vývoje Integrovaného testovacího nástroje (zkráceně ITN), kterému je věnován tento článek. 30
SYSTÉMOVÁ INTEGRACE 1-2/2015
Integrace testovacích nástrojů pro zlepšení kvality softwaru
2. Současný stav v oblasti testování Jak už bylo zmíněno v úvodu, význam řízení kvality softwaru narůstá, a je to patrné i v České republice. Svědčí o tom mimo jiné i připravovaná lokalizace mezinárodní normy ISO/IEC/IEEE 29119 Softwarové a systémové inženýrství – Testování softwaru. Na vysokých školách se vyučují zejména metodiky, normy a standardy pro procesy vývoje softwaru a řízení kvality. Buchalcevová & Kučera (2008) podrobně analyzují, jak je testování softwaru adresováno ve stávajících metodikách pro vývoj softwaru a Buchalcevová (2011) pak zkoumá, jak jsou v metodikách pro budování informačních systémů adresovány normy kvality softwaru. V praxi se naproti tomu v oblasti testování uplatňují spíše profesní certifikace, zejména ISTQB (ISTQB, 2011). Králová (2013) v rámci diplomové práce vytvořila Metodiku testování podle mezinárodních praktik a standardů, která se snaží svět metodik a nejlepších praktik a profesních certifikací propojit. Testování a řízení kvality softwaru se dnes již neobejde bez softwarových nástrojů. Jde o různé typy nástrojů, které můžeme rozdělit do několika kategorií: nástroje pro řízení testů, nástroje pro sledování chyb, nástroje pro automatizované funkční testování, nástroje pro automatizované zátěžové testování nástroje pro automatizované integrační testování Nástroje pro řízení testů zahrnují plánování testů, popis, spouštění testů a reportování výsledků. Z komerčních nástrojů jsou nejčastěji používané HP Quality Center a IBM Rational Quality Manager. Z open-source produktů jsou nejznámější Testlink, Testopia, Tarantula, QAbook free test management tool a další. Nástroje pro sledování chyb umožňují zadávat chyby, doplňovat k nim atributy, posuzovat je, přiřazovat je k vyřešení, sledovat je a zaznamenávat jejich vyřešení. Nejpoužívanějšími nástroji na sledování chyb jsou Bugzilla, Mantis a Jira (Roudenský & Havlíčková, 2013). Automatizace testování je nejčastěji spojována s regresním testováním, kdy je třeba ověřit, že modifikace nezpůsobily defekty v nezměněných částech systému. V rámci automatizovaného testovaní rozlišujeme automatizované funkční testování, zátěžové testování, integrační testování, penetrační testování, bezpečnostní testování a další. Automatizované funkční testování slouží k automatizaci testů webových, desktopových a případně mobilních aplikací. Tyto nástroje standardně podporují nahrávání testů, úpravu vytvořeného skriptu, testování řízené daty a v některých případech i vytváření testů za pomoci klíčových slov (Roudenský & Havlíčková, 2013). Automatizované funkční testy ověřují funkční vlastnosti softwaru poskytované přes aplikační rozhraní (uživatelské rozhraní). Nejvýznamnější komerčním nástrojem v této kategorii je HP Unified Functional Testing (dříve HP Quick Test Professional), který používá více než 30% společností (SwissQ & Universitat St. Gallen, 2013). Další komerční nástroje jsou IBM Rational Functional Tester, Microsoft Visual Studio Test Professional, SmartBear Software TestComplete a další. Mezi nejpoužívanější opensource nástroje této kategorie patří Selenium, Watir, WatiN (Roudenský & Havlíčková, 2013).
SYSTÉMOVÁ INTEGRACE 1-2/2015
31
Alena Buchalcevová, Jan Ženíšek
Nástroje zátěžového testování mají stejné možnosti nahrávání (vytváření) testů jako nástroje pro funkční testování. Úkolem zátěžového testování je nalézt z pohledu výkonnosti úzká místa systému, která zpomalují chod celého systému. Tyto testy jsou prováděny změřením odezvy a následným porovnáním s ideálním stavem nebo s odezvou jiných částí systému (Sawant et al., 2012). Komerčními nástroji pro zátěžové testování jsou například HP LoadRunner, IBM Rational Performance Tester a Micro Focus Silk Performer. Nejpoužívanější open-source produkty v kategorii automatizovaného zátěžového testování jsou Apache JMeter, OpenSTA a SoapUI, které se používá i pro integrační testování (SoapUI, 2015). Testování softwaru se v praxi potýká s řadou problémů. Firesmith (2012) uvádí mimo jiné problémy při plánování testů, které vznikají, pokud není vytvořen samostatný testovací plán nebo je jen formální, problémy testovacího procesu spojené s přílišným oddělením procesu testování a nepřizpůsobováním procesu konkrétním podmínkám projektu. Uvádí také nedostatky spojené s použitím testovacích nástrojů a testovacích prostředí. Klasickým případem takových problémů je testování v nekvalitním testovacím prostředí, nekvalitní testovací data a příliš velký důraz na manuální testování.
3. Potřeba integrovaného řešení Současný způsob nasazování a používání nástrojů určených na testování softwaru je spojen s řadou procesních a technických omezení. Společnosti většinou s ohledem na cenu využívají pro podporu testování převážně open-source nástroje, které jsou ale používány, instalovány a nasazovány samostatně bez jakékoliv integrace. Problém nastává při přenosu informací mezi jednotlivými rolemi a nástroji zapojenými do procesu testování. Úkolem testera je provádět testy, reportovat výsledky a nalezené chyby manažerovi testů. Návrhář testů má za úkol vytvářet testovací scénáře dle požadavků test manažera. Test manažer provádí kontrolu výsledků testování a přiřazuje testovací scénáře testerům. Tuto komunikaci je možné zajistit pomocí integrovaných nástrojů pro řízení testů a sledování chyb, které jsou provázány s testovacími nástroji. Takové kvalitní nástroje jsou ale komerční (například IBM Rational Team Concert, HP Quality Center a jiné) a jejich cena je vysoká. Opensource alternativy nenabízejí integrované a pokročilé funkcionality a zároveň je jejich nasazení často obtížné, protože je třeba tyto univerzální nástroje přizpůsobit konkrétním podmínkám. To způsobuje, že úvodní fáze přípravy testování na projektu trvá velmi dlouho. Vzhledem k nepropojení jednotlivých nástrojů jsou informace předávány mezi jednotlivými zainteresovanými pomocí emailu, dokumentů Excelu či sdílených dokumentů na webových úložištích, což může představovat i bezpečnostní riziko. Při komplexnějších projektech je pak nutné použít komerční řešení, jehož cena je ale velmi vysoká. Proto byl iniciován projekt vývoje Integrovaného testovacího nástroje (ITN), který má podporovat celý testovací tým a poskytnout jednotné řešení, které propojuje řízení testování, sledování chyb a automatizované testování různého typu (funkční, zátěžové, integrační a jiné) na bázi open-source nástrojů. Integrovaný testovací nástroj by měl být dodáván jako jeden systém, který bude možné snadno nasadit, čímž se ušetří náklady na lidské zdroje, které se běžně věnují instalaci nástrojů a přípravě prostředí. Výhoda tohoto řešení spočívá i v nulových nákladech na licence vzhledem k použití nástrojů open-source. Projekt vývoje Integrovaného testovacího nástroje je realizován na základě Memoranda o spolupráci mezi firmou
32
SYSTÉMOVÁ INTEGRACE 1-2/2015
Integrace testovacích nástrojů pro zlepšení kvality softwaru
Trask solutions a. s. a Fakultou informatiky a statistiky VŠE v Praze. Realizace probíhá v Kompetenčním centru Software Quality Assurance, kde byl vytvořen tým 5 studentů vedený dnes již absolventem oboru Informační technologie Ing. Janem Ženíškem. Dohled nad projektem ze strany kompetenčního centra zajišťuje jeho vedoucí, docentka Buchalcevová a ze strany společnosti Trask solutions a.s. pan Milan Zajíc.
4. Požadavky na systém ITN Vize systému ITN a specifikace požadavků vznikla na základě několika schůzek řešitele s pracovníky firmy Trask solutions a.s. i na základě analýzy obdobného systému, který firma Trask dříve navrhla, ale nerealizovala. Pro realizaci projektu byla zvolena metodika MMSP (Metodika pro malé softwarové projekty), která je popsána v (Buchalcevová & Stanovská, 2013). Na základě této metodiky byly zpracovány dokumenty Vize a Požadavky. Funkční i nefunkční požadavky byly zadavatelem definovány na obecné úrovni s ohledem na skutečnost, že budou v průběhu vývoje systému postupně upřesňovány. Na základě analýzy požadavků byly navrženy role uživatelů v systému ITN a funkce pro správu těchto rolí. Role jsou navrženy tak, aby bylo možné oddělit uživatele s různými oprávněními, a tím byla zajištěna bezpečnost a integrita celého systému. V systému ITN jsou definovány následující role: Super administrátor má absolutní přístup k nastavení systému ITN. Administrátor může přidávat další osoby, může měnit nastavení rolí a nastavení systému ITN. Test lídr má na starosti správu uživatelů v systému ITN, přiřazuje uživatelům role, přiřazuje osoby do testovacích plánů, případně přiřazuje uživatelům jednotlivé úkoly. Test architekt má na starosti správu požadavků, správu testovacích sad a scénářů, tvoří testovací plány a nové buildy v těchto plánech. Tester provádí jemu přiřazené testovací scénáře (manuální i automatizované). Vývojář má práva na prohlížení testovacích scénářů a správu chyb.
5. Výběr open-source nástrojů Po analýze požadavků bylo třeba vybrat open-source nástroje, které by měly být integrovány v systému ITN. Výběr probíhal na základě k tomu účelu definovaných kritérií pro hodnocení nástrojů a jejich váhového ohodnocení (Ženíšek, 2015). Bylo třeba vybrat jeden nástroj pro každou kategorii nástrojů uvedenou v kapitole 2. Podrobněji je výběr nástrojů v jednotlivých kategoriích popsán v následujícím textu.
5.1 Výběr nástroje pro řízení testů Z celé řady open-source nástrojů pro řízení testů byly do užšího multikriteriálního výběru zařazeny nejpoužívanější nástroje Testopia, Tarantula a Testlink. Vybrán byl nástroj Testlink. Testlink je nástroj pro řízení testů postavený na open-source technologiích PHP, MySQL a Apache. Nástroj je přístupný veřejnosti na základě GNU licenčního modelu verze 2. Testlink obsahuje velké množství funkcionalit, které kompletně pokrývají celý proces řízení kvality softwaru. Tento nástroj je možné SYSTÉMOVÁ INTEGRACE 1-2/2015
33
Alena Buchalcevová, Jan Ženíšek
nainstalovat na různé operační systémy (Linux, Unix, Windows, Mac OS X). Testlink je připraven komunikovat s externími systémy pomocí SOAP protokolu či přímého zápisu dat do externích databází. Toto propojení s jiným nástrojem se vytváří snadno vložením konfiguračního XML souboru, který komunikaci nastaví. Pro účely školení je možné využít oficiální dokumentaci, výuková videa vytvořená komunitou na portálu youtube.com nebo vytvořením dotazu na diskusním fóru tohoto nástroje. Testlink je zároveň připraven na propojení nástrojů na sledování chyb.
5.2 Výběr nástroje pro sledování chyb Nejznámějšími představiteli nástrojů pro sledování chyb je Bugzilla a Mantis. Dalšími open-source nástroji jsou Redmine, Trac, Request Tracker a další. Do užšího hodnocení byly zařazeny tři nejčastěji používané nástroje, a to Bugzilla, Mantis a Redmine. Hodnocení nástrojů na sledování chyb bylo vyrovnané, zejména mezi nástroji Mantis a Bugzilla. Do systému ITN byl vybrán nástroj Mantis. Mantis je open-source webová aplikace vydaná pod licencí GNU verze 2. Nástroj se zaměřuje speciálně na sledování chyb v testovaném softwaru. Mantis má velmi širokou komunitu, která se stará o pravidelné zdokonalování nástroje. Nástroj je postaven na technologii PHP a komunikuje s různými databázovými systémy, například MySQL, MS SQL, DB2. Vzhledem k tomu, že Mantis na serverové straně používá pouze PHP, je možno tento nástroj provozovat na jakémkoliv operačním systému, který podporuje PHP (MantisBT, 2015). Mantis umožňuje spravovat životní cyklus chyby, vytvářet reporty, filtrovat chyby, exportovat data do CSV a Excelu, spravovat uživatelské role. Další funkce je možné doplnit pomocí pluginů. Mantis poskytuje velice pokročilé a intuitivní uživatelské rozhraní s responzivním designem. Z pohledu integrací je Mantis připraven na propojení s jinými nástroji pomocí svého SOAP API. Mantis poskytuje velké množství dokumentace a podpory pro koncové uživatele. Dokumentace je dostupná jak pro administrátory systému, tak pro vývojáře. Dále je možné využít fórum, wiki stránky a velké množství výukových videí na portálu youtube.com.
5.3 Výběr nástroje pro automatizované funkční testování Do multikriteriálního výběru nástrojů pro automatizované funkční testování byly zařazeny nástroje Selenium, Watir a WatiN. Vybrán byl nástroj Selenium, který je nejpoužívanějším nástrojem pro automatizované funkční testování. V současné době se pod pojmem Selenium skrývá sada testovacích nástrojů, které různým způsobem podporují automatizaci testování. Selenium zahrnuje následující nástroje (Selenium Documentation Team, 2012): Selenium 2, Selenium IDE a Selenium-Grid. Selenium 2 vzniklo spojením nástrojů Selenium 1 a Webdriver, což je nástroj vytvořený společnostmi Google a Mozilla. Selenium IDE je prototypovací nástroj na tvorbu testovacích skriptů, který funguje jako přídavný modul do internetového prohlížeče Mozilla Firefox. Účelem je poskytnout nástroj s jednoduchým uživatelským rozhraním, který by umožnil uživatelům vytvářet skripty pro automatizované testování. Tyto skripty lze následně exportovat a upravit v řadě programovacích jazyků, jako například Java, C#, Python, Ruby, aj. Selenium-Grid umožňuje distribuované zpracování velkých testovacích sad nebo spouštění testovacích sad najednou na více prostředích (Selenium Documentation Team, 2012).
34
SYSTÉMOVÁ INTEGRACE 1-2/2015
Integrace testovacích nástrojů pro zlepšení kvality softwaru
Selenium je v současné době považováno za standard v kategorii automatizovaného funkčního testování. Jednou z největších výhod Selenia je možnost provádět stejný test na různých internetových prohlížečích, které mohou běžet i na různých operačních systémech. Pro psaní skriptů je možné využít řadu programovacích jazyků. Většina uživatelů používá jazyk Java, který umožňuje psaní objektově orientovaných testů. Selenium 2 (resp. WebDriver) umožňuje vytvářet automatizované testy řízené daty. Testy řízené klíčovými slovy jsou podporovány pouze za použití externích frameworků. Tento nástroj nepodporuje tvorbu reportů, lze je ale velice jednoduše dopsat pomocí kódu a následně exportovat do formátu HTML. Nástroj Selenium má velkou podporu odborné komunity, která je velice aktivní při vytváření výukových materiálů a nových frameworků, které rozšiřují funkcionality tohoto nástroje. Celý vývoj Selenia je zaštiťován komunitou Mozilla Foundation, která se stará o pravidelné inovování funkcí a vytváření záplat pro případně nalezené chyby.
5.4 Výběr nástroje pro zátěžové testování K nejčastěji používaným nástrojům pro zátěžové testování patří JMeter, OpenSTA a SoapUI (Roudenský & Havlíčková, 2013). Ty byly také hodnoceny dle definovaných kritérií. Pro integraci do systému ITN byl vybrán nástroj Apache JMeter. Apache JMeter (zkráceně JMeter) je open-source aplikace kompletně vytvořená v jazyce Java. JMeter umožňuje provádět zátěžové a výkonnostní testování různých druhů serverů pomocí různých protokolů. JMeter má jednoduché a přehledné uživatelské rozhraní. JMeter je možné rozšířit pomocí pluginů, které umožňují například zátěžově testovat distribuované systémy typu Hadoop. Vývoj tohoto nástroje je progresivní především díky Apache software foundation (Apache Software Foundation, 2015), která vývoj nástroje zaštiťuje. V případě technického problému s nástrojem je možné využít volně dostupnou dokumentaci, fórum, wiki stránky nebo výuková videa na portálu youtube.com.
6. Architektura systému ITN Po analýze požadavků a výběru open-source nástrojů byla navržena architektura systému ITN. Systém je rozdělen do dvou částí: serverové a klientské. Serverová část systému ITN obsahuje nástroj na sledování chyb Mantis, nástroj pro řízení testů Testlink, nástroj pro správu verzí SVN, aplikační server Glassfish a Apache HTTP server. Tyto nástroje jsou integrovány prostřednictvím REST rozhraní, které běží na aplikačním serveru. Jednotlivé nástroje jsou upraveny tak, aby vytvářely jednotné uživatelské rozhraní. Klientská část systému ITN zahrnuje jednotlivé nástroje pro automatizované testování, které jsou přizpůsobeny jak z pohledu uživatelského rozhraní, tak z pohledu potřeby vzájemné komunikace. Těmito nástroji jsou Selenium pro automatizované funkční testy, SoapUI pro integrační testy a JMeter pro zátěžové testy. Architektura je navržena tak, aby bylo možné dodatečně přidat další nástroje. Pro výše zmíněné nástroje jsou vytvořeny pluginy, které komunikují se serverovou částí systému ITN. Například tester si spustí testovací aplikaci SoapUI a pomocí pluginu se připojí do serverové části ITN, ze které se automaticky stáhnou zdrojové kódy SoapUI testů, jemu přiřazené testovací scénáře a případné chyby, které jsou s těmito scénáři spojeny.
SYSTÉMOVÁ INTEGRACE 1-2/2015
35
Alena Buchalcevová, Jan Ženíšek
Systém ITN je možné provozovat na operačních systémech Windows, Linux a Unix, a pro svůj běh potřebuje Javu minimálně ve verzi 6. Integrace jednotlivých nástrojů je poskytována serverovou částí ITN. Uživatelé a administrátor systému se k systému připojují pomocí webového rozhraní a pomocí upravených testovacích aplikací (SoapUI, JMeter, Selenium, aj.) na koncových stanicích. Při návrhu systému ITN byl kladen důraz na modulárnost, tedy na schopnost snadno nahradit jednotlivé použité komponenty (nástroje) a navíc i snadnou rozšiřitelnost systému ITN o nové nástroje. Z tohoto důvodu byl využit návrhový vzor mediátor, který minimalizuje počet vazeb mezi integrovanými nástroji. Mediátorem, který zprostředkovává komunikaci mezi nástroji, je integrační komponenta s vystaveným REST rozhraním. Architektura systému ITN je zobrazena v notaci komponentového modelu dle standardu UML 2 na obrázku 1.
Obrázek 1 Komponentový diagram systému ITN, zdroj: Ženíšek, 2015 Na komponentovém diagramu je zobrazena jak serverová, tak i klientská část systému ITN. Všechny použité komponenty využívají pro komunikaci mezi sebou integrační rozhraní. Toto rozhraní umožňuje komunikaci nástrojů nejenom uvnitř serveru, ale i v testovacích aplikacích, které se nacházejí na klientských stanicích. Serverové nástroje (řízení testů a sledování chyb) nepoužívají integrační rozhraní v případě komunikace s databází. Celá serverová část systému je dostupná přes webové prostředí pomocí HTTP komunikace. Serverová část systému komunikuje ve standardním režimu s MySQL databází na portu 3306. Pro část datové architektury je využita aplikace SVN, která umožňuje verzování ukládaných zdrojových kódů automatizovaných testů. Integrační komponenta má přístup k databázím serverových aplikací Mantis i Testlink a také k databázi uživatelů ITN. Přístupu k aplikačním databázím využívá pouze v případě, že existující rozhraní vyžadovanou funkcionalitu neposkytuje. Databázi uživatelů ITN integrační komponenta využívá pro potřeby autentifikace a autorizace.
36
SYSTÉMOVÁ INTEGRACE 1-2/2015
Integrace testovacích nástrojů pro zlepšení kvality softwaru
7. Realizace systému ITN Výsledkem první etapy projektu, která trvala 1 rok, je fungující verze ITN nástroje, který propojuje řízení testů se sledováním chyb a vytvářením a spouštěním automatizovaných zátěžových testů. V rámci první etapy byly implementovány následující části nástroje ITN: komponenta pro řízení testů, komponenta pro sledování chyb, komponenta pro verzování zdrojového kódu automatizovaných testů, REST rozhraní zajišťující integraci mezi výše uvedenými komponentami a budoucí možnou integraci s aplikacemi automatizovaného testování, komponenta zajišťující registraci uživatelů a jednotné přihlašování. Dále bylo provedeno přizpůsobení všech výše uvedených komponent tak, aby koncovým uživatelům poskytovaly jednotné uživatelské rozhraní a uživatelský prožitek. Nástroj ITN byl předán zadavateli za účelem zhodnocení implementovaných funkcí, uživatelského rozhraní a získání zpětné vazby podstatné pro další vývoj. Zadavatel odhalil některé nedostatky, zejména nedostatečnou dokumentaci řešení a omezený rozsah testů systému ITN. Po odstranění těchto nedostatků se plánuje nasadit systém do několika pilotních projektů. Zároveň zadavatel vytvořil seznam funkcionalit, které požaduje implementovat v druhé etapě projektu.
8. Závěr Článek ukázal, jak lze spoluprací akademické sféry a praxe přinést užitek oběma stranám. Studenti v rámci projektu Kompetenčního centra Software Quality Assurance na VŠE v Praze získávají praktické zkušenosti, poznávají reálné problémy a mají možnost vytvářet inovativní řešení, které nalezne uplatnění v praxi. Na druhé straně praxe získá nástroj, který výrazně zefektivní proces testování a v konečném důsledku pak i zvýší kvalitu vyvíjeného softwaru.
Zdroje Apache Software Foundation, 2015: JMeter Overview. Apache JMeter. [Online] Apache Software Foundation, 2015. [Citace: 14. 4 2015.] Dostupné na: http://jmeter.apache.org/index.html Bučar, M. & Rojec, M., 2015: Science-Industry Cooperation in Slovenia: Determinants of Success. Economic and Business Review, 16(3), 315-336 Bugzilla. 2015: About Bugzilla. Bugzilla.org. [Online] [Citace: 5. 4 2015.] Dostupné na: https://www.bugzilla.org/about. Buchalcevová, A., 2011: Normy kvality softwaru a jejich podpora v metodikách budování informačních systémů. Systémová integrace, roč. 18, č. 1, s. 109–120. ISSN 1210-9479
SYSTÉMOVÁ INTEGRACE 1-2/2015
37
Alena Buchalcevová, Jan Ženíšek
Buchalcevová, A. & Kučera, J., 2008: Hodnocení metodik vývoje informačních systémů z pohledu testování. Systémová integrace, roč. 15, č. 2, s. 42–54. ISSN 1210-9479 Buchalcevová, A. & Stanovská, I., 2013: Příklady modelů analýzy a návrhu aplikace v UML. Praha: Oeconomica. 9788024519227 Doucek, P., Maryska, M., & Novotny, O., 2014: Requirements on the competence of ICT managers and their coverage by the educational system–experience in the Czech Republic. Journal of Business Economics and Management, 15(5): 1054-1077 Eldh, S., & Punnekkat, S., 2012: Synergizing industrial needs and academic research for better software education. In Software Engineering Education based on Real-World Experiences (EduRex), First International Workshop on (pp. 33-36). IEEE Firesmith, D., 2012: Common Testing Problems: Pitfalls to Prevent and Mitigate. Software Engineering Institute. [Online] Carnegie Mellon University, [Citace: 11. 4 2015.] Dostupné na: http://blog.sei.cmu.edu/post.cfm/common-testing-problemspitfalls-to-prevent-and-mitigate Havlickova, A., 2012: The perception of software quality and testing in Czech software companies. Journal of systems integration [online], Vol. 3, No. 4. ISSN 1804-2724 ISTQB. 2011: Foundation Level Syllabus. istqb.org. [Online] [Citace: 9. 4 2015.] Dostupné na: http://www.istqb.org/downloads/viewcategory/16.html Králová, I., 2013: Metodika testování podle mezinárodních praktik a standardů. Praha: VŠE. Lee,Y.S., 2000: The Sustainability of University-Industry Research Collaboration: An Empirical Assessment. Journal of Technology Transfer, 25(2), 111-133 Mandviwalla, M., Fadem, B., Goul, M., George, J. F., & Hale, D. P., 2015: Achieving Academic-Industry Collaboration with Departmental Advisory Boards. MIS Quarterly Executive, 14(1), 17-37 MantisBT. 2015: Mantis Administration Guide. Mantis Bug Tracker. [Online] [Citace: 4. 4 2015.] Dostupné na: https://www.mantisbt.org/docs/master1.2.x/en/administration_guide/ Maryška, M., Novotný, O., Doucek, P., Pecáková, I., Skarlandtová, E., Voříšek, J., Žid, N., 2012: Lidské zdroje v ICT. 1. vyd. Praha: PROFESSIONAL PUBLISHING. 147 s. ISBN 978-80-7431-082-9 Orso, A. & Rothermel, G., 2014: Software testing: a research travelogue (2000–2014). In Proceedings of the on Future of Software Engineering (pp. 117-132). ACM. Patton, R., 2002: Testování softwaru. Praha: Computer Press, ISBN 9788072266364. Pilgrim, C. J., 2013: Industry involvement in ICT curriculum: a comparative survey. In Proceedings of the 2013 International Conference on Software Engineering (pp. 11481153). IEEE Press. Roudenský, P. & Havlíčková, A., 2013: Řízení kvality softwaru. Brno: Computer Press. 978-80-251-3816-8. Runeson, P., Minör, S., & Svenér, J., 2014: Get the cogs in synch: time horizon aspects of industry--academia collaboration. In Proceedings of the 2014 international workshop on Long-term industrial collaboration on software engineering (pp. 25-28). ACM. 38
SYSTÉMOVÁ INTEGRACE 1-2/2015
Integrace testovacích nástrojů pro zlepšení kvality softwaru
Rusu, A., Rusu, A., Docimo, R., Santiago, C., & Paglione, M., 2009: Academiaacademia-industry collaborations on software engineering projects using local-remote teams. ACM SIGCSE Bulletin, 41(1), 301-305 Sawant, Abhijit A., Bari, Pranit H. a Chawan, P.M., 2012: Software testing techniques and strategies. [Dokument] Mumbai : University of Mumbai, 2012. 2248-9622. Selenium Documentation Team. 2012: Selenium Documentation. [Dokument] 2012. SoapUI. 2015: SoapUI features. www.soapui.org. [Online] SmartBear, 2015. [Citace: 20. 4 2015.] Dostupné na: http://www.soapui.org/About-SoapUI/features.html SwissQ & Universitat St. Gallen. 2013: Trends & Benchmarks Report Switzerland testing 2013. [Dokument] místo neznámé: SwissQ, 2013. Voříšek, J., Doucek, P. & Novotný, O., 2007: Konkurenceschopnost absolventů IT oborů VŠ a VOŠ na trhu práce [online]. [Výzkumná zpráva]. Praha: ČSSI; VŠE FIS. Dostupné na: http://www.cssi.cz/publ_si_clanek.asp?typ=1&kod=1024 Winter, J., Rönkkö, K., Ahlberg, M., & Hotchkiss, J., 2011: Meeting organisational needs and quality assurance through balancing agile and formal usability testing results. In Software Engineering Techniques (pp. 275-289). Springer Berlin Heidelberg. Wohlin, C., 2013: Empirical software engineering research with industry: Top 10 challenges. In Conducting Empirical Studies in Industry (CESI), 1st International Workshop on (pp. 43-46). IEEE. Ženíšek, J., 2015: Projekt vývoje Integrovaného testovacího nástroje. Praha: VŠE.
JEL Classification: M15
SYSTÉMOVÁ INTEGRACE 1-2/2015
39