robot framework: универсальный инструмент автоматизатора

Post on 29-Nov-2014

999 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Доклад Руслана Хозинова на конференции SQADays-15, 19.04.2014, г.Москва

TRANSCRIPT

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

Хозинов Руслан

E-mail: rkhozinov@mirantis.com

Skype: hozinov

Blog: rkhozinov.blogspot.ru

top related