SlideShare a Scribd company logo
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

More Related Content

PDF
Trendy a nové možnosti test automation
ODP
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
PPTX
Selenium Webdriver - jOpenSpace 2015
PDF
Interaktivní webový editor synchronizace slidů s videem
PDF
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
PDF
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)
PDF
Použití Next.js a Reactí UI khinihovny v aplikaci
PPTX
Vizuální regresní testy
Trendy a nové možnosti test automation
Využití chemie v procesu testování webových aplikací vytvořených pomocí techn...
Selenium Webdriver - jOpenSpace 2015
Interaktivní webový editor synchronizace slidů s videem
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Funkční testování – chybějící vrchol pyramidy (WebExpo 2016)
Použití Next.js a Reactí UI khinihovny v aplikaci
Vizuální regresní testy

Similar to Testování klientských Javascriptových aplikací (20)

PDF
Automatické testování webů v praxi - Barcamp Ostrava 2015
PDF
Michal Majer / I testování může být zábava
PDF
Seminar Nastroje Jednotk Testovani
PDF
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...
PPTX
Populární addony 2
PPTX
Proč chcete testovat své aplikace
PPTX
2011 Unit Testy
PDF
Testování RESTful API v rámci continuous integration
PDF
20110511 Vývoj software - produktivně, efektivně, kvalitně
PDF
Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
ODP
20091202 Aplikované nástroje SW inženýra
ODP
20101124 Aplikované nástroje SW inženýra
PDF
Tipy a triky, best practices, deployment, testování
PDF
Jak jsme přepisovali Jobs.cz na Symfony
PDF
Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symf...
PPTX
Přehled metod UX výzkumu
PPTX
ASP.NET MVC a TDD
PDF
#golang @SkrzCzDev (Skrz DEV Cirkus 21.10.2015)
PPS
Continuous Integration
PPTX
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Automatické testování webů v praxi - Barcamp Ostrava 2015
Michal Majer / I testování může být zábava
Seminar Nastroje Jednotk Testovani
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...
Populární addony 2
Proč chcete testovat své aplikace
2011 Unit Testy
Testování RESTful API v rámci continuous integration
20110511 Vývoj software - produktivně, efektivně, kvalitně
Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
20091202 Aplikované nástroje SW inženýra
20101124 Aplikované nástroje SW inženýra
Tipy a triky, best practices, deployment, testování
Jak jsme přepisovali Jobs.cz na Symfony
Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symf...
Přehled metod UX výzkumu
ASP.NET MVC a TDD
#golang @SkrzCzDev (Skrz DEV Cirkus 21.10.2015)
Continuous Integration
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Ad

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