SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Workshop
Testování JS aplikací
    Michal Aichinger
       20.9.2012
       Webexpo
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
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)
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ě
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
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
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?
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)
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...
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
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
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
Testování JS projektů – vzdálená
             automatizace
• Jasmine UT + Selenium testy + xUnit testy
• Selenium Grid
• Automatizace pomocí CI serveru (Jenkins)
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 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)
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
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)
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
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)
Konec

      Michal Aichinger
         @aichinge
michal.aichinger@gmail.com
 http://about.me/aichinger

Weitere ähnliche Inhalte

Ähnlich wie Testování klientských Javascriptových aplikací

20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně
Jiří Mareš
 
Odpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostOdpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnost
chaplin06
 

Ähnlich wie Testování klientských Javascriptových aplikací (20)

Michal Majer / I testování může být zábava
Michal Majer / I testování může být zábavaMichal Majer / I testování může být zábava
Michal Majer / I testování může být zábava
 
TNPW2-2012-03
TNPW2-2012-03TNPW2-2012-03
TNPW2-2012-03
 
Symfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconSymfony vs Nette vs Phalcon
Symfony vs Nette vs Phalcon
 
Test stack CzechTest 2016
Test stack   CzechTest 2016Test stack   CzechTest 2016
Test stack CzechTest 2016
 
atoto.cz - jak na snadnou integraci Codeception
atoto.cz - jak na snadnou integraci Codeceptionatoto.cz - jak na snadnou integraci Codeception
atoto.cz - jak na snadnou integraci Codeception
 
2011 Unit Testy
2011 Unit Testy2011 Unit Testy
2011 Unit Testy
 
Výběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduVýběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí cloudu
 
TNPW2-2014-03
TNPW2-2014-03TNPW2-2014-03
TNPW2-2014-03
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou Tvari
 
Zonky QA Meetup
Zonky QA MeetupZonky QA Meetup
Zonky QA Meetup
 
TNPW2-2016-03
TNPW2-2016-03TNPW2-2016-03
TNPW2-2016-03
 
TNPW2-2013-03
TNPW2-2013-03TNPW2-2013-03
TNPW2-2013-03
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
 
Odborná snídaně 20.9. - Agile@DevOps - 2. část
Odborná snídaně 20.9. - Agile@DevOps - 2. částOdborná snídaně 20.9. - Agile@DevOps - 2. část
Odborná snídaně 20.9. - Agile@DevOps - 2. část
 
20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně
 
2007 Technologie Pro Tvorbu Java Enterprise Aplikací
2007 Technologie Pro Tvorbu Java Enterprise Aplikací2007 Technologie Pro Tvorbu Java Enterprise Aplikací
2007 Technologie Pro Tvorbu Java Enterprise Aplikací
 
Joomla! na MS Windows
Joomla! na MS WindowsJoomla! na MS Windows
Joomla! na MS Windows
 
Proč chcete testovat své aplikace
Proč chcete testovat své aplikaceProč chcete testovat své aplikace
Proč chcete testovat své aplikace
 
ASP.NET MVC a TDD
ASP.NET MVC a TDDASP.NET MVC a TDD
ASP.NET MVC a TDD
 
Odpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostOdpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnost
 

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

  • 1. Workshop Testování JS aplikací Michal Aichinger 20.9.2012 Webexpo
  • 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. 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
  • 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. 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
  • 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. 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. Testování JS projektů – vzdálená automatizace • Jasmine UT + Selenium testy + xUnit testy • Selenium Grid • Automatizace pomocí CI serveru (Jenkins)
  • 14. Testování JS projektů – Selenium Grid
  • 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