This slides are only in Czech language.
Slidy z workshopu Testování klientských Javascriptových aplikací, který proběhl na Webexpo 2012. Shrnuje jak nastavit automatické testování, spouštění testů napsaných v testovacím frameworku Jasmine pomocí Selenium Gridu a CI serveru Jenkins.
3. Testování
• Debugovat > Kontrolovat > Testovat
• Testování stojí čas (průměrně 2×)
• Oprava chyby je během vývoje 10× levnější
• Manuální testování stojí čas a nikoho nebaví
• Testy by měli psát zkušení vývojáři (ne opice)
4. Testování JS projektů – Lokální
automatizace
• Napsat Jasmine unit testy
• Naklikat akceptační testy v Selenium IDE
• Zkonvertovat je do xUnit
• Spouštět je pravidelně
5. Testování JS projektů - Jasmine
• Client side - prohlížeč
• Server side – node.js, headless browser:
PhantomJS, JSChillicat, Rhino + env.js (děs)
• Vlastní matchery, reporty
• Možnost testovat asynchronní události
• Mockování pomocí „špionů“ (spyOn)
• http://www.czechdesign.cz/blogs/aichi/testov
ani-javascriptovych-projektu
7. Testování JS projektů - Jasmine
• Mockování serverů a komponent
• Pozor na netestovatelný kód v uzávěrách
• Testovat všechny větve kódu ne jen
nejběžnější (může pomoci JSCoverage)
• Testovat „privátní“ metody a vlastnosti?
8. Testování JS projektů - Selenium
• Automatizace manuálního testování
• Naklikání testů v prohlížeči Firefox
(Selenium IDE)
• Spouštění jednou napsaných testů v různých
prohlížečích (Selenium Server)
• Vzálené testování client-server (Selenium Grid)
9. Testování JS projektů – Selenium IDE
• Plugin do Firefoxe
• Vytváří testy ve formátu HTML
• Přehravač testů
• Možno vyexportovat do xUnit jako PHPUnit (s
rozšířením), RSpec, Junit, NUnit...
10. Testování JS projektů - PHPUnit
• Odbočka k serverovým testům – xUnit
• Možnost skriptovat Selenium testy
• Možnost spouštět server/client testy z
jednoho místa
• Jasmine UT lze spustit přes Selenium z xUnit
testu
15. Testování JS projektů – Selenium Grid
• Spuštění serveru:
java –jar selenium-server.jar –role hub
• Spuštění node:
java –jar selenium-server.jar –role node –hub
http://server:4444/grid/register
• Výchozí nastavení nabídne 5 instancí FF, GCH a
1 instanci IE (možný paralelismus, možno
specifikovat nabízené verze prohlížečů, možno
specifikovat prostředí v testu)
16. Testování JS projektů – Selenium Grid
• xUnit (PHPUnit) testy zůstavají stejné
• Nutné zprovoznit CI server pro
automatizované a opakovatelné spouštění
testů
• Jenkins + pluginy pro Git a Text search jsou
minimum
17. Testování JS projektů - Selenium
• Další využití
i. Simulace kurzoru uživatele
ii. Screenshoty a porovnávání obrázků
iii. Výkonové testy (radši spouštět jinak než přes
Selenium)
18. Testování JS projektů - Jenkins
• CI? Continuous integration
• Pomáhá automatizovat periodickou činnost
• Úkoly = jobs
• Úkol je směs příkazů a použití modulů
• Úkoly se dají řetězit
19. Testování JS projektů - Jenkins
• Zprovoznit Selenium Grid
• Nastavit Jenkins job, který:
1. periodicky stáhne z Gitu data (pooling nebo
http hook)
2. Spustí xUnit testy
3. Hledá ve výstupu konzole informace o chybě
a označí build za chybný. (Plugin Text find)
20. Konec
Michal Aichinger
@aichinge
michal.aichinger@gmail.com
http://about.me/aichinger