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

  • 370 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
370
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
2
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Платформа для автоматическоготестирования Erlang проектовна примере UserGate Web FilterБелавин Валерийvb@usergate.ruEntensys, Новосибирск
  • 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. Архитектура OpenStackOpenStack предоставляет набор 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…
  • 14. Robot Framework IDE
  • 15. Robot FrameworkRobot 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. Брокер RabbitMQErlang – реализация брокера сообщений для протокола AMQP(Advanced Message Queuing Protocol).Основные понятия AMQP:Сообщение (message) — единица передаваемых данных, егосодержание никак не интерпретируется сервером, к сообщению могутбыть прицеплены структурированные заголовки.Точка обмена (exchange) — в неё отправляются сообщения. Точкаобмена распределяет сообщения в одну или несколько очередей.Очередь (queue) — здесь хранятся сообщения до тех пор, пока не будетзабраны клиентом. Клиент всегда забирает сообщения из одной илинескольких очередей.
  • 19. Celery: Distributed Task QueuePython Framework для распределенного выполнения задач.Возможности:• Поддержка синхронного и асинхронного выполнения заданий• Выполнение заданий по расписанию (в том числе - периодических)• Распределенное выполнение (может быть запущен на несколькихсерверах)• Ограничение количества заданий в единицу времени (rate limit)• Маршрутизация заданий (кому - что)• Мониторинг выполнения заданий• Поддержка нескольких брокеров сообщений (RabbitMQ,…)
  • 20. Архитектура Celery
  • 21. Celery, пример использованияceleryconfig.pyagent.py
  • 22. Message Helper, работа задачами Message Helper – выполнение команд в виртуальных машинах, через Celery, с RabbitMQ в качестве брокера сообщений. Важно! Код агента Celery должен быть доступен и самим агентам и машине, с которой выполняются тесты.
  • 23. Тесты в работе
  • 24. Пример отчета
  • 25. Лог тестов
  • 26. Запуск из консоли
  • 27. Архитектура тестовой системы
  • 28. ВыводыЧто понравилось?• Легкость составления тестов (test suites)• Читабельность тестов• Запуск с командной строки• Поддержка тегов• Внутреннее API Robot Framework (scalars, lists, dictionaries, cycles,…), удобноЧто не понравилось?• Если прервать выполнение теста, лог посмотреть нельзя (RIDE?)• Внутреннее API достаточно специфично (нужна привычка)• При создании библиотек неизбежно тестирование классическими методами• После завершения работы агентов в виртуальных машинах в RabbitMQ остается«мусор» в виде не используемых очередей и точек обмена
  • 29. Продолжаем тестирование… Ну вот и у нас есть ICAP-сервер! 2 – REQMOD 5 – RESPMODНужно: веб-сервер с управляемым контентом, клиент, прокси (Squid)Срок выпуска версии: ВЧЕРА!
  • 30. Шаг1: переписываем либу XML-RPC
  • 31. Шаг2: выбираем легкий фреймворкPyTest питоновский фреймворк для модульного и функциональноготестированияДостоинства:• поддержка параметризации (фикстуры)• генераторы тестов• плагины пример теста
  • 32. Шаг3: запускаем тестыпример запуска тестов (длительность ~ 10 минут )
  • 33. Шаг N+1: если сломалосьЕсли тест провалился, это выглядит так:
  • 34. Вместо выводов:1. Создана работающая система автотестов2. Выпущена первая версия UserGate Web Filter3. Наработки переданы тестировщикамIMHO• Система Robot Framework интересна, перспективна, но не идеальна• Успешность применения RF зависит от постоянства использования• PyTest, теперь вместо unittest