Любите тесты?Любите писать тесты?Любите запускать тесты?Любите вручную запускать тесты?Любите часто вручную запускать тесты?Менеджер не понимает, зачем вам тесты?Всем всё равно на тесты?
Что интегрировать?Части одного приложения, которые разрабатываются в разными командами, ветки в git/hg/svn/etc.
Зачем интегрировать?Все части приложения должны работать в итоговой сборке, а за время разработки проект изменился
Правила непрерывной интеграции
1. автоматическая сборка с тестами2. все комитят часто (min раз в день)3. быстрая сборка и быстрые тесты4. легко узнать статус любой сборки5. тесты используют настоящую БД
Правила непрерывной интеграции
1. автоматическая сборка с тестами2. все комитят часто (min раз в день)3. быстрая сборка и быстрые тесты4. легко узнать статус любой сборки5. тесты используют настоящую БД
Правила непрерывной интеграции
1. автоматическая сборка с тестами2. все комитят часто (min раз в день)3. быстрая сборка и быстрые тесты4. легко узнать статус любой сборки5. тесты используют настоящую БД
Что внутри приложения - код
Single Page ApplicationBack-end (api) - Java 90%, Scala - 9%, black matery - 2%Front-end - JavaScript 90%, SCSS - 10%
Back-end: 500 юнит тестов, 600 rest тестов
Front-end: 6600 юнит тестов
Selenium: 150 тестов
Что внутри приложения - тесты последовательно
30 секунд 60 минут
10 минут локально на i7, 30 минут удаленно
IE8 - пф… пол дня? Chrome - час
параллельно
30 секунд 9 минут
5 минут локально на i7, 8 минут удаленно
IE8 - 5 тестов - 15 минут Chrome - 9 минут
локально● изменил BE API - 20 минут (rest +
selenium)● изменил FE - 10 минутна сервере (bamboo, jenkins, etc.)● любой push - 15 минут
Что внутри приложения - итого
программисты ленивыразные компьютеры и системыпока сборка “красная” - никто не делает pushвремя - деньги
НИКТО НЕ ЗАПУСКАЕТ ВСЕ ТЕСТЫ ЛОКАЛЬНО
Зачем быстрые тесты на сервере?
Правила непрерывной интеграции
1. автоматическая сборка с тестами2. все комитят часто (min раз в день)3. быстрая сборка и быстрые тесты4. легко узнать статус любой сборки5. тесты используют настоящую БД
Правила непрерывной интеграции
1. автоматическая сборка с тестами2. все комитят часто (min раз в день)3. быстрая сборка и быстрые тесты4. легко узнать статус любой сборки5. тесты используют настоящую БД
5. Настоящая БД
клонируем и очищаем от личных данныхдобавляем настройки для тестовсоздаем слепок (snapshot)каждую ночь разворачиваем слепок
Continuous DeliveryrevisionNumber=${bamboo.repository.revision.number}hg tag -f --user bambooci -r $revisionNumber latest_RChg pull --rebasehg push
$ ssh root@live_server[root@live_server ~]# cd /www/live/[root@live_server /www/live]# hg up -tag latest_RCUpdated live!!!
Travis CI
● Облачный сервис для запуска тестов
● Легкая интеграция с github○ бесплатно для открытых проектов
○ от $120 в месяц для закрытых (100 первых
сборок - бесплатно!)
● JavaScript, PHP, C++, Ruby, Visual Basic
Snap-CI● Облачный сервис для запуска тестов● Простая интеграция - привязать репозиторий
и ввести команду для тестов○ Бесплатно для открытых проектов○ от $30 для закрытых проектов
● Больше настроек через GUI, например, запуск по расписанию (cron) - зачем?
● Дешевле● Менее популярен среди open-source проектов
Используемая литература
1. Bamboo2. Travis CI3. Snap CI4. Демо-проект https://github.
com/theghostbel/travis-mocha5. светофор за $22 http://goo.gl/gp1ldx6. Arduino за $10 и реле за $10
Библиотеки
Тестозапускатели JS кода● Mocha (демо)● Karma (angular)Тестозапускатели E2E (Selenium) ● Protractor (angular)● webdriver.io