SlideShare a Scribd company logo
Платформа для автоматического
тестирования Erlang проектов
на примере UserGate Web Filter
Белавин Валерий
vb@usergate.ru
Entensys, Новосибирск
Введение
UserGate Web Filter – управление доступом в сеть Интернет, через
фильтрацию DNS и HTTP трафика. Функции: DNS forwarder, ICAP-
server.
Введение
UserGate Web Filter – работа в Erlang кластере.
Введение
UserGate Web Filter, интерфейс администратора.
Введение
Задача или Что хотелось получить?
1.Автоматическая установка новой сборки (в том числе и для кластера)
2.Регистрация (ввод лицензии)
3.Проверка базового функционала
4.Максимальная автоматизация
5.Лог, отчеты


Что уже есть?
1.что-то собралось
2.“что-то” снабжено XML-RPC интерфейсом (wiki)
3.brand new style server (16 cores, 24 GB, 5Tb)

Идея: new server + private cloud + … (we’ll see…)
OpenStack Cloud
Поддержка гипервизоров: KVM, Qemu, Xen, LXC, VMWare, Hyper-V


Компоненты:                     Сервисы:
• Keystone (Identity Service)   • nova-compute (libvirt, xenapi,..)
• Glance (Image Service)        • nova-scheduler
• Nova (Core)                   • nova-api
• Horizon (Dashboard)           • nova-network (Quantum)
• Swift (Storage Service)       • nova-volume (Cinder)


Брокер сообщений: RabbitMQ, Qpid
Архитектура
 OpenStack
OpenStack предоставляет набор API для работы с сервисами. Для работы с
nova-compute предназначены Nova API и EC2 API.
Horizon (OpenStack Dashboard)
Уже полноценный доступ!
OpenStack, сервис метаданных


Помимо основной задачи, nova-
network предоставляет доступ к
сервису метаданных!




                                 Соответствующий сервис внутри
                                 виртуальной машины
                                 запускается автоматически!
OpenStack, сервис метаданных


 Примеры запуска
 виртуальной
 машины с
 использованием
 сценария
Требования к системе АВТОТЕСТОВ:
   работа с OpenStack (запуск/остановка инстанций, сценарий, …)
   поддержка локальной и удаленной работы с OpenStack
   работа с инстанциями (Linux/Windows)
   формализация тестов (единый формат)
   возможность продолжения тестов с произвольного места
   читабельные логи
Robot Framework
                                                http://code.google.com/p/robotframework/


                            Первая версия разработана в Nokia Siemens Networks
                            в 2005, первый open-source релиз появился в 2008.



Ключевые особенности:
• keyword-based подход
• простой синтаксис тестов (TXT, TSV, HTML)
• поддержка тегов
• встроенные отчеты
• встроенные библиотеки (List, Dictionary, …)
• пользовательские библиотеки (Python/Java)
• поддержка плагинов (Selenium, SSH,…)
Robot Framework

Доступные библиотеки:   Примеры тест-кейсов

• String
• Collections
• Telnet
• SSH
• HTTP
• Selenium
• Selenium2
• AutoIt
• Screenshots
• Operating System
…
Robot Framework IDE
Robot Framework

Robot Framework поддерживает пользовательские библиотеки
Python/Java. Python библиотеку можно оформит как простой
модуль или в виде класса.


Публичные методы класса становятся доступны через “ключевые
слова”, а экземпляр класса создается автоматически.


Значит нужно писать:
• библиотеку для работы с OpenStack
• библиотеку для работы с самим продуктом (XML-RPC)
• может еще что-нибудь
Cloud Helper, работа с OpenStack
                                        сommands.ini
«Обертка» над EC2 API для работы с
OpenStack . Шаблоны команд задаются в
INI файле. Поддерживает локальную и
удаленную работу с OpenStack (SSH),
работу со сценариями user-data.

Обходит «проблемы» OpenStack.
Работа с инстанциями

Требования:

 • работа в асинхронном режиме (пакетное выполнения задач)
 • корректная обработка потери связи с виртуальной машиной
 • корректная обработка таймаутов



Варианты решений:

 Socket server/client (собственный велосипед…)
 XML RPC (стандартный протокол)

                                                 AMQP?
 И есть либы для
 Python!
Брокер RabbitMQ

Erlang – реализация брокера сообщений для протокола AMQP
(Advanced Message Queuing Protocol).

