SlideShare a Scribd company logo
1 of 46
Software quality assurance days
20 Международная конференция
по вопросам качества ПО
sqadays.com
Минск. 24–26 ноября 2016
Семерханов Илья
T-Systems RUS, Санкт-Петербург, Россия
Практики и инструменты DevOps для
построения тестового окружения
Практики и инструменты DevOps для построения тестового окружения
О себе
www.linkedin.com/in/ilya-semerhanov
https://www.facebook.com/ilya.semerhanov
Практики и инструменты DevOps для построения тестового окружения
О чем?
• Немного про DevOps
• Как можно использовать в тестировании
• Как лучше настраивать тестовые окружения
• Какие использовать инструменты для этого
Практики и инструменты DevOps для построения тестового окружения
Зачем DevOps тестировщику?
Практики и инструменты DevOps для построения тестового окружения
DevOps
Практики и инструменты DevOps для построения тестового окружения
DevOps
Развертывание дев окружений
Автоматизация сборки
Continuous Integration
Development
Практики и инструменты DevOps для построения тестового окружения
DevOps
Развертывание дев окружений
Автоматизация сборки
Continuous Integration
Development
QA Развертывание тестовых окружений
Автоматизация тестов
Continuous Deployment
Практики и инструменты DevOps для построения тестового окружения
DevOps
Развертывание дев окружений
Автоматизация сборки
Continuous Integration
Development
QA
Operations
Развертывание тестовых окружений
Автоматизация тестов
Continuous Deployment
Развертывание production окружения
Автоматизация поставки
Continuous DeliveryDeployment
Практики и инструменты DevOps для построения тестового окружения
DevOps
Развертывание дев окружений
Автоматизация сборки
Continuous Integration
Development
QA
Operations
Развертывание тестовых окружений
Автоматизация тестов
Continuous Deployment
Развертывание production окружения
Автоматизация поставки
Continuous DeliveryDeployment
На каждом этапе можно использовать DevOps
Практики и инструменты DevOps для построения тестового окружения
Проблемы
• Большое время между обнаружением бага, его фиксом и установкой
• Неразбериха в тестовых окружениях и их конфигурациях
• Конфигурацию тестовых окружений сложно менять
• Проблема «А у меня все работает»
Практики и инструменты DevOps для построения тестового окружения
Проблемы
Практики и инструменты DevOps для построения тестового окружения
Набитые шишки
• Test окружение ~ Production окружение
• Деплоить надо как можно чаще
• Как можно раньше нужно интегрировать все компоненты
• Возможность откатиться необходима
• Держать все конфигурации в коде
Практики и инструменты DevOps для построения тестового окружения
Области применения
• Автоматическое создание тестовых окружений
• Использование виртуальных окружений
• Использование практик Continuous Integration и Continuous Delivery
• Мониторинг тестовых окружений и логов
Практики и инструменты DevOps для построения тестового окружения
Создание тестовых окружений
Практики и инструменты DevOps для построения тестового окружения
Автоматическое создание тестовых окружений
От «ручной» настройки следует отказаться!
Практики и инструменты DevOps для построения тестового окружения
Ansible
Инструмент для автоматического развертывания окружений
Практики и инструменты DevOps для построения тестового окружения
Ansible
• Взаимодействие с окружениями через SSH
• Простота написания сценариев
• Декларативный язык
• Большое количество готовых модулей
• Большое сообщество
Практики и инструменты DevOps для построения тестового окружения
Структура Ansible
Tasks
RolesDependencies
HandlersVariables
Templates
Практики и инструменты DevOps для построения тестового окружения
Модули
Готовые команды «из коробки». Более 100 различных модулей.
•Shell
•File
•Copy
•Cron
•Template
Практики и инструменты DevOps для построения тестового окружения
Ansible Playbooks
Сценарий на Yaml, состоящий из набора ролей.
ansible-playbook <имя_файла_сценария.yml> ... [другие параметры]
•Позволяет описать процедуру автоматической настройки окружений
•Можно использовать на всех окружениях один сценарий
•Можно использовать таски в других сценариях
Практики и инструменты DevOps для построения тестового окружения
Ansible Playbooks
Практики и инструменты DevOps для построения тестового окружения
Пример Ansible Playbook
Практики и инструменты DevOps для построения тестового окружения
Преимущества
• Скорость развертывания новых окружений
• Гарантия того, что окружения настроены одинаково
• Уменьшение человеческого фактора
Практики и инструменты DevOps для построения тестового окружения
Ansible Playbooks
Практики и инструменты DevOps для построения тестового окружения
Виртуализация
Практики и инструменты DevOps для построения тестового окружения
Использование виртуализации
• Virtual Box, VMWare, Hyper V, etc…
• Vagrant
• Docker
Практики и инструменты DevOps для построения тестового окружения
Vagrant
Vagrant – оболочка для систем виртуализации.
•Проще чем установка гостевой ОС из ISO
•Большой набор готовых Box
•Конфигурация через код – VagrantFile
•Интеграция с Ansible
Практики и инструменты DevOps для построения тестового окружения
Для чего используется Vagrant
• «Песочница»
• Девелоперское окружение
• Тестовое окружение
Практики и инструменты DevOps для построения тестового окружения
Как начать работать с Vagrant
• Установка на машину
• Установка Virtual Box
• Установка плагинов через vagrant plugin install
• Поиск нужной базовой сборки (vagrant box) или Vagrant-файл в
репозитории Atlas (https://atlas.hashicorp.com/boxes/search)
или GitHub
Установка готового box: vagrant init hashicorp/precise64
Сборка из VagrantFile: vagrant up
Практики и инструменты DevOps для построения тестового окружения
Создание собственного Box
• Поднять текущий бокс или виртуальную машину
• Внести изменения
• Запаковать: vagrant package --output mynew.box
Практики и инструменты DevOps для построения тестового окружения
Пример VagrantFile
Практики и инструменты DevOps для построения тестового окружения
Docker
Позволяет создать изолированные среды на одной ОС без гипервизора.
•Просто создать с нуля любое количество окружений
•«Быстрее» чем виртуализиция с гостевыми ОС
•Конфигурация через код - DockerFile
Практики и инструменты DevOps для построения тестового окружения
Docker
Практики и инструменты DevOps для построения тестового окружения
Пример DockerFile
Практики и инструменты DevOps для построения тестового окружения
Continuous Integration and Delivery
Практики и инструменты DevOps для построения тестового окружения
Использование практик CI и CD
• Каждое изменение -> новые билд
• Новый билд -> новая версия
• Новая версия билда -> загружаем в хранилище
• Любой билд «потенциально» готов к установке
• Установка автоматически после создания билда, по расписанию или по
требованию
Практики и инструменты DevOps для построения тестового окружения
Последовательность
Практики и инструменты DevOps для построения тестового окружения
Сбор и анализ логов
Практики и инструменты DevOps для построения тестового окружения
ELK Stack
Агрегация логов с разных окружений
ELK Stack
Практики и инструменты DevOps для построения тестового окружения
ELK Stack
• Удобный доступ к логам
• Средства поиска
• Манипуляции логами
Практики и инструменты DevOps для построения тестового окружения
Мониторинг окружений
Практики и инструменты DevOps для построения тестового окружения
Graphite + Grafana
http://sqadays.com/ru/talk/34444
Практики и инструменты DevOps для построения тестового окружения
Graphite + Grafana
Практики и инструменты DevOps для построения тестового окружения
Какие проблемы решаются?
• Время поставки новой версии значительно уменьшается
• Конфигурации всех окружений под контролем
• Все окружения настроены идентично
• Вносить изменения в конфигурацию значительно проще
• Заранее видно проблемные окружения
Практики и инструменты DevOps для построения тестового окружения
Вопросы

More Related Content

More from 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
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве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
 
Автоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПОАвтоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПОSQALab
 
Правильный подход к составлению профиля нагрузочного тестирования
Правильный подход к составлению профиля нагрузочного тестированияПравильный подход к составлению профиля нагрузочного тестирования
Правильный подход к составлению профиля нагрузочного тестированияSQALab
 

More from SQALab (20)

Автоматизация 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 автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 
Истинная сила тестировщика - информация
Истинная сила тестировщика - информацияИстинная сила тестировщика - информация
Истинная сила тестировщика - информация
 
Автоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПОАвтоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПО
 
Правильный подход к составлению профиля нагрузочного тестирования
Правильный подход к составлению профиля нагрузочного тестированияПравильный подход к составлению профиля нагрузочного тестирования
Правильный подход к составлению профиля нагрузочного тестирования
 

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

  • 1. Software quality assurance days 20 Международная конференция по вопросам качества ПО sqadays.com Минск. 24–26 ноября 2016 Семерханов Илья T-Systems RUS, Санкт-Петербург, Россия Практики и инструменты DevOps для построения тестового окружения
  • 2. Практики и инструменты DevOps для построения тестового окружения О себе www.linkedin.com/in/ilya-semerhanov https://www.facebook.com/ilya.semerhanov
  • 3. Практики и инструменты DevOps для построения тестового окружения О чем? • Немного про DevOps • Как можно использовать в тестировании • Как лучше настраивать тестовые окружения • Какие использовать инструменты для этого
  • 4. Практики и инструменты DevOps для построения тестового окружения Зачем DevOps тестировщику?
  • 5. Практики и инструменты DevOps для построения тестового окружения DevOps
  • 6. Практики и инструменты DevOps для построения тестового окружения DevOps Развертывание дев окружений Автоматизация сборки Continuous Integration Development
  • 7. Практики и инструменты DevOps для построения тестового окружения DevOps Развертывание дев окружений Автоматизация сборки Continuous Integration Development QA Развертывание тестовых окружений Автоматизация тестов Continuous Deployment
  • 8. Практики и инструменты DevOps для построения тестового окружения DevOps Развертывание дев окружений Автоматизация сборки Continuous Integration Development QA Operations Развертывание тестовых окружений Автоматизация тестов Continuous Deployment Развертывание production окружения Автоматизация поставки Continuous DeliveryDeployment
  • 9. Практики и инструменты DevOps для построения тестового окружения DevOps Развертывание дев окружений Автоматизация сборки Continuous Integration Development QA Operations Развертывание тестовых окружений Автоматизация тестов Continuous Deployment Развертывание production окружения Автоматизация поставки Continuous DeliveryDeployment На каждом этапе можно использовать DevOps
  • 10. Практики и инструменты DevOps для построения тестового окружения Проблемы • Большое время между обнаружением бага, его фиксом и установкой • Неразбериха в тестовых окружениях и их конфигурациях • Конфигурацию тестовых окружений сложно менять • Проблема «А у меня все работает»
  • 11. Практики и инструменты DevOps для построения тестового окружения Проблемы
  • 12. Практики и инструменты DevOps для построения тестового окружения Набитые шишки • Test окружение ~ Production окружение • Деплоить надо как можно чаще • Как можно раньше нужно интегрировать все компоненты • Возможность откатиться необходима • Держать все конфигурации в коде
  • 13. Практики и инструменты DevOps для построения тестового окружения Области применения • Автоматическое создание тестовых окружений • Использование виртуальных окружений • Использование практик Continuous Integration и Continuous Delivery • Мониторинг тестовых окружений и логов
  • 14. Практики и инструменты DevOps для построения тестового окружения Создание тестовых окружений
  • 15. Практики и инструменты DevOps для построения тестового окружения Автоматическое создание тестовых окружений От «ручной» настройки следует отказаться!
  • 16. Практики и инструменты DevOps для построения тестового окружения Ansible Инструмент для автоматического развертывания окружений
  • 17. Практики и инструменты DevOps для построения тестового окружения Ansible • Взаимодействие с окружениями через SSH • Простота написания сценариев • Декларативный язык • Большое количество готовых модулей • Большое сообщество
  • 18. Практики и инструменты DevOps для построения тестового окружения Структура Ansible Tasks RolesDependencies HandlersVariables Templates
  • 19. Практики и инструменты DevOps для построения тестового окружения Модули Готовые команды «из коробки». Более 100 различных модулей. •Shell •File •Copy •Cron •Template
  • 20. Практики и инструменты DevOps для построения тестового окружения Ansible Playbooks Сценарий на Yaml, состоящий из набора ролей. ansible-playbook <имя_файла_сценария.yml> ... [другие параметры] •Позволяет описать процедуру автоматической настройки окружений •Можно использовать на всех окружениях один сценарий •Можно использовать таски в других сценариях
  • 21. Практики и инструменты DevOps для построения тестового окружения Ansible Playbooks
  • 22. Практики и инструменты DevOps для построения тестового окружения Пример Ansible Playbook
  • 23. Практики и инструменты DevOps для построения тестового окружения Преимущества • Скорость развертывания новых окружений • Гарантия того, что окружения настроены одинаково • Уменьшение человеческого фактора
  • 24. Практики и инструменты DevOps для построения тестового окружения Ansible Playbooks
  • 25. Практики и инструменты DevOps для построения тестового окружения Виртуализация
  • 26. Практики и инструменты DevOps для построения тестового окружения Использование виртуализации • Virtual Box, VMWare, Hyper V, etc… • Vagrant • Docker
  • 27. Практики и инструменты DevOps для построения тестового окружения Vagrant Vagrant – оболочка для систем виртуализации. •Проще чем установка гостевой ОС из ISO •Большой набор готовых Box •Конфигурация через код – VagrantFile •Интеграция с Ansible
  • 28. Практики и инструменты DevOps для построения тестового окружения Для чего используется Vagrant • «Песочница» • Девелоперское окружение • Тестовое окружение
  • 29. Практики и инструменты DevOps для построения тестового окружения Как начать работать с Vagrant • Установка на машину • Установка Virtual Box • Установка плагинов через vagrant plugin install • Поиск нужной базовой сборки (vagrant box) или Vagrant-файл в репозитории Atlas (https://atlas.hashicorp.com/boxes/search) или GitHub Установка готового box: vagrant init hashicorp/precise64 Сборка из VagrantFile: vagrant up
  • 30. Практики и инструменты DevOps для построения тестового окружения Создание собственного Box • Поднять текущий бокс или виртуальную машину • Внести изменения • Запаковать: vagrant package --output mynew.box
  • 31. Практики и инструменты DevOps для построения тестового окружения Пример VagrantFile
  • 32. Практики и инструменты DevOps для построения тестового окружения Docker Позволяет создать изолированные среды на одной ОС без гипервизора. •Просто создать с нуля любое количество окружений •«Быстрее» чем виртуализиция с гостевыми ОС •Конфигурация через код - DockerFile
  • 33. Практики и инструменты DevOps для построения тестового окружения Docker
  • 34. Практики и инструменты DevOps для построения тестового окружения Пример DockerFile
  • 35. Практики и инструменты DevOps для построения тестового окружения Continuous Integration and Delivery
  • 36. Практики и инструменты DevOps для построения тестового окружения Использование практик CI и CD • Каждое изменение -> новые билд • Новый билд -> новая версия • Новая версия билда -> загружаем в хранилище • Любой билд «потенциально» готов к установке • Установка автоматически после создания билда, по расписанию или по требованию
  • 37. Практики и инструменты DevOps для построения тестового окружения Последовательность
  • 38. Практики и инструменты DevOps для построения тестового окружения Сбор и анализ логов
  • 39. Практики и инструменты DevOps для построения тестового окружения ELK Stack Агрегация логов с разных окружений
  • 41. Практики и инструменты DevOps для построения тестового окружения ELK Stack • Удобный доступ к логам • Средства поиска • Манипуляции логами
  • 42. Практики и инструменты DevOps для построения тестового окружения Мониторинг окружений
  • 43. Практики и инструменты DevOps для построения тестового окружения Graphite + Grafana http://sqadays.com/ru/talk/34444
  • 44. Практики и инструменты DevOps для построения тестового окружения Graphite + Grafana
  • 45. Практики и инструменты DevOps для построения тестового окружения Какие проблемы решаются? • Время поставки новой версии значительно уменьшается • Конфигурации всех окружений под контролем • Все окружения настроены идентично • Вносить изменения в конфигурацию значительно проще • Заранее видно проблемные окружения
  • 46. Практики и инструменты DevOps для построения тестового окружения Вопросы