Version 1

    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

    1. Úvod, přehled nástrojů
    2. Jednotkové testování
    3. Podpora pro testy v nástrojích pro sestavování aplikací
    4. Testování Java EE aplikací
    5. Testování clusteringu a škálovatelnosti
    6. Výkonostní testování
    7. Automatizované testování web UI
    8. Automatizované testování desktopových aplikací založených na knihovně SWT
    9. Fault-injection testování
    10. 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)