Основные понятия AMQP:

Сообщение (message) — единица передаваемых данных, его
содержание никак не интерпретируется сервером, к сообщению могут
быть прицеплены структурированные заголовки.

Точка обмена (exchange) — в неё отправляются сообщения. Точка
обмена распределяет сообщения в одну или несколько очередей.

Очередь (queue) — здесь хранятся сообщения до тех пор, пока не будет
забраны клиентом. Клиент всегда забирает сообщения из одной или
нескольких очередей.
Celery: Distributed Task Queue

Python Framework для распределенного выполнения задач.

Возможности:


• Поддержка синхронного и асинхронного выполнения заданий
• Выполнение заданий по расписанию (в том числе - периодических)
• Распределенное выполнение (может быть запущен на нескольких
серверах)
• Ограничение количества заданий в единицу времени (rate limit)
• Маршрутизация заданий (кому - что)
• Мониторинг выполнения заданий
• Поддержка нескольких брокеров сообщений (RabbitMQ,…)
Архитектура Celery
Celery, пример использования

celeryconfig.py




agent.py
Message Helper, работа задачами


                 Message Helper – выполнение команд в
                 виртуальных машинах, через Celery, с
                 RabbitMQ в качестве брокера
                 сообщений.




                  Важно! Код агента Celery должен
                  быть доступен и самим агентам и
                  машине, с которой выполняются
                  тесты.
Тесты в работе
Пример отчета
Лог тестов
Запуск из консоли
Архитектура тестовой системы
Выводы
Что понравилось?
• Легкость составления тестов (test suites)
• Читабельность тестов
• Запуск с командной строки
• Поддержка тегов
• Внутреннее API Robot Framework (scalars, lists, dictionaries, cycles,…), удобно

Что не понравилось?
• Если прервать выполнение теста, лог посмотреть нельзя (RIDE?)
• Внутреннее API достаточно специфично (нужна привычка)
• При создании библиотек неизбежно тестирование классическими методами
• После завершения работы агентов в виртуальных машинах в RabbitMQ остается
«мусор» в виде не используемых очередей и точек обмена
Продолжаем тестирование…
 Ну вот и у нас есть ICAP-сервер!




 2 – REQMOD
 5 – RESPMOD



Нужно: веб-сервер с управляемым контентом, клиент, прокси (Squid)

Срок выпуска версии: ВЧЕРА!
Шаг1: переписываем либу XML-RPC
Шаг2: выбираем легкий фреймворк
PyTest питоновский фреймворк для модульного и функционального
тестирования
Достоинства:
• поддержка параметризации (фикстуры)
• генераторы тестов
• плагины
                                               пример теста
Шаг3: запускаем тесты
пример запуска тестов (длительность ~ 10 минут )
Шаг N+1: если сломалось
Если тест провалился, это выглядит так:
Вместо выводов:
1. Создана работающая система автотестов
2. Выпущена первая версия UserGate Web Filter
3. Наработки переданы тестировщикам




IMHO

• Система Robot Framework интересна, перспективна, но не идеальна
• Успешность применения RF зависит от постоянства использования
• PyTest, теперь вместо unittest

More Related Content

PPTX
Основы и нюансы параллельного тестрования
PPTX
Автоматизация тестирования многопоточности
PPTX
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
PPTX
Meet up windows-workflow_foundation
PPTX
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур Гильмуллин
PPT
Сервлеты
PPTX
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
PPTX
2014.12.23 Александр Андреев, Parallels
Основы и нюансы параллельного тестрования
Автоматизация тестирования многопоточности
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр Ковалев
Meet up windows-workflow_foundation
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур Гильмуллин
Сервлеты
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
2014.12.23 Александр Андреев, Parallels

What's hot (20)

