V rámci <TODO> semestru akademického roku <TODO> proběhne na FI MUNI série setkání ve fromě kombinovaných přednášek a laboratorních cvičení věnovaná vývoji testů na platformě Java s přihlédnutím k použití v rámci testování Java middleware.
Cílem tohoto <TODO>-kreditové kurzu pod garancí <TODO> je seznámit studenty s nástroji používanými v praxi pro testování všech stránek Java EE aplikace, jejich reálnou aplikací ve společnosti Red Hat při testování různých projetů z JBoss.org a naučit je s nimi pracovat, případně je rozšiřovat pro vlastní potřebu.
Osnova kursu
- Úvod, přehled nástrojů
- Jednotkové testování
- Podpora pro testy v nástrojích pro sestavování aplikací
- Testování Java EE aplikací
- Testování clusteringu a škálovatelnosti
- Výkonostní testování
- Automatizované testování web UI
- Automatizované testování desktopových aplikací založených na knihovně SWT
- Fault-injection testování
- Nástroje pro nepřetržitou integraci
Podrobný obsah
Úvod, předhled nástrojů
Přednáška
- Motivace pro předmět
- Přehled nástrojů
Cvičení
- Příprava vývojového prostředí
Jednotkové testování
Přednáška
- jUnit 4
- TestNG
- Mockito
Cvičení
- Vytvoření sady testů pro jUnit a TestNG s důrazem na pokročilé vlastnosti (paralelní testy, výjimky, závislosti)
- Definice a implmentace scénáře pro použití JBDC API pomocí Mockito
Podpora pro testy v nástrojích pro sestavování aplikací
Přednáška
- Maven
- Ant
- Gradle
Cvičení
- Vytvoření Maven projektu. Jeho otestování v různých fázích Maven cyklu
Testování Java EE aplikací
Přednáška
- Problémy testovaání Java EE aplikací
- In-container vs out-container testování
- Mocking služeb aplikačního serveru
- Arquillian
Cvičení
- Vytvoření sady testů pro Java EE aplikaci v Arquillianu
- Konfigurace Arquillianu
- Ukázka přenositelnosti tesů mezi různými Java EE servery
Testování clusteringu a škálovatelnosti
Přednáška
- Vysvětlení základních pojmů
- Úskalí při testování
- SmartFrog
Cvičení
- Otestování Java EE aplikace nasazené v clusteru dvou instancí s použitím SmartFrog
Výkonostní testování
Přednáška
- Průmyslové benchmarky
- SPECjEnterprise
- SPECjms
- Nástroje pro výkonnostní testování
- JMeter
- SmartFrog
Cvičení
- Vytvoření sady testovacích scénářů pomocí JMeter, identifikace problematických míst
- Ukázka analýzy výkonnostních problému pomocí JProfiler (není volně dostupný)
Automatizované testování web UI
Přednáška
- Rozdílné přístupy k testování
- JSFUnit
- HtmlUnit
- Selenium
- Selenium v detailech
Cvičení
- Vytvoření sady Selenium testů, otestování pro alespoň dva různé prohlížeče
Automatizované testování desktopových aplikací založených na knihovně SWT
Přednáška
- Specifika testování desktopových aplikací
- Knihovna SWT
- Dopad různých OS na testování
- SWTBot
Cvičení
- Automatizace a otestování některých funkcí JBoss Developer Studia
Fault-injection testování
Přednáška
- Definice pojmu
- Různé přístupy k implementaci
- Modifikace zdrojového kódu
- Aspektově orientované programování - AspectJ, JBoss AOP
- Specializované nástroje - Byteman
- Byteman v detailech
Cvičení
- Otestování reakce Java EE aplikace na výpadek databáze
- Otestování reakce JBoss AS na dočasnou ztrátu spojení s databází
Nástroje pro nepřetržitou integraci
Přednáška
- Co je nepřetržitá integrace
- Porovnání existujících nástrojů - Jenkins, Hudson, CruiseControl, ...
- Jenkins v detailech
- Architektura
- Přehled funkcí
- Vývoj plug-inů
Cvičení
- Konfigurace základního Jenkins jobu - sestavení Java EE aplikace
- Vytvoření jednoduchého Jenkins plug-inu
Kontakty
Jiří Pechanec jpechane@redhat.com
Prerekvizity
- Znalost programovacího jazyka Java
- Praktická znalost Java EE 5/6 technologií nebo absolvování kurzu v rámci studia
(je dobré mít předchozí znalosti cca na úrovni kurzu PA165 Vývoj pg. systémů v jazyce Java)
Comments