SlideShare a Scribd company logo
1 of 19
Download to read offline
JavaScript Unit testing
    using jasmine and tools
По месту исполнения кода



  Серверный JS     Клиентский JS
    jasmine-node     браузер?
jasmine-node
1. npm install jasmine-node -g
2. jasmine-node specs/
                        *-spec.js




можно обернуть запуск тестов в package.json
jasmine-node
       Хорошо                   Плохо
1) Есть полезные опций: 1) Если dom - то лучше
   --autorun            отказаться
   --junitreport
                        2) не все опции
                        работают как хотелось
                        бы
browser?
Headless:
1. zombie.js (эмуляция)
2. PhantomJS (webkit)

Real browser:
3. jsTestDriver
4. testacular
5. selenium webdriver
headless
1. zombie.js
2. PhantomJS
zombie.js
1. npm install zombie
2. writing async tests using jasmine-node
zombie.js
       Хорошо                     Плохо
1) fast                 1) Just emulation...
2) headless             2) using jasmine-node




                thanks, but no!
PhantomJS
1. npm install phantomjs -g

1. grunt-jasmine-runner
2. phantom-jasmine
PhantomJS
       Хорошо                       Плохо
1) fast                 1) Все инструменты не очень
2) headless             комфортны для
                        использования*
                Только WebKit




*кроме testacular, но о нем позже
Browsers for real
jsTestDriver
        Хорошо                      Плохо
1) Хорошая документация   1) Не на github
2) Зрелая библиотека с    2) Говорят работает не
устоявшимся API           стабильно
3) Отличная с IDE         3) Нужна JVM
Testacular
1. npm install testacular@canary -g
2. testacular init <config_name>
3. testacular start <config_name>
Testacular
         Хорошо                        Плохо
1) Все браузеры + phantomjs   1) Необходимо заранее
2) Приличная документация     продумывать разрешение
3) Слежение за изменением     зависимостей js файлов
файлов
4) Режим сервера/один
прогон
5) Легкая интеграция с IDE
6) JUnit + code coverage
Selenium webdriver
1. https://github.com/larrymyers/jasmine-reporters/tree/master/src

     ○   jasmine.junit_reporter.js (допиливаем)


2.   jasmine.getEnv().addReporter(
        new jasmine.JUnitXmlReporter('', false)
     );
Selenium webdriver
3.   спеки в листьях

http://jenkins.bizaccount.test:8081/tests
-



http://jenkins.bizaccount.test:8081/tests/profile


4.   selenium ->
      return jasmine.JUnitXmlReporter.output
Selenium webdriver
         Хорошо                       Плохо
1) Универсально             1) Отностильно долгое время
                            feedback'а
2) Зависимости JS файлов    2) Нет кучи плюшек, в том
решаются на уровне          числе, пока что coverage
приложения

3) Разработчики вообще не
замарачиваются
организацией тестирования
Заключение
1. Если headless - то предпочтительнее
   PhantomJS

2. Real Browser лучше

3. testacular лучше
Ссылки
Статья содержит много полезных ссылок на почти все упомянутое:
 1.   http://anykeytocreate.blogspot.ru/2012/11/unittesting-for-javascript-environment.html

Jasmine:
 2. http://pivotal.github.com/jasmine/

Headless:
 3. http://zombie.labnotes.org/
 4. http://phantomjs.org/

Real Browsers:
 5. http://code.google.com/p/js-test-driver/
 6. http://vojtajina.github.com/testacular/
 7. http://seleniumhq.org/docs/03_webdriver.jsp

Пообсуждать в confluence
 8. http://confluence.dvlp.2gis.local/pages/viewpage.action?pageId=104465152

More Related Content

What's hot

Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
ITCrowd Almaty
 
Александр Тармолов "БЭМ и JavaScript: Тестирование"
Александр Тармолов "БЭМ и JavaScript: Тестирование"Александр Тармолов "БЭМ и JavaScript: Тестирование"
Александр Тармолов "БЭМ и JavaScript: Тестирование"
Yandex
 
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderИлья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
SQALab
 
