WorkshopTestování JS aplikací    Michal Aichinger       20.9.2012       Webexpo
Testování – potřebný software•   Firefox•   Java•   Jasmine: http://pivotal.github.com/jasmine•   Selenium: http://seleniu...
Testování•   Debugovat > Kontrolovat > Testovat•   Testování stojí čas (průměrně 2×)•   Oprava chyby je během vývoje 10× l...
Testování JS projektů – Lokální               automatizace•   Napsat Jasmine unit testy•   Naklikat akceptační testy v Sel...
Testování JS projektů - Jasmine• Client side - prohlížeč• Server side – node.js, headless browser:  PhantomJS, JSChillicat...
Testování JS projektů - Jasmine• Number: 0, -  0, NaN, Infinity, 0.3, [0], true, false, 0x12, 1e-  20, "33" vs. {}, [1,2],...
Testování JS projektů - Jasmine• Mockování serverů a komponent• Pozor na netestovatelný kód v uzávěrách• Testovat všechny ...
Testování JS projektů - Selenium• Automatizace manuálního testování• Naklikání testů v prohlížeči Firefox  (Selenium IDE)•...
Testování JS projektů – Selenium IDE•   Plugin do Firefoxe•   Vytváří testy ve formátu HTML•   Přehravač testů•   Možno vy...
Testování JS projektů - PHPUnit• Odbočka k serverovým testům – xUnit• Možnost skriptovat Selenium testy• Možnost spouštět ...
Testování JS projektů - PHPUnit• Instalace PHPUnit• http://agile.dzone.com/news/continuous-  integration-php• Spuštění Sel...
Testování JS projektů – Git hook• Spouštět testy pravidelně po kommitu• Git má pre-commit hooky• http://www.kernel.org/pub...
Testování JS projektů – vzdálená             automatizace• Jasmine UT + Selenium testy + xUnit testy• Selenium Grid• Autom...
Testování JS projektů – Selenium Grid
Testování JS projektů – Selenium Grid• Spuštění serveru:java –jar selenium-server.jar –role hub• Spuštění node:java –jar s...
Testování JS projektů – Selenium Grid• xUnit (PHPUnit) testy zůstavají stejné• Nutné zprovoznit CI server pro  automatizov...
Testování JS projektů - Selenium• Další využitíi. Simulace kurzoru uživateleii. Screenshoty a porovnávání obrázkůiii. Výko...
Testování JS projektů - Jenkins•   CI? Continuous integration•   Pomáhá automatizovat periodickou činnost•   Úkoly = jobs•...
Testování JS projektů - Jenkins• Zprovoznit Selenium Grid• Nastavit Jenkins job, který:1. periodicky stáhne z Gitu data (p...
Konec      Michal Aichinger         @aichingemichal.aichinger@gmail.com http://about.me/aichinger
Upcoming SlideShare
Loading in …5
×

Testování klientských Javascriptových aplikací

501 views

Published on

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.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
501
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Testování klientských Javascriptových aplikací

  1. 1. WorkshopTestování JS aplikací Michal Aichinger 20.9.2012 Webexpo
  2. 2. Testování – potřebný software• Firefox• Java• Jasmine: http://pivotal.github.com/jasmine• Selenium: http://seleniumhq.org (FF + server)• Jenkins: http://jenkins-ci.org• HTTP Server, např.: http://apache.org• Verzovací systém, např.: http://git-scm.com• Serverový Xunit, např.: PHPUnit
  3. 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. 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. 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
  6. 6. Testování JS projektů - Jasmine• Number: 0, - 0, NaN, Infinity, 0.3, [0], true, false, 0x12, 1e- 20, "33" vs. {}, [1,2], null, undefined• Indexy• Boolean: true, false, - 1, 0, 1, "", "a", "false", [0], [1], {}, null
  7. 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. 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. 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. 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
  11. 11. Testování JS projektů - PHPUnit• Instalace PHPUnit• http://agile.dzone.com/news/continuous- integration-php• Spuštění Selenium lokálnějava –jar selenium_server.jar• Spuštění PHPUnit testůphpunit path_to_test_dir
  12. 12. Testování JS projektů – Git hook• Spouštět testy pravidelně po kommitu• Git má pre-commit hooky• http://www.kernel.org/pub/software/scm/git/ docs/githooks.html• Git PHPUnit hook• http://www.masnun.me/2012/03/18/running -phpunit-on-git-hook.html
  13. 13. Testování JS projektů – vzdálená automatizace• Jasmine UT + Selenium testy + xUnit testy• Selenium Grid• Automatizace pomocí CI serveru (Jenkins)
  14. 14. Testování JS projektů – Selenium Grid
  15. 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 –hubhttp://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. 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. 17. Testování JS projektů - Selenium• Další využitíi. Simulace kurzoru uživateleii. Screenshoty a porovnávání obrázkůiii. Výkonové testy (radši spouštět jinak než přes Selenium)
  18. 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. 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 testy3. Hledá ve výstupu konzole informace o chybě a označí build za chybný. (Plugin Text find)
  20. 20. Konec Michal Aichinger @aichingemichal.aichinger@gmail.com http://about.me/aichinger

×