SlideShare uma empresa Scribd logo
1 de 30
Анти шаблоны непрерывной интеграции

         Виктор Гляненко. VIAcode
Немного о себе

• Гляненко Виктор

• Software Test Engineer




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

 Анти шаблон: Файлы исходного кода долго остаются без
  синхронизации с репозитарием из-за большого
  количества изменений, необходимых для решения
  поставленной задачи.
 Решение: Чаще синхронизировать небольшие порции
  кода.
Последствия

                           Упущенное время


              Нереализованный функционал

    Локализация проблемы


Внесение
изменений
Поломка

 Анти шаблон:
Сборка остается
неработоспособной в течение
длительного периода времени,
тем самым мешая
разработчикам загружать
функционирующий код из
системы контроля версий.
Поломка
 Решение:
• Разработчики должны быть
  немедленно оповещены в случае
  возникновения сбоя во время
  сборки проекта, а исправление
  поврежденной сборки должно
  стать задачей с максимальным
  приоритетом.
• Не вносить изменения в
  репозиторий при поломанной
  сборке
Последствия



                   Общее время: 80
                   Максимум: 50
                   В среднем: 30




Человеко-часы
Авось

 Анти шаблон: Отсутствие выполнения локальной
  (собственной) сборки до загрузки кода в репозиторий
  системы контроля версий.
 Решение: Локальная сборка проекта с обновлением кода из
  репозитария после внесения изменений в код
  непосредственно перед запуском процесса сборки.
Оно работает!

 Анти шаблон: Делаются частные сборки, которые
  работоспособны только на машине разработчика, а затем
  обнаруживается, что изменения не работают в других
  средах.
 Решение: Использовать отдельный сервер для
  интеграционных сборок, запуская сборку при каждом
  изменении, внесенном в репозиторий системы контроля
  версий
Белый шум

 Анти шаблон: Отсутствие рассылаемых извещений о
  статусе процесса сборки проекта, из-за этого участники
  не узнают, что в ходе сборки проекта возникла ошибка.
 Решение: Использовать различные механизмы обратной
  связи для информирования о статусе сборки проекта.
Спам
 Анти шаблон: Участники команды оказываются заваленными
  сообщениями о статусе процесса сборки (удачном, неудачном
  и всех возможных промежуточных состояниях) до такой
  степени, что начинают игнорировать сообщения.
 Решение: Обратная связь сводится к сжатому объему
  важнейшей информации, чтобы люди не получали лишней
  информации
Пример

Результат   Результат


Результат   Результат


Результат   Результат


Результат   Результат
Ленивец

 Анти шаблон: Если в качестве системы для сборки
  использовать компьютер с ограниченными ресурсами, это
  может привести к длительному времени сборки.
 Решение: Система для сборки должна иметь оптимальные
  характеристики для быстрого проведения сборок проекта.
  Время разработчика стоит дороже обновления
  оборудования.
Результат

   Часы

            В день: 4
            В неделю: 20
            Свободно: 4




            В день: 2
            В неделю: 10
            Свободно: 6
Перегрузка
 Анти шаблон: Добавление всего подряд в процесс сборки,
  запускаемый после загрузки изменений в систему контроля версий.
Перегрузка
 Решение: Разделение сборки на условно независимые части и
  выполнение их параллельно.
Результат

8
7
6
5
4
3               PS3
2
1               X360
0               PC
Полдник

 Анти шаблон: Разработчики фиксируют изменения,
  сделанные за день, перед уходом в конце рабочего дня, что
  приводит к ошибкам интеграционной сборки и не дает
  членам команды вовремя уйти домой.




9.00   10.00   11.00     12.00   13.00   14.00   15.00     16.00   17.00



 Интеграционная сборка


                         Интеграционная сборка           Интеграционная сборка
Полдник

 Решение: Часто фиксировать изменения в коде программы
  на протяжении дня. В конце рабочего дня не вносить код в
  репозиторий