Current State of Server Side JavaScript
Current State of Server Side JavaScriptCurrent State of Server Side JavaScript
Current State of Server Side JavaScript
Oleg Podsechin
 
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
Provectus
 
Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)
Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)
Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)
Ontico
 

What's hot (20)

Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
 
Александр Тармолов "БЭМ и JavaScript: Тестирование"
Александр Тармолов "БЭМ и JavaScript: Тестирование"Александр Тармолов "БЭМ и JavaScript: Тестирование"
Александр Тармолов "БЭМ и JavaScript: Тестирование"
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderИлья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
 
СЕРГІЙ БРИТ «Огляд фреймворків та інструментів для автоматизації тестування R...
СЕРГІЙ БРИТ «Огляд фреймворків та інструментів для автоматизації тестування R...СЕРГІЙ БРИТ «Огляд фреймворків та інструментів для автоматизації тестування R...
СЕРГІЙ БРИТ «Огляд фреймворків та інструментів для автоматизації тестування R...
 
системы сборок проектов
системы сборок проектовсистемы сборок проектов
системы сборок проектов
 
Current State of Server Side JavaScript
Current State of Server Side JavaScriptCurrent State of Server Side JavaScript
Current State of Server Side JavaScript
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
 
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
 
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesTMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
 
Continuousdelivery
ContinuousdeliveryContinuousdelivery
Continuousdelivery
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
 
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
 
Владимир Гриненко —Инструменты фронтенд-разработчика
Владимир Гриненко —Инструменты фронтенд-разработчикаВладимир Гриненко —Инструменты фронтенд-разработчика
Владимир Гриненко —Инструменты фронтенд-разработчика
 
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноИлья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
 
PHP daemons into social games
PHP daemons into social gamesPHP daemons into social games
PHP daemons into social games
 
Обучение фронтенд разработке
Обучение фронтенд разработкеОбучение фронтенд разработке
Обучение фронтенд разработке
 
2056
20562056
2056
 
Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)
Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)
Ruby для встраиваемых устройств / Петр Зотов (Evil Martians)
 

Similar to JavaScript Unit Testing Using Jasmine And Tools

развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
guest40e031
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
rit2010
 
Rebrov selenium camp2013
Rebrov selenium camp2013Rebrov selenium camp2013
Rebrov selenium camp2013
Andrey Rebrov
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
dddpaul
 
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Nikita Lipsky
 
Client Side Autotesting Flash
Client Side Autotesting FlashClient Side Autotesting Flash
Client Side Autotesting Flash
guestb0af15
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
Dmitry Buzdin
 

Similar to JavaScript Unit Testing Using Jasmine And Tools (20)

Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
Rebrov selenium camp2013
Rebrov selenium camp2013Rebrov selenium camp2013
Rebrov selenium camp2013
 
OpenSource инструменты. Тестируем Web-приложения
OpenSource инструменты. Тестируем Web-приложенияOpenSource инструменты. Тестируем Web-приложения
OpenSource инструменты. Тестируем Web-приложения
 
«Тестируем веб приложения», Павел Сташевский
«Тестируем веб приложения», Павел Сташевский«Тестируем веб приложения», Павел Сташевский
«Тестируем веб приложения», Павел Сташевский
 
Причины и способы имитации back-end'а
Причины и способы имитации back-end'аПричины и способы имитации back-end'а
Причины и способы имитации back-end'а
 
Monitoring and Load testing
Monitoring and Load testingMonitoring and Load testing
Monitoring and Load testing
 
Automation testing desktop applications
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applications
 
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
 
Server Side Javascript (ru)
Server Side Javascript (ru)Server Side Javascript (ru)
Server Side Javascript (ru)
 
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
Testing with Selenium
Testing with SeleniumTesting with Selenium
Testing with Selenium
 
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
 
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
 
