Хозинов Руслан
Junior QA Engineer at Mirantis Inc
Проекты, которыми сейчас занимаюсь:
● Vyatta OS: DMVPN
● Vyatta OS: Multicast
● Vyatta OS: STVPN
О чем поговорим?
● Тестирование реализации сетевых протоколов
● BDD фреймворки
● Универсальность Robot Framework
● Тестирование виртуальной сетевой топологии
О проекте. Что тестируем?
● Программный маршрутизатор с консолью (Debian система с
собственной оболочкой)
● Функционал команд маршрутизатора
● Реализации multicast-протоколов (PIM, MSDP) в условиях
различных сетевых топологий
Желания заказчика
● Применять Behavior-Driven Development подход
● Полностью автоматические тесты
● Возможность запуска тестов заказчиком
● Автоматизация развертывания виртуальной сетевой
топологии в облаке
Behave
Scenario: Search for an account
Given I search for a valid account
Then I will see the account details
@given('I search for a valid account')
def step_impl(context):
context.browser.get('http://localhost:8000/index')
form = get_element(context.browser, tag='form')
get_element(form, name="msisdn").send_keys('61415551234')
form.submit()
Robot Framework
● Внутренние библиотеки
● Собственная среда разработки - RIDE
● Читабельные отчеты и подробные логи
● Плагины для Jenkins, Maven, Ant
● Нет параллельного запуска тестов
● BDD требует написания собственных библиотек
Robot Framework. Возможности
SQL / NoSQL
базы данных
Web-интерфейсы
Java Swing GUI
приложения
iOS
приложения
Android
приложения
Сетевые
приложения
REST/SOAP
интерфейсы
Robot Framework. Опыт применения
● Встроенные библиотеки
○ меньше времени на поддержку
○ много функционала “из коробки”
● Keyword-driven подход
○ быстрое создание тестов
○ отсутствие дублированного кода
○ функционал без написания кода
Robot Framework. Опыт применения
● RIDE
○ авто-дополнение
○ выбор тестов для запуска
○ в сообществе быстро правят баги
○ удобный редактор
○ документация к тесту
Robot Framework. Итоги
● Ускорение автоматизации
● Тесты, понятные заказчику
● Сокращение времени на поддержку библиотек
● Стандартизация и ускорение обучения
● Довольные отчетами заказчики
Проблемы интеграции
● Необходимо работать с конфигурационными
файлами внутри Robot Framework
● Тестирование CLI предполагает анализ вывода
консоли
● Использование сторонних утилит неудобно
стандартными средствами Robot Framework
Пример. Своя библиотека
Реализация с помощью Python
Аналогичный функционал средствами RF
...
[ WARN ] 10.10.10.10
[ WARN ] root
[ WARN ] passwd
Реализация BDD в Robot Framework
Given open telnet connection ${router}
And telnet.set timeout 30 sec
And telnet.set prompt (.*$ | .*]:|.*):|.*/n]|)
When input command generate openvpn config vtun0
Then output should contain List of possible server addresses
And output should contain ${router.ifaces[1].ipv4}
And output should contain Choose OpenVPN server address
Итоги
● Возможность передачи тестов заказчику
● Гибкость и расширяемость фреймворка
● Ускорение процесса автоматизации
● Перенос функционала старых библиотек
Дополнительная информация
● Официальный сайт Robot Framework
robotframework.org
● Robot Framework: Библиотеки
code.google.com/p/robotframework/wiki/TestLibraries
● Robot Framework: Best Practices
code.google.com/p/robotframework/wiki/HowToWriteGoodTestCases
● Robot Framework: Jenkins plugin
wiki.jenkins-ci.org/display/JENKINS/Robot+Framework+Plugin