Непрерывная интеграция
DESCRIPTION
Это рассказ Вики Руденко о том, что такое непрерывная интеграция и каково ее влияние на работу тестировщика. В ее выступлении можно будет узнать о самых популярных системах CI, услышать о их преимуществах и недостатках. А в завершении она на реальном примере покажет, как работает данный подход в ее проекте.TRANSCRIPT
Введение в непрерывную интеграцию
Руденко Виктория
Сообщество Тестировщиков Днепропетровска26/05/2011
Ardas Group
Руденко ВикторияОпыт в тестировании – 4 годаДолжность – QA LeadОтдел QA – 8 человек• тестирование• контроль качества на всех этапах жизненного цикла ПО• непрерывная интеграция - с 2009 г.
Немного о себе
Введение в непрерывную интеграцию
2
Ardas GroupПрограммное обеспечение, сайтыНезависимое тестирование
Web: http://ardas.dp.uaE-mail: [email protected]
Непрерывная интеграция (англ. 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
Введение в непрерывную интеграцию
Активное оповещение:• email• sms• система мгновенных сообщений
Пассивное оповещение:• публикация на web• файловый сервер
CruiseControl — сервер интеграции для Java (бесплатный)http://cruisecontrol.sourceforge.net/
Серверы непрерывной интеграции
Введение в непрерывную интеграцию
17
CruiseControl.NET — сервер интеграции для .NET (бесплатный) http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET
CruiseControl — сервер интеграции для Ruby (бесплатный) http://cruisecontrolrb.thoughtworks.com/
Hudson — open-source сервер интеграции, создан как альтернатива CruiseControl.http://hudson-ci.org/
Серверы непрерывной интеграции
Введение в непрерывную интеграцию
18
TeamCity — коммерческий сервер интеграции от компаниии JetBrains для java и .NET (есть бесплатная версия). http://www.jetbrains.com/teamcity/
Bamboo — коммерческий сервер интеграции от компаниии Attlassian для java, .NET и Ruby.http://www.atlassian.com/software/bamboo/
• web-приложения на Java• инструменты сборки maven, ant• unit тесты• Selenium тесты• сервер НИ CruiseControl
Как это у нас
Введение в непрерывную интеграцию
19
Сборка после каждого коммита (Быстрая)• компиляция • unit тесты• сохранение архивов• email для QA – оповещение о новых архивах• email всем – в случае поломки или исправлении сборки
Ночная сборка (Медленная) • компиляция • развертывание• Selenium-тесты• еmail с отчетом• сохранение более подробного отчета на файловом
сервере
Как это у нас
Введение в непрерывную интеграцию
20
CruiseControl
Введение в непрерывную интеграцию
21
Рекомендации
Введение в непрерывную интеграцию
221. Martin Fowler “Continuous Integration “
http://www.martinfowler.com/articles/continuousIntegration.html
2. Paul M. Duvall “Continuous Integration: Improving Software Quality and Reducing Risk” http://www.amazon.com/Continuous-Integration-Improving-Software-Reducing/dp/0321336380
Преимущества и недостатки НИ 23Недостатки:• выделенный сервер• время на поддержку
Введение в непрерывную интеграцию
Преимущества:• снижение рисков• уменьшения количества дефектов• быстрый сигнал о проблемах • избавление от рутины• наличие стабильной версии• контроль состояния проекта
Вопросы
Введение в непрерывную интеграцию
24