Upload
sqalab
View
989
Download
2
Embed Size (px)
DESCRIPTION
Доклад Руслана Хозинова на конференции SQADays-15, 19.04.2014, г.Москва
Citation preview
Robot Frameworkуниверсальный инструмент автоматизатора
Хозинов Руслан
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Нет библиотек
Требуется знание Python или Java (jBehave)
Нечитабельные отчеты
Поддержка BDD
DRY
Открытый код
BehaveScenario: 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. Библиотеки
Telnet
iOS library
MongoDB libraryDatabase Library
Android library
Rammbock
Selenium library
Swing Library
HTTPLibrarySudsLibrarySSH Library
OperatingSystem
Dialogs
Collections
Robot Framework. Опыт применения● Встроенные библиотеки
○ меньше времени на поддержку
○ много функционала “из коробки”
● Keyword-driven подход
○ быстрое создание тестов
○ отсутствие дублированного кода
○ функционал без написания кода
Robot Framework. Опыт применения● RIDE
○ авто-дополнение
○ выбор тестов для запуска
○ в сообществе быстро правят баги
○ удобный редактор
○ документация к тесту
Robot Framework. Итоги● Ускорение автоматизации
● Тесты, понятные заказчику
● Сокращение времени на поддержку библиотек
● Стандартизация и ускорение обучения
● Довольные отчетами заказчики
О проекте. Как это работает
О проекте. Как это работает
*AS - Автономная система
О проекте. Как это работает
Проблемы интеграции
● Необходимо работать с конфигурационными
файлами внутри Robot Framework
● Тестирование CLI предполагает анализ вывода
консоли
● Использование сторонних утилит неудобно
стандартными средствами Robot Framework
Пример. Своя библиотекаРеализация с помощью Python
Аналогичный функционал средствами RF...[ WARN ] 10.10.10.10[ WARN ] root[ WARN ] passwd
Реализация BDD в Robot FrameworkGiven 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
Пример. Отчет
Пример. Jenkins
Опции конфигурации job’ы
Итоги
● Возможность передачи тестов заказчику
● Гибкость и расширяемость фреймворка
● Ускорение процесса автоматизации
● Перенос функционала старых библиотек
Дополнительная информация● Официальный сайт 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