PPTX
Silverlight 4, есть ли жизнь на десктопе
PPTX
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
PPT
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
PDF
C++ STL & Qt. Занятие 11.
PPTX
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
PDF
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
PPTX
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
PPTX
Deep storm presentation
PDF
Проверка на прочность или нагрузочное тестирование с Jmeter
ODP
Java 9 - Back to the Future
PDF
C++ STL & Qt. Занятие 05.
PDF
Ivan Kotlyar. PostgreSQL in web applications
PPTX
Yandex test framework. Talk for Seleniumcamp
PDF
JUnit, дай пять!
PPTX
Нагрузочное тестирование JMeter Кожухов
PPTX
CodeFest 2011. Левин М. — Фреймворк для автоматизации тестирования и функцион...
PPTX
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
PPTX
Использование Open Source инструментов для автоматизации тестирования
PPTX
От простого к сложному: автоматизируем ручные тест-планы | Сергей Тимченко
PDF
Excelsior JET в действии
Silverlight 4, есть ли жизнь на десктопе
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
C++ STL & Qt. Занятие 11.
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
Deep storm presentation
Проверка на прочность или нагрузочное тестирование с Jmeter
Java 9 - Back to the Future
C++ STL & Qt. Занятие 05.
Ivan Kotlyar. PostgreSQL in web applications
Yandex test framework. Talk for Seleniumcamp
JUnit, дай пять!
Нагрузочное тестирование JMeter Кожухов
CodeFest 2011. Левин М. — Фреймворк для автоматизации тестирования и функцион...
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Использование Open Source инструментов для автоматизации тестирования
От простого к сложному: автоматизируем ручные тест-планы | Сергей Тимченко
Excelsior JET в действии
Ad

Viewers also liked (6)

PDF
«Лайфхаки ручного тестирования на мобилках» — Юлия Горлова, 2ГИС
PPTX
Шаблонизация sql, или история еще одного велосипеда, в трех частях, Алексей Р...
ODP
Quantum + Open vSwitch
PDF
Роль аналитика в гибких методологиях разработки
PDF
Анатомия ошибки
PDF
Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»
«Лайфхаки ручного тестирования на мобилках» — Юлия Горлова, 2ГИС
Шаблонизация sql, или история еще одного велосипеда, в трех частях, Алексей Р...
Quantum + Open vSwitch
Роль аналитика в гибких методологиях разработки
Анатомия ошибки
Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»
Ad

Similar to Платформа для автоматического тестирования Erlang проектов на примере UserGate Web Filter (20)

PPT
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
PDF
PPTX
Meeting #4. Frameworks.
PPTX
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
PPT
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
PPT
ВВЕДЕНИЕ В NODE.JS
PPT
Open Source Testing Framework: real project example and best practices
PPT
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
PPTX
Управление облачной инфраструктурой
PDF
DevOps guide for awesome quality assurance
PPT
Catalyst – MVC framework на Perl (RIT 2008)
PDF
Павел Брылов, Skype
PDF
Continuous integration
PPTX
What's new in Visual Studio 2012
PDF
Приемы Сontinuous Integration при разработке приложений на Caché
PDF
Caché github continuous intergration
PPT
Embarcadero All-Access
PDF
IT-инфраструктура. FAQ для разработчика
PDF
Как превратить приложение в платформу
PPTX
Big switch: жизнь после Microsoft
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
Meeting #4. Frameworks.
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
ВВЕДЕНИЕ В NODE.JS
Open Source Testing Framework: real project example and best practices
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Управление облачной инфраструктурой
DevOps guide for awesome quality assurance
Catalyst – MVC framework на Perl (RIT 2008)
Павел Брылов, Skype
Continuous integration
What's new in Visual Studio 2012
Приемы Сontinuous Integration при разработке приложений на Caché
Caché github continuous intergration
Embarcadero All-Access
IT-инфраструктура. FAQ для разработчика
Как превратить приложение в платформу
Big switch: жизнь после Microsoft

More from DevDay (20)

