SlideShare a Scribd company logo
1 of 34
Платформа для автоматического
тестирования 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

What's hot

Silverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеSilverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеAlex Tumanoff
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
 
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрийsolit
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.Igor Shkulipa
 
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей БуровСистема мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей БуровPositive Hack Days
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Ontico
 
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...Positive Hack Days
 
Проверка на прочность или нагрузочное тестирование с Jmeter
Проверка на прочность или нагрузочное тестирование с JmeterПроверка на прочность или нагрузочное тестирование с Jmeter
Проверка на прочность или нагрузочное тестирование с JmeterAleksey Derkach
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.Igor Shkulipa
 
Ivan Kotlyar. PostgreSQL in web applications
Ivan Kotlyar. PostgreSQL in web applicationsIvan Kotlyar. PostgreSQL in web applications
Ivan Kotlyar. PostgreSQL in web applicationsDrupalSib
 
Yandex test framework. Talk for Seleniumcamp
Yandex test framework. Talk for SeleniumcampYandex test framework. Talk for Seleniumcamp
Yandex test framework. Talk for SeleniumcampMikhail Levin
 
JUnit, дай пять!
JUnit, дай пять!JUnit, дай пять!
JUnit, дай пять!Dmitrii Tuchs
 
Нагрузочное тестирование JMeter Кожухов
Нагрузочное тестирование JMeter КожуховНагрузочное тестирование JMeter Кожухов
Нагрузочное тестирование JMeter КожуховИлья Кожухов
 
CodeFest 2011. Левин М. — Фреймворк для автоматизации тестирования и функцион...
CodeFest 2011. Левин М. — Фреймворк для автоматизации тестирования и функцион...CodeFest 2011. Левин М. — Фреймворк для автоматизации тестирования и функцион...
CodeFest 2011. Левин М. — Фреймворк для автоматизации тестирования и функцион...CodeFest
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven7bits
 
Использование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияИспользование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияSQALab
 
От простого к сложному: автоматизируем ручные тест-планы | Сергей Тимченко
От простого к сложному: автоматизируем ручные тест-планы | Сергей ТимченкоОт простого к сложному: автоматизируем ручные тест-планы | Сергей Тимченко
От простого к сложному: автоматизируем ручные тест-планы | Сергей ТимченкоPositive Hack Days
 
Excelsior JET в действии
Excelsior JET в действииExcelsior JET в действии
Excelsior JET в действииNikita Lipsky
 

What's hot (20)

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

Viewers also liked

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

Viewers also liked (6)

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

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

ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)Pavel Tsukanov
 
Meeting #4. Frameworks.
Meeting #4. Frameworks.Meeting #4. Frameworks.
Meeting #4. Frameworks.Igor Khrol
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел КрынецкийJSC “Arcadia Inc”
 
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Seleniumjazzteam
 
ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS Pavel Tsukanov
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)Sergey Skvortsov
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, SkypeOntico
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
 
Caché github continuous intergration
Caché github continuous intergrationCaché github continuous intergration
Caché github continuous intergrationInterSystems
 
Приемы Сontinuous Integration при разработке приложений на Caché
Приемы Сontinuous Integration при разработке приложений на CachéПриемы Сontinuous Integration при разработке приложений на Caché
Приемы Сontinuous Integration при разработке приложений на CachéInterSystems CEE
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-AccessSerghei Urban
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Как превратить приложение в платформу
Как превратить приложение в платформуКак превратить приложение в платформу
Как превратить приложение в платформуVadim Kruchkov
 
Big switch: жизнь после Microsoft
Big switch: жизнь после MicrosoftBig switch: жизнь после Microsoft
Big switch: жизнь после MicrosoftAlexander Byndyu
 

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

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

More from DevDay

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

More from DevDay (20)

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