Непрерывная интеграция

24
Введение в непрерывную интеграцию Руденко Виктория Сообщество Тестировщиков Днепропетровска 26/05/2011 Ardas Group

Upload: qa-dnepropetrovsk-community-ukraine

Post on 14-Jan-2015

1.295 views

Category:

Documents


0 download

DESCRIPTION

Это рассказ Вики Руденко о том, что такое непрерывная интеграция и каково ее влияние на работу тестировщика. В ее выступлении можно будет узнать о самых популярных системах CI, услышать о их преимуществах и недостатках. А в завершении она на реальном примере покажет, как работает данный подход в ее проекте.

TRANSCRIPT

Page 1: Непрерывная интеграция

Введение в непрерывную интеграцию

Руденко Виктория

Сообщество Тестировщиков Днепропетровска26/05/2011

Ardas Group

Page 2: Непрерывная интеграция

Руденко ВикторияОпыт в тестировании – 4 годаДолжность – QA LeadОтдел QA – 8 человек• тестирование• контроль качества на всех этапах жизненного цикла ПО• непрерывная интеграция - с 2009 г.

Немного о себе

Введение в непрерывную интеграцию

2

Ardas GroupПрограммное обеспечение, сайтыНезависимое тестирование

Web: http://ardas.dp.uaE-mail: [email protected]

Page 3: Непрерывная интеграция

Непрерывная интеграция (англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. [Википедия]

Определение

Введение в непрерывную интеграцию

3

Page 4: Непрерывная интеграция

Проблемы 4• проблема интеграции • позднее обнаружение дефектов• поддержка и запуск существующих тестов и проверок• рутина• актуальность тестируемой среды

Введение в непрерывную интеграцию

Page 5: Непрерывная интеграция

«Continuous Integration» — это лекарство от страха. Помогает при программировании. Dr. Zoidberg ©

Введение в непрерывную интеграцию

5Решение

Page 6: Непрерывная интеграция

Этапы непрерывной интеграции 6

Введение в непрерывную интеграцию

Page 7: Непрерывная интеграция

Интеграционная сборка может осуществляться:• по внешнему запросу• по расписанию• по факту обновления репозитория

Обновление 7

Введение в непрерывную интеграцию

Commit

Page 8: Непрерывная интеграция

Работа с репозиторием 8• все данные хранятся в репозитории• частые коммиты• локальная сборка перед коммитом• предкоммитная сборка на интеграционном сервере (TeamCity)• исправление поломанного кода – приоритетная задача• прекращение работы с репозиторием до исправления сборки

Введение в непрерывную интеграцию

Page 9: Непрерывная интеграция

• автоматизированная• быстрая:

ресурсы компьютера разбиение на подмодули поэтапная критичные проверки сначала

• выделенная машина

Сборка 9

Введение в непрерывную интеграцию

Page 10: Непрерывная интеграция

Введение в непрерывную интеграцию

10“Это работает на моей машине!”

Page 11: Непрерывная интеграция

Программисты пишут код для тестирования программного кода.

QA: Все тесты включены в сборку

быстрое обнаружение дефектов упрощение рефакторинга

Модульное тестирование

Введение в непрерывную интеграцию

11

Page 12: Непрерывная интеграция

• проверка соблюдения стандартов• проведение статического анализа• измерение метрик

Метрики: процент покрытия тестами мера сложности программ число строк кода

Инспекция кода 12

Введение в непрерывную интеграцию

Page 13: Непрерывная интеграция

• автоматизированное• указание версии

Развертывание

Введение в непрерывную интеграцию

13

Page 14: Непрерывная интеграция

• функциональные тесты (Selenium, TestComplete, Watir)• тесты на нагрузку (JMeter, LoadRunner)

QA запуск по расписанию реальные условия

Приемочное тестирование

Введение в непрерывную интеграцию

14

Page 15: Непрерывная интеграция

• сохранение архивов• указание версии и даты сборки

QA экономия времени тестирование

Архивирование

Введение в непрерывную интеграцию

15

Page 16: Непрерывная интеграция

Генерация отчета 16

Введение в непрерывную интеграцию

Активное оповещение:• email• sms• система мгновенных сообщений

Пассивное оповещение:• публикация на web• файловый сервер

Page 17: Непрерывная интеграция

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/

Page 18: Непрерывная интеграция

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/

Page 19: Непрерывная интеграция

• web-приложения на Java• инструменты сборки maven, ant• unit тесты• Selenium тесты• сервер НИ CruiseControl

Как это у нас

Введение в непрерывную интеграцию

19

Page 20: Непрерывная интеграция

Сборка после каждого коммита (Быстрая)• компиляция • unit тесты• сохранение архивов• email для QA – оповещение о новых архивах• email всем – в случае поломки или исправлении сборки

Ночная сборка (Медленная) • компиляция • развертывание• Selenium-тесты• еmail с отчетом• сохранение более подробного отчета на файловом

сервере

Как это у нас

Введение в непрерывную интеграцию

20

Page 21: Непрерывная интеграция

CruiseControl

Введение в непрерывную интеграцию

21

Page 22: Непрерывная интеграция

Рекомендации

Введение в непрерывную интеграцию

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

Page 23: Непрерывная интеграция

Преимущества и недостатки НИ 23Недостатки:• выделенный сервер• время на поддержку

Введение в непрерывную интеграцию

Преимущества:• снижение рисков• уменьшения количества дефектов• быстрый сигнал о проблемах • избавление от рутины• наличие стабильной версии• контроль состояния проекта

Page 24: Непрерывная интеграция

Вопросы

Введение в непрерывную интеграцию

24