PDF
«Bdd и реактивщина в 2ГИС», Евгений Тютюев
PDF
«Интеграция push-уведомлений в Яндекс.Браузер под iOS», Юрий Музюкин
PDF
«Я спросил у сервера...», Илья Пастушков
PDF
Фреймворк Slot, Good Parts, Александр Бирюков
PDF
Рендеринг может больше: vue.js vs React, Андрей Солодовников
PDF
Devops-практики в разработке решений для бизнеса, Максим Пашук
PDF
Inversion of Control в деталях, Дмитрий Кожевников
PDF
«Используем неизменяемые данные и создаем качественный код», Игорь Кудрин
PDF
«Велогосипед», Данил Ильиных
PDF
«Процесс создания продукта», Максим Берёзкин
PDF
«Вывод продукта на новых территориях», Елизавета Алексеенко
PDF
Манипулятор на Ti Stellaris Launchpad, Лёша Романенко
PDF
Лабиринт на Arduino, Вадим Ипполитов
PDF
«Хоба-хоба и в продакшн», Женя Пономарёв
PDF
«Бегущий по лезвию. Продуктовые сценарии в дизайне», Макс Карпылев
PDF
«Роль исследований в формировании продуктового видения компании», Лиза Алексе...
PDF
«Тестируем веб приложения», Павел Сташевский
PDF
«Открытая веб картография», Илья Таратухин
PDF
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
PDF
Матвей Мальков «Ещё один поиск контактов на Android»
«Bdd и реактивщина в 2ГИС», Евгений Тютюев
«Интеграция push-уведомлений в Яндекс.Браузер под iOS», Юрий Музюкин
«Я спросил у сервера...», Илья Пастушков
Фреймворк Slot, Good Parts, Александр Бирюков
Рендеринг может больше: vue.js vs React, Андрей Солодовников
Devops-практики в разработке решений для бизнеса, Максим Пашук
Inversion of Control в деталях, Дмитрий Кожевников
«Используем неизменяемые данные и создаем качественный код», Игорь Кудрин
«Велогосипед», Данил Ильиных
«Процесс создания продукта», Максим Берёзкин
«Вывод продукта на новых территориях», Елизавета Алексеенко
Манипулятор на Ti Stellaris Launchpad, Лёша Романенко
Лабиринт на Arduino, Вадим Ипполитов
«Хоба-хоба и в продакшн», Женя Пономарёв
«Бегущий по лезвию. Продуктовые сценарии в дизайне», Макс Карпылев
«Роль исследований в формировании продуктового видения компании», Лиза Алексе...
«Тестируем веб приложения», Павел Сташевский
«Открытая веб картография», Илья Таратухин
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
Матвей Мальков «Ещё один поиск контактов на Android»

Платформа для автоматического тестирования Erlang проектов на примере UserGate Web Filter

  • 1. Платформа для автоматического тестирования Erlang проектов на примере UserGate Web Filter Белавин Валерий vb@usergate.ru Entensys, Новосибирск
  • 2. Введение UserGate Web Filter – управление доступом в сеть Интернет, через фильтрацию DNS и HTTP трафика. Функции: DNS forwarder, ICAP- server.
  • 3. Введение UserGate Web Filter – работа в Erlang кластере.
  • 4. Введение UserGate Web Filter, интерфейс администратора.
  • 5. Введение Задача или Что хотелось получить? 1.Автоматическая установка новой сборки (в том числе и для кластера) 2.Регистрация (ввод лицензии) 3.Проверка базового функционала 4.Максимальная автоматизация 5.Лог, отчеты Что уже есть? 1.что-то собралось 2.“что-то” снабжено XML-RPC интерфейсом (wiki) 3.brand new style server (16 cores, 24 GB, 5Tb) Идея: new server + private cloud + … (we’ll see…)
  • 6. OpenStack Cloud Поддержка гипервизоров: KVM, Qemu, Xen, LXC, VMWare, Hyper-V Компоненты: Сервисы: • Keystone (Identity Service) • nova-compute (libvirt, xenapi,..) • Glance (Image Service) • nova-scheduler • Nova (Core) • nova-api • Horizon (Dashboard) • nova-network (Quantum) • Swift (Storage Service) • nova-volume (Cinder) Брокер сообщений: RabbitMQ, Qpid
  • 7. Архитектура OpenStack OpenStack предоставляет набор API для работы с сервисами. Для работы с nova-compute предназначены Nova API и EC2 API.
  • 8. Horizon (OpenStack Dashboard) Уже полноценный доступ!
  • 9. OpenStack, сервис метаданных Помимо основной задачи, nova- network предоставляет доступ к сервису метаданных! Соответствующий сервис внутри виртуальной машины запускается автоматически!
  • 10. OpenStack, сервис метаданных Примеры запуска виртуальной машины с использованием сценария
  • 11. Требования к системе АВТОТЕСТОВ:  работа с OpenStack (запуск/остановка инстанций, сценарий, …)  поддержка локальной и удаленной работы с OpenStack  работа с инстанциями (Linux/Windows)  формализация тестов (единый формат)  возможность продолжения тестов с произвольного места  читабельные логи
  • 12. Robot Framework http://code.google.com/p/robotframework/ Первая версия разработана в Nokia Siemens Networks в 2005, первый open-source релиз появился в 2008. Ключевые особенности: • keyword-based подход • простой синтаксис тестов (TXT, TSV, HTML) • поддержка тегов • встроенные отчеты • встроенные библиотеки (List, Dictionary, …) • пользовательские библиотеки (Python/Java) • поддержка плагинов (Selenium, SSH,…)
  • 13. Robot Framework Доступные библиотеки: Примеры тест-кейсов • String • Collections • Telnet • SSH • HTTP • Selenium • Selenium2 • AutoIt • Screenshots • Operating System …
  • 15. Robot Framework Robot Framework поддерживает пользовательские библиотеки Python/Java. Python библиотеку можно оформит как простой модуль или в виде класса. Публичные методы класса становятся доступны через “ключевые слова”, а экземпляр класса создается автоматически. Значит нужно писать: • библиотеку для работы с OpenStack • библиотеку для работы с самим продуктом (XML-RPC) • может еще что-нибудь
  • 16. Cloud Helper, работа с OpenStack сommands.ini «Обертка» над EC2 API для работы с OpenStack . Шаблоны команд задаются в INI файле. Поддерживает локальную и удаленную работу с OpenStack (SSH), работу со сценариями user-data. Обходит «проблемы» OpenStack.
  • 17. Работа с инстанциями Требования: • работа в асинхронном режиме (пакетное выполнения задач) • корректная обработка потери связи с виртуальной машиной • корректная обработка таймаутов Варианты решений: Socket server/client (собственный велосипед…) XML RPC (стандартный протокол) AMQP? И есть либы для Python!
  • 18. Брокер RabbitMQ Erlang – реализация брокера сообщений для протокола AMQP (Advanced Message Queuing Protocol). Основные понятия AMQP: Сообщение (message) — единица передаваемых данных, его содержание никак не интерпретируется сервером, к сообщению могут быть прицеплены структурированные заголовки. Точка обмена (exchange) — в неё отправляются сообщения. Точка обмена распределяет сообщения в одну или несколько очередей. Очередь (queue) — здесь хранятся сообщения до тех пор, пока не будет забраны клиентом. Клиент всегда забирает сообщения из одной или нескольких очередей.
  • 19. Celery: Distributed Task Queue Python Framework для распределенного выполнения задач. Возможности: • Поддержка синхронного и асинхронного выполнения заданий • Выполнение заданий по расписанию (в том числе - периодических) • Распределенное выполнение (может быть запущен на нескольких серверах) • Ограничение количества заданий в единицу времени (rate limit) • Маршрутизация заданий (кому - что) • Мониторинг выполнения заданий • Поддержка нескольких брокеров сообщений (RabbitMQ,…)
  • 22. Message Helper, работа задачами Message Helper – выполнение команд в виртуальных машинах, через Celery, с RabbitMQ в качестве брокера сообщений. Важно! Код агента Celery должен быть доступен и самим агентам и машине, с которой выполняются тесты.
  • 28. Выводы Что понравилось? • Легкость составления тестов (test suites) • Читабельность тестов • Запуск с командной строки • Поддержка тегов • Внутреннее API Robot Framework (scalars, lists, dictionaries, cycles,…), удобно Что не понравилось? • Если прервать выполнение теста, лог посмотреть нельзя (RIDE?) • Внутреннее API достаточно специфично (нужна привычка) • При создании библиотек неизбежно тестирование классическими методами • После завершения работы агентов в виртуальных машинах в RabbitMQ остается «мусор» в виде не используемых очередей и точек обмена
  • 29. Продолжаем тестирование… Ну вот и у нас есть ICAP-сервер! 2 – REQMOD 5 – RESPMOD Нужно: веб-сервер с управляемым контентом, клиент, прокси (Squid) Срок выпуска версии: ВЧЕРА!
  • 31. Шаг2: выбираем легкий фреймворк PyTest питоновский фреймворк для модульного и функционального тестирования Достоинства: • поддержка параметризации (фикстуры) • генераторы тестов • плагины пример теста
  • 32. Шаг3: запускаем тесты пример запуска тестов (длительность ~ 10 минут )
  • 33. Шаг N+1: если сломалось Если тест провалился, это выглядит так:
  • 34. Вместо выводов: 1. Создана работающая система автотестов 2. Выпущена первая версия UserGate Web Filter 3. Наработки переданы тестировщикам IMHO • Система Robot Framework интересна, перспективна, но не идеальна • Успешность применения RF зависит от постоянства использования • PyTest, теперь вместо unittest