Client Side Autotesting Flash
Client Side Autotesting FlashClient Side Autotesting Flash
Client Side Autotesting Flash
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Подводная часть айсберга: что делать, чтобы автотесты не превратились в ТитаникПодводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
 
Игорь Павлов и Глеб Головин
Игорь Павлов и Глеб ГоловинИгорь Павлов и Глеб Головин
Игорь Павлов и Глеб Головин
 

JavaScript Unit Testing Using Jasmine And Tools

  • 1. JavaScript Unit testing using jasmine and tools
  • 2. По месту исполнения кода Серверный JS Клиентский JS jasmine-node браузер?
  • 3. jasmine-node 1. npm install jasmine-node -g 2. jasmine-node specs/ *-spec.js можно обернуть запуск тестов в package.json
  • 4. jasmine-node Хорошо Плохо 1) Есть полезные опций: 1) Если dom - то лучше --autorun отказаться --junitreport 2) не все опции работают как хотелось бы
  • 5. browser? Headless: 1. zombie.js (эмуляция) 2. PhantomJS (webkit) Real browser: 3. jsTestDriver 4. testacular 5. selenium webdriver
  • 7. zombie.js 1. npm install zombie 2. writing async tests using jasmine-node
  • 8. zombie.js Хорошо Плохо 1) fast 1) Just emulation... 2) headless 2) using jasmine-node thanks, but no!
  • 9. PhantomJS 1. npm install phantomjs -g 1. grunt-jasmine-runner 2. phantom-jasmine
  • 10. PhantomJS Хорошо Плохо 1) fast 1) Все инструменты не очень 2) headless комфортны для использования* Только WebKit *кроме testacular, но о нем позже
  • 12. jsTestDriver Хорошо Плохо 1) Хорошая документация 1) Не на github 2) Зрелая библиотека с 2) Говорят работает не устоявшимся API стабильно 3) Отличная с IDE 3) Нужна JVM
  • 13. Testacular 1. npm install testacular@canary -g 2. testacular init <config_name> 3. testacular start <config_name>
  • 14. Testacular Хорошо Плохо 1) Все браузеры + phantomjs 1) Необходимо заранее 2) Приличная документация продумывать разрешение 3) Слежение за изменением зависимостей js файлов файлов 4) Режим сервера/один прогон 5) Легкая интеграция с IDE 6) JUnit + code coverage
  • 15. Selenium webdriver 1. https://github.com/larrymyers/jasmine-reporters/tree/master/src ○ jasmine.junit_reporter.js (допиливаем) 2. jasmine.getEnv().addReporter( new jasmine.JUnitXmlReporter('', false) );
  • 16. Selenium webdriver 3. спеки в листьях http://jenkins.bizaccount.test:8081/tests - http://jenkins.bizaccount.test:8081/tests/profile 4. selenium -> return jasmine.JUnitXmlReporter.output
  • 17. Selenium webdriver Хорошо Плохо 1) Универсально 1) Отностильно долгое время feedback'а 2) Зависимости JS файлов 2) Нет кучи плюшек, в том решаются на уровне числе, пока что coverage приложения 3) Разработчики вообще не замарачиваются организацией тестирования
  • 18. Заключение 1. Если headless - то предпочтительнее PhantomJS 2. Real Browser лучше 3. testacular лучше
  • 19. Ссылки Статья содержит много полезных ссылок на почти все упомянутое: 1. http://anykeytocreate.blogspot.ru/2012/11/unittesting-for-javascript-environment.html Jasmine: 2. http://pivotal.github.com/jasmine/ Headless: 3. http://zombie.labnotes.org/ 4. http://phantomjs.org/ Real Browsers: 5. http://code.google.com/p/js-test-driver/ 6. http://vojtajina.github.com/testacular/ 7. http://seleniumhq.org/docs/03_webdriver.jsp Пообсуждать в confluence 8. http://confluence.dvlp.2gis.local/pages/viewpage.action?pageId=104465152