Testování Java EE aplikací Petr Adámek IBA CZ, s.r.o. 2009 Testování aplikací IBA CZ, s.r.o. 2009 Testování aplikací Ověřuje soulad implementace se specifikací a s očekáváním zákazníka. Je důležitou součástí procesu řízení kvality vývoje software Na rozdíl od formální verifikace neumožní odhalit všechny potenciální chyby Testování aplikací IBA CZ, s.r.o. 2009 Základní pravidla Testy by měly být reprodukovatelné. Testy by měly být deterministické, tj. měly by mít na začátku vždy stejné vstupní podmínky. Testy by měly být nezávislé, tj. nebýt ovlivněny ostatními testy. Testy by měly být levně opakovatelné. Druhy testování podle metody IBA CZ, s.r.o. 2009 Druhy testování podle metody Ruční testování: nízké vstupní náklady; drahé opakování; obtížné zajištění reprodukovatelnosti, determinismu a nezávislosti Automatizované testování: vysoké vstupní náklady; levné opakování; snadné zajištění reprodukovatelnosti, determinismu a nezávislosti. Druhy testování podle cíle IBA CZ, s.r.o. 2009 Druhy testování podle cíle Jednotkové testování Integrační testování Funkční testování Akceptační testování Testování výkonu a škálovatelnosti Testování uživatelské přívětivosti Testování bezpečnosti Jednotkové testování IBA CZ, s.r.o. 2009 U jednotkového testování se snažíme otestovat jednotlivé komponenty vyvíjeného systému na té nejnižší úrovni. Jednotlivé testované komponenty by měly být izolovány od svého okolí, aby se zamezilo vlivu tohoto okolí na testovanou komponentu. Interakce s okolím je simulována pomocí falešných objektů, které simulují chování okolí v konkrétním testovacím scénáři (viz Mock Objekty). Čím je lépe provedená dekompozice, tím je snadnější jednotkové testování. Jednotkové testování v prostředí Java EE IBA CZ, s.r.o. 2009 U Java EE aplikací je nutné vzít v úvahu existenci kontejneru. Testy mimo kontejner ­ otestuje se pouze business logika, nikoliv chování závisející na kontejneru (např. řízení transakcí, autorizace apod.) Testy v kontejneru ­ otestuje se vše, ale tento druh testování se pro jednotkové testy moc nehodí. Při testování mimo kontejner se používá koncept mock objektů, které simulují chování kontejneru. Jednotkové testování v prostředí Java EE IBA CZ, s.r.o. 2009 Jak testovat vrstvu perzistence dat: Mock Objekty (snadné u JPA nebo jiných knihoven a rámců, komplikované u low-level JDBC). Datábaze uložená v paměti (snadné u JPA, u low-level JDBC může být problém s SQL dialektem). Nezapomenout na zajištění stejných počátečních podmínek (uvést databázi vždy do stejného počátečního stavu). Jednotkové testování ­ nástroje IBA CZ, s.r.o. 2009 Nástroje pro jednotkové testování JUnit TestNG Artima SuiteRunner MockRunner dbUnit Integrační testování IBA CZ, s.r.o. 2009 Integrační testování slouží k ověření správné interakce jednotlivých komponent a zda se sestavený systém chová tak, jak očekává specifikace. Viz též continuous integration Funkční testování IBA CZ, s.r.o. 2009 Funkční testování slouží k ověření funkcionality z pohledu koncového uživatele. Většinou se jedná o testování na úrovni uživatelského rozhraní. Nástroje Rational Functional Tester ­ gui + web http://www-01.ibm.com/software/awdtools/tester/functional/index.html Selenium IDE ­ web http://selenium.openqa.org/ Marathon ­ gui http://marathonman.sourceforge.net/ Rational Robot ­ gui (pro staré aplikace), Rational Quality Manager, JWebUnit Akceptační testování IBA CZ, s.r.o. 2009 Akceptačním testováním zákazník ověřuje, zda aplikace odpovídá jeho požadavkům a představám. Absence akceptačního testování (případně jeho podcenění a nedostatečné provedení) téměř spolehlivě vede k pozdějším sporům a problémům. Zákazníci mají bohužel tendenci tuto věc velmi podceňovat a na nesoulad implementace s požadavky zákazníka se tak často přijde až v okamžiku produkčního nasazení :-(. Testování výkonu a škálovatelnosti IBA CZ, s.r.o. 2009 Testováním výkonu se ověřuje propustnost a odezvy systému při vysokém zatížení. Součástí specifikace by měla být i definice požadované propustnosti a reakčních dob systému při předepsaném zatížení. Nástroje Rational Performance Tester (+ extensions) http://www-01.ibm.com/software/awdtools/tester/performance/index.htm Rational Service Tester for SOA Quality (funkční testy + testování výkonu) JMeter http://jakarta.apache.org/jmeter/ Testy uživatelské přívětivosti IBA CZ, s.r.o. 2009 Testy uživatelské přívětivosti V USA běžná věc, v Evropě to zatím firmy moc nedělají. Např. firma SUN Microsystems má v Praze svůj jediný Usability lab mimo území USA. Definice prototypu cílového uživatele. Výběr skupiny testovacích uživatelů (testovací vzorek). Testovací uživatel dostane seznam úkolů, které se snaží vyřešit bez pomoci někoho jiného. Jeho chování je sledováno a vyhodnocováno. Viz Štefkovič, M.: Použitelnost webových aplikací. (https://is.muni.cz/auth/th/166042/fi_b/) Testování bezpečnosti IBA CZ, s.r.o. 2009 Testování bezpečnosti ověřuje odolnost proti různým typům útoků. Nástroje: Rational AppScan ­ bezpečnost webových aplikací http://www-01.ibm.com/software/awdtools/appscan/ Závěr IBA CZ, s.r.o. 2009 Otázky?