9.00   10.00    11.00     12.00   13.00   14.00    15.00   16.00   17.00



  Интеграционная сборка


                  Интеграционная сборка           Интеграционная сборка
Неосведомлѐнность

 Анти шаблон: Раз сборка
  прошла без ошибок, все
  считают, что полученное
  программное обеспечение
  работает отлично. На самом
  деле сборка состояла всего
  лишь из компиляции и
  тестирования нескольких
  модулей.
Неосведомлѐнность

 Решение: Делать полную интеграционную сборку с каждым
  изменением в репозитарии системы контроля версий.
  Проводить функциональное тестирование после сборки.


                                  • Компиляция
        • Компиляция
                                  • Тестирование

                                  • Проверки
        • Упаковка
                                  • Упаковка

                                  • Развертывание
        • Развертывание           • Установка
Пунктуальность

 Анти шаблон: Сборки
  делаются ежедневно,
  еженедельно или по какому-
  либо другому графику, а не
  после изменений.
Пунктуальность

 Решение: Запускать сборку
  как можно чаще в течении
  рабочего дня.

 Решение: Запускать сборку
  в ручную. Человек
  запустивший сборку
  отвечает за результат.
Близорукая среда
 Анти шаблон: Уверенность, что если сборка работает в одной среде,
  то заработает и в других.
 Решение: Определить поведение сборки в целевых средах сборки,
  кроме того, выделить зависящие от среды данные в файлы свойств.
Загрязненная среда
 Анти шаблон: Для экономии времени запускается инкрементная
  сборка; однако оставшийся от предыдущей сборки артефакт дает
  ложно положительный (или ложно отрицательный) результат.
 Решение: Перед запуском сборки удалите артефакты от предыдущей
  сборки. Приведите сервер и конфигурационную информацию в
  исходное состояние.
Заключение

 Если избегать некоторых анти шаблонов отдача от процесса
  непрерывной интеграции станет больше. Существуют
  веские причины к использованию некоторых из этих
  подходов в процессе разработки, но они могут привести к
  возникновению выше перечисленных проблем.

 Запомните, сами по себе анти шаблоны не плохи, но в
  определенных ситуациях они могут быть вредны.
Вопросы?
Спасибо!



Контакты:
botikus@yandex.ru
Skype: botikus1
References
          Paul Duvall
          Paul Duvall is the CTO of Stelligent Incorporated, a consulting
          firm and thought leader in helping development teams
          optimize Agile software production. He is the co-author of the
          Addison-Wesley Signature Series book, Continuous Integration:
          Improving Software Quality and Reducing Risk



Book:
“Continuous Integration: Improving
Software Quality and Reducing Risk”



Article:
“Automation for the people: Continuous
Integration anti-patterns”

Mais conteúdo relacionado

Mais procurados

Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17OdessaFrontend
 
Марина Широчкина - Тестирование
Марина Широчкина - ТестированиеМарина Широчкина - Тестирование
Марина Широчкина - ТестированиеYandex
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
Марина Широчкина: Тестирование
Марина Широчкина: ТестированиеМарина Широчкина: Тестирование
Марина Широчкина: ТестированиеYandex
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙCEE-SEC(R)
 
Практика DevOps в крупных организациях
Практика DevOps в крупных организацияхПрактика DevOps в крупных организациях
Практика DevOps в крупных организацияхSoftmart
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42DevDay
 
Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?Andrey Karpov
 
Continuous Deployment (in Russian)
Continuous Deployment  (in Russian)Continuous Deployment  (in Russian)
Continuous Deployment (in Russian)Smartling
 
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOpsSECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOpsSECON
 
DevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуDevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуAndrey Rebrov
 
Автоматизация сборки и тестирования в разрезе эффективного производства
Автоматизация сборки и тестирования в разрезе эффективного производстваАвтоматизация сборки и тестирования в разрезе эффективного производства
Автоматизация сборки и тестирования в разрезе эффективного производстваSQALab
 
