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

25
Robot Framework универсальный инструмент автоматизатора

Upload: sqalab

Post on 29-Nov-2014

999 views

Category:

Education


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Robot Framework: универсальный инструмент автоматизатора

Robot Frameworkуниверсальный инструмент автоматизатора

Page 2: Robot Framework: универсальный инструмент автоматизатора

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

Junior QA Engineer at Mirantis Inc

Проекты, которыми сейчас занимаюсь:● Vyatta OS: DMVPN

● Vyatta OS: Multicast

● Vyatta OS: STVPN

Page 3: Robot Framework: универсальный инструмент автоматизатора

О чем поговорим?

● Тестирование реализации сетевых протоколов

● BDD фреймворки

● Универсальность Robot Framework

● Тестирование виртуальной сетевой топологии

Page 4: Robot Framework: универсальный инструмент автоматизатора

О проекте. Что тестируем?● Программный маршрутизатор с консолью (Debian система с

собственной оболочкой)

● Функционал команд маршрутизатора

● Реализации multicast-протоколов (PIM, MSDP) в условиях различных сетевых топологий

Page 5: Robot Framework: универсальный инструмент автоматизатора

О проекте. Что тестируем

Page 6: Robot Framework: универсальный инструмент автоматизатора

Желания заказчика● Применять Behavior-Driven Development подход

● Полностью автоматические тесты

● Возможность запуска тестов заказчиком

● Автоматизация развертывания виртуальной сетевой

топологии в облаке

Page 7: Robot Framework: универсальный инструмент автоматизатора

BehaveНет библиотек

Требуется знание Python или Java (jBehave)

Нечитабельные отчеты

Поддержка BDD

DRY

Открытый код

Page 8: Robot Framework: универсальный инструмент автоматизатора

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()

Page 9: Robot Framework: универсальный инструмент автоматизатора

Robot Framework● Внутренние библиотеки

● Собственная среда разработки - RIDE

● Читабельные отчеты и подробные логи

● Плагины для Jenkins, Maven, Ant

● Нет параллельного запуска тестов

● BDD требует написания собственных библиотек

Page 10: Robot Framework: универсальный инструмент автоматизатора

Robot Framework. ВозможностиSQL / NoSQL базы данных

Web-интерфейсы

Java Swing GUI приложения

iOS приложения

Android приложения

Сетевые приложения

REST/SOAP интерфейсы

Page 11: Robot Framework: универсальный инструмент автоматизатора

Robot Framework. Библиотеки

Telnet

iOS library

MongoDB libraryDatabase Library

Android library

Rammbock

Selenium library

Swing Library

HTTPLibrarySudsLibrarySSH Library

OperatingSystem

Dialogs

Collections

Page 12: Robot Framework: универсальный инструмент автоматизатора

Robot Framework. Опыт применения● Встроенные библиотеки

○ меньше времени на поддержку

○ много функционала “из коробки”

● Keyword-driven подход

○ быстрое создание тестов

○ отсутствие дублированного кода

○ функционал без написания кода

Page 13: Robot Framework: универсальный инструмент автоматизатора

Robot Framework. Опыт применения● RIDE

○ авто-дополнение

○ выбор тестов для запуска

○ в сообществе быстро правят баги

○ удобный редактор

○ документация к тесту

Page 14: Robot Framework: универсальный инструмент автоматизатора

Robot Framework. Итоги● Ускорение автоматизации

● Тесты, понятные заказчику

● Сокращение времени на поддержку библиотек

● Стандартизация и ускорение обучения

● Довольные отчетами заказчики

Page 15: Robot Framework: универсальный инструмент автоматизатора

О проекте. Как это работает

Page 16: Robot Framework: универсальный инструмент автоматизатора

О проекте. Как это работает

*AS - Автономная система

Page 17: Robot Framework: универсальный инструмент автоматизатора

О проекте. Как это работает

Page 18: Robot Framework: универсальный инструмент автоматизатора

Проблемы интеграции

● Необходимо работать с конфигурационными

файлами внутри Robot Framework

● Тестирование CLI предполагает анализ вывода

консоли

● Использование сторонних утилит неудобно

стандартными средствами Robot Framework

Page 19: Robot Framework: универсальный инструмент автоматизатора

Пример. Своя библиотекаРеализация с помощью Python

Аналогичный функционал средствами RF...[ WARN ] 10.10.10.10[ WARN ] root[ WARN ] passwd

Page 20: Robot Framework: универсальный инструмент автоматизатора

Реализация 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

Page 21: Robot Framework: универсальный инструмент автоматизатора

Пример. Отчет

Page 22: Robot Framework: универсальный инструмент автоматизатора

Пример. Jenkins

Опции конфигурации job’ы

Page 23: Robot Framework: универсальный инструмент автоматизатора

Итоги

● Возможность передачи тестов заказчику

● Гибкость и расширяемость фреймворка

● Ускорение процесса автоматизации

● Перенос функционала старых библиотек

Page 24: Robot Framework: универсальный инструмент автоматизатора

Дополнительная информация● Официальный сайт 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

Page 25: Robot Framework: универсальный инструмент автоматизатора

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

E-mail: [email protected]

Skype: hozinov

Blog: rkhozinov.blogspot.ru