Введение в непрерывную интеграцию Руденко Виктория Сообщество Тестировщиков Днепропетровска 26/05/2011 Ardas Group
Руденко Виктория Опыт в тестировании – 4 года Должность – QA Lead Отдел QA – 8 человек тестирование контроль качества на всех этапах жизненного цикла ПО непрерывная интеграция - с 2009 г. Немного о себе Введение в непрерывную интеграцию 2 Ardas Group Программное обеспечение, сайты Независимое тестирование Web:
Непрерывная интеграция (англ. Continuous Integration) это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. [Википедия] Определение Введение в непрерывную интеграцию 3
Проблемы 4 проблема интеграции позднее обнаружение дефектов поддержка и запуск существующих тестов и проверок рутина актуальность тестируемой среды Введение в непрерывную интеграцию
«Continuous Integration» это лекарство от страха. Помогает при программировании. Dr. Zoidberg © Введение в непрерывную интеграцию 5 Решение
Этапы непрерывной интеграции 6 Введение в непрерывную интеграцию
Интеграционная сборка может осуществляться: по внешнему запросу по расписанию по факту обновления репозитория Обновление 7 Введение в непрерывную интеграцию Commit
Работа с репозиторием 8 все данные хранятся в репозитории частые коммиты локальная сборка перед коммитом предкоммитная сборка на интеграционном сервере (TeamCity) исправление поломанного кода – приоритетная задача прекращение работы с репозиторием до исправления сборки Введение в непрерывную интеграцию
автоматизированная быстрая: ресурсы компьютера разбиение на подмодули поэтапная критичные проверки сначала выделенная машина Сборка 9 Введение в непрерывную интеграцию
10 Это работает на моей машине!
Программисты пишут код для тестирования программного кода. QA: Все тесты включены в сборку быстрое обнаружение дефектов упрощение рефакторинга Модульное тестирование Введение в непрерывную интеграцию 11
проверка соблюдения стандартов проведение статического анализа измерение метрик Метрики: процент покрытия тестами мера сложности программ число строк кода Инспекция кода 12 Введение в непрерывную интеграцию
автоматизированное указание версии Развертывание Введение в непрерывную интеграцию 13
функциональные тесты (Selenium, TestComplete, Watir) тесты на нагрузку (JMeter, LoadRunner) QA запуск по расписанию реальные условия Приемочное тестирование Введение в непрерывную интеграцию 14
сохранение архивов указание версии и даты сборки QA экономия времени тестирование Архивирование Введение в непрерывную интеграцию 15
Генерация отчета 16 Введение в непрерывную интеграцию Активное оповещение: sms система мгновенных сообщений Пассивное оповещение: публикация на web файловый сервер
CruiseControl сервер интеграции для Java (бесплатный) Серверы непрерывной интеграции Введение в непрерывную интеграцию 17 CruiseControl.NET сервер интеграции для.NET (бесплатный) me+to+CruiseControl.NET CruiseControl сервер интеграции для Ruby (бесплатный)
Hudson open-source сервер интеграции, создан как альтернатива CruiseControl. Серверы непрерывной интеграции Введение в непрерывную интеграцию 18 TeamCity коммерческий сервер интеграции от компаниии JetBrains для java и.NET (есть бесплатная версия). Bamboo коммерческий сервер интеграции от компаниии Attlassian для java,.NET и Ruby.
web-приложения на Java инструменты сборки maven, ant unit тесты Selenium тесты сервер НИ CruiseControl Как это у нас Введение в непрерывную интеграцию 19
Сборка после каждого коммита (Быстрая) компиляция unit тесты сохранение архивов для QA – оповещение о новых архивах всем – в случае поломки или исправлении сборки Ночная сборка (Медленная) компиляция развертывание Selenium-тесты еmail с отчетом сохранение более подробного отчета на файловом сервере Как это у нас Введение в непрерывную интеграцию 20
CruiseControl Введение в непрерывную интеграцию 21
Рекомендации Введение в непрерывную интеграцию 22 1.Martin Fowler Continuous Integration ion.html ion.html 2.Paul M. Duvall Continuous Integration: Improving Software Quality and Reducing Risk Improving-Software-Reducing/dp/ Improving-Software-Reducing/dp/
Преимущества и недостатки НИ 23 Недостатки: выделенный сервер время на поддержку Введение в непрерывную интеграцию Преимущества: снижение рисков уменьшения количества дефектов быстрый сигнал о проблемах избавление от рутины наличие стабильной версии контроль состояния проекта
Вопросы Введение в непрерывную интеграцию 24