Continuous deployment Smartling event
Continuous deployment Smartling eventContinuous deployment Smartling event
Continuous deployment Smartling eventViktoriya Pridatko
 
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежать
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежатьОшибки начинающего специалиста по нагрузочному тестированию и как их избежать
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежатьSQALab
 
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)Ontico
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииCEE-SEC(R)
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQAFest
 
Автоматизация тестирования на крупных проектах
Автоматизация тестирования на крупных проектахАвтоматизация тестирования на крупных проектах
Автоматизация тестирования на крупных проектахIgor Khrol
 
евгения фирсова нерелизное тестирование
евгения фирсова   нерелизное тестированиеевгения фирсова   нерелизное тестирование
евгения фирсова нерелизное тестированиеAlexei Lupan
 
Тестируем производительность с помощью Selenium
Тестируем производительность с помощью SeleniumТестируем производительность с помощью Selenium
Тестируем производительность с помощью SeleniumSQALab
 

Mais procurados (20)

Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
 
Марина Широчкина - Тестирование
Марина Широчкина - ТестированиеМарина Широчкина - Тестирование
Марина Широчкина - Тестирование
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
Марина Широчкина: Тестирование
Марина Широчкина: ТестированиеМарина Широчкина: Тестирование
Марина Широчкина: Тестирование
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
 
Практика DevOps в крупных организациях
Практика DevOps в крупных организацияхПрактика DevOps в крупных организациях
Практика DevOps в крупных организациях
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
 
Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?Что DevOps должен знать про статический анализ кода?
Что DevOps должен знать про статический анализ кода?
 
Continuous Deployment (in Russian)
Continuous Deployment  (in Russian)Continuous Deployment  (in Russian)
Continuous Deployment (in Russian)
 
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOpsSECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
SECON'2016 Евтухович Иван, Эксплуатация завтрашнего дня: от DevOps к NoOps
 
DevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почемуDevOps от и до - что, зачем и почему
DevOps от и до - что, зачем и почему
 
Автоматизация сборки и тестирования в разрезе эффективного производства
Автоматизация сборки и тестирования в разрезе эффективного производстваАвтоматизация сборки и тестирования в разрезе эффективного производства
Автоматизация сборки и тестирования в разрезе эффективного производства
 
Continuous deployment Smartling event
Continuous deployment Smartling eventContinuous deployment Smartling event
Continuous deployment Smartling event
 
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежать
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежатьОшибки начинающего специалиста по нагрузочному тестированию и как их избежать
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежать
 
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
Реальный DevOps в энтерпрайзе / Александр Тараторин (Райффайзенбанк)
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документации
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 
Автоматизация тестирования на крупных проектах
Автоматизация тестирования на крупных проектахАвтоматизация тестирования на крупных проектах
Автоматизация тестирования на крупных проектах
 
евгения фирсова нерелизное тестирование
евгения фирсова   нерелизное тестированиеевгения фирсова   нерелизное тестирование
евгения фирсова нерелизное тестирование
 
Тестируем производительность с помощью Selenium
Тестируем производительность с помощью SeleniumТестируем производительность с помощью Selenium
Тестируем производительность с помощью Selenium
 

Semelhante a Анти шаблоны непрерывной интеграции

Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Technopark
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Technopark
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileKairat Yussupov
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Vladimir Bakhov
 
Способы организаций больших Java проектов по Автоматизированному тестированию
Способы организаций больших Java проектов по Автоматизированному тестированиюСпособы организаций больших Java проектов по Автоматизированному тестированию
Способы организаций больших Java проектов по Автоматизированному тестированиюCOMAQA.BY
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Continous Integration
Continous IntegrationContinous Integration
Continous IntegrationGetDev.NET
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...MskDotNet Community
 
Выступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыВыступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыryba4
 
Облегчаем процесс разработки с помощью статического анализа кода: Наш опыт
Облегчаем процесс разработки с помощью статического анализа кода: Наш опытОблегчаем процесс разработки с помощью статического анализа кода: Наш опыт
Облегчаем процесс разработки с помощью статического анализа кода: Наш опытAndrey Karpov
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...Sergey Ponomarev
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU
 
Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015Александр Ежов
 

Semelhante a Анти шаблоны непрерывной интеграции (20)

Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-Agile
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)
 
Способы организаций больших Java проектов по Автоматизированному тестированию
Способы организаций больших Java проектов по Автоматизированному тестированиюСпособы организаций больших Java проектов по Автоматизированному тестированию
Способы организаций больших Java проектов по Автоматизированному тестированию
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Continous Integration
Continous IntegrationContinous Integration
Continous Integration
 
Непрерывная интеграция (Марина Пестова)
Непрерывная интеграция (Марина Пестова)Непрерывная интеграция (Марина Пестова)
Непрерывная интеграция (Марина Пестова)
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
 
Выступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыВыступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работы
 
Облегчаем процесс разработки с помощью статического анализа кода: Наш опыт
Облегчаем процесс разработки с помощью статического анализа кода: Наш опытОблегчаем процесс разработки с помощью статического анализа кода: Наш опыт
Облегчаем процесс разработки с помощью статического анализа кода: Наш опыт
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест Джоэла
 
Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015
 

Mais de SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 
Истинная сила тестировщика - информация
Истинная сила тестировщика - информацияИстинная сила тестировщика - информация
Истинная сила тестировщика - информацияSQALab
 

Mais de SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 
Истинная сила тестировщика - информация
Истинная сила тестировщика - информацияИстинная сила тестировщика - информация
Истинная сила тестировщика - информация
 

Анти шаблоны непрерывной интеграции

  • 1. Анти шаблоны непрерывной интеграции Виктор Гляненко. VIAcode
  • 2. Немного о себе • Гляненко Виктор • Software Test Engineer botikus@yandex.ru
  • 3. Непрерывная интеграция Непрерывная интеграция (англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем.
  • 4. Редкая синхронизация  Анти шаблон: Файлы исходного кода долго остаются без синхронизации с репозитарием из-за большого количества изменений, необходимых для решения поставленной задачи.  Решение: Чаще синхронизировать небольшие порции кода.
  • 5. Последствия Упущенное время Нереализованный функционал Локализация проблемы Внесение изменений
  • 6. Поломка  Анти шаблон: Сборка остается неработоспособной в течение длительного периода времени, тем самым мешая разработчикам загружать функционирующий код из системы контроля версий.
  • 7. Поломка  Решение: • Разработчики должны быть немедленно оповещены в случае возникновения сбоя во время сборки проекта, а исправление поврежденной сборки должно стать задачей с максимальным приоритетом. • Не вносить изменения в репозиторий при поломанной сборке
  • 8. Последствия Общее время: 80 Максимум: 50 В среднем: 30 Человеко-часы
  • 9. Авось  Анти шаблон: Отсутствие выполнения локальной (собственной) сборки до загрузки кода в репозиторий системы контроля версий.  Решение: Локальная сборка проекта с обновлением кода из репозитария после внесения изменений в код непосредственно перед запуском процесса сборки.
  • 10. Оно работает!  Анти шаблон: Делаются частные сборки, которые работоспособны только на машине разработчика, а затем обнаруживается, что изменения не работают в других средах.  Решение: Использовать отдельный сервер для интеграционных сборок, запуская сборку при каждом изменении, внесенном в репозиторий системы контроля версий
  • 11. Белый шум  Анти шаблон: Отсутствие рассылаемых извещений о статусе процесса сборки проекта, из-за этого участники не узнают, что в ходе сборки проекта возникла ошибка.  Решение: Использовать различные механизмы обратной связи для информирования о статусе сборки проекта.
  • 12. Спам  Анти шаблон: Участники команды оказываются заваленными сообщениями о статусе процесса сборки (удачном, неудачном и всех возможных промежуточных состояниях) до такой степени, что начинают игнорировать сообщения.  Решение: Обратная связь сводится к сжатому объему важнейшей информации, чтобы люди не получали лишней информации
  • 13. Пример Результат Результат Результат Результат Результат Результат Результат Результат
  • 14. Ленивец  Анти шаблон: Если в качестве системы для сборки использовать компьютер с ограниченными ресурсами, это может привести к длительному времени сборки.  Решение: Система для сборки должна иметь оптимальные характеристики для быстрого проведения сборок проекта. Время разработчика стоит дороже обновления оборудования.
  • 15. Результат Часы В день: 4 В неделю: 20 Свободно: 4 В день: 2 В неделю: 10 Свободно: 6
  • 16. Перегрузка  Анти шаблон: Добавление всего подряд в процесс сборки, запускаемый после загрузки изменений в систему контроля версий.
  • 17. Перегрузка  Решение: Разделение сборки на условно независимые части и выполнение их параллельно.
  • 18. Результат 8 7 6 5 4 3 PS3 2 1 X360 0 PC
  • 19. Полдник  Анти шаблон: Разработчики фиксируют изменения, сделанные за день, перед уходом в конце рабочего дня, что приводит к ошибкам интеграционной сборки и не дает членам команды вовремя уйти домой. 9.00 10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00 Интеграционная сборка Интеграционная сборка Интеграционная сборка
  • 20. Полдник  Решение: Часто фиксировать изменения в коде программы на протяжении дня. В конце рабочего дня не вносить код в репозиторий 9.00 10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00 Интеграционная сборка Интеграционная сборка Интеграционная сборка
  • 21. Неосведомлѐнность  Анти шаблон: Раз сборка прошла без ошибок, все считают, что полученное программное обеспечение работает отлично. На самом деле сборка состояла всего лишь из компиляции и тестирования нескольких модулей.
  • 22. Неосведомлѐнность  Решение: Делать полную интеграционную сборку с каждым изменением в репозитарии системы контроля версий. Проводить функциональное тестирование после сборки. • Компиляция • Компиляция • Тестирование • Проверки • Упаковка • Упаковка • Развертывание • Развертывание • Установка
  • 23. Пунктуальность  Анти шаблон: Сборки делаются ежедневно, еженедельно или по какому- либо другому графику, а не после изменений.
  • 24. Пунктуальность  Решение: Запускать сборку как можно чаще в течении рабочего дня.  Решение: Запускать сборку в ручную. Человек запустивший сборку отвечает за результат.
  • 25. Близорукая среда  Анти шаблон: Уверенность, что если сборка работает в одной среде, то заработает и в других.  Решение: Определить поведение сборки в целевых средах сборки, кроме того, выделить зависящие от среды данные в файлы свойств.
  • 26. Загрязненная среда  Анти шаблон: Для экономии времени запускается инкрементная сборка; однако оставшийся от предыдущей сборки артефакт дает ложно положительный (или ложно отрицательный) результат.  Решение: Перед запуском сборки удалите артефакты от предыдущей сборки. Приведите сервер и конфигурационную информацию в исходное состояние.
  • 27. Заключение  Если избегать некоторых анти шаблонов отдача от процесса непрерывной интеграции станет больше. Существуют веские причины к использованию некоторых из этих подходов в процессе разработки, но они могут привести к возникновению выше перечисленных проблем.  Запомните, сами по себе анти шаблоны не плохи, но в определенных ситуациях они могут быть вредны.
  • 30. References Paul Duvall Paul Duvall is the CTO of Stelligent Incorporated, a consulting firm and thought leader in helping development teams optimize Agile software production. He is the co-author of the Addison-Wesley Signature Series book, Continuous Integration: Improving Software Quality and Reducing Risk Book: “Continuous Integration: Improving Software Quality and Reducing Risk” Article: “Automation for the people: Continuous Integration anti-patterns”