Upload
fdconf
View
4.378
Download
0
Embed Size (px)
Citation preview
Любите тесты?Любите писать тесты?Любите запускать тесты?Любите вручную запускать тесты?Любите часто вручную запускать тесты?Менеджер не понимает, зачем вам тесты?Всем всё равно на тесты?
Что интегрировать?Части одного приложения, которые разрабатываются в разными командами, ветки в 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