Использование Robot Framework для ATDD - PullRequest
17 голосов
/ 18 мая 2010

Мне бы хотелось услышать, как другие люди используют Robot Framework для автоматического приемочного тестирования.

Каковы его основные сильные и слабые стороны, а также какое-либо сравнение с другими структурами (в основном Fitnesse и Selenium)?

Код, который будет протестирован, является устаревшим кодом в реальном времени, в основном на C ++.

Ответы [ 3 ]

22 голосов
/ 13 апреля 2011

Я использовал Robot Framework в трех разных компаниях, охватывающих примерно шесть лет на момент написания этой статьи, и все они были так или иначе успешны.

Мой опыт

Компания 1

Первое место, где я использовал Robot, было веб-приложение на основе Java для ведущей интернет-туристической компании. Мы использовали Robot с Jython, который позволял нам создавать ключевые слова в Java и напрямую работать с тестируемой системой. Мы использовали Selenium для управления веб-браузером, большая часть нашего тестирования проводилась на Firefox. Хотя работа по тестированию была в основном успешной с организацией QA, организация разработчиков не смогла принять ее - они предпочли использовать JUnit, а не Robot.

Компания 2

Моя вторая компания, я чувствую, имела безоговорочный успех. Мы использовали робота множеством способов. Основным назначением было использование Internet Explorer для приемочного и регрессионного тестирования очень успешного коммерческого веб-приложения .NET.

Мы также использовали его для тестирования приложения для iPad, объединив Selenium с Appium . Мы использовали Robot для тестирования сервисов RESTful, которые предоставляли данные для приложения. Мы написали специализированные ключевые слова, которые позволяют нам проводить анализ изображений, и мы также использовали тесты роботов для быстрого анализа нашего учебного оборудования перед каждой тренировкой. У нас были ключевые слова, которые позволили нам сделать снимок базы данных перед тестом и восстановить базу данных после теста.

Мы также начали использовать Robot, чтобы помочь с ручным тестированием. Мы помещаем тестовые случаи в Robot вручную, что позволяет нам использовать возможности Robot для создания отчетов и тегов. Когда эти тесты запускались, они предлагали пользователю выполнить ручные шаги, которые оказались гораздо более эффективными, чем когда у нас были тестеры, читающие ручные шаги из инструмента управления тестовыми случаями или документа Word.

Компания 3

Третья компания была крупной (с доходом 1 млрд долларов) с довольно большим ИТ-персоналом. У них были тестеры с очень низкими техническими навыками (я помню одного, кто не знал, что такое командная строка). У нас была одна команда, посвятившая себя написанию основного набора ключевых слов, а также обучению и наставничеству для других команд. Я думаю, что использование Robot сыграло важную роль в получении некоторой пользы от наименее опытных тестировщиков, хотя даже с ключевыми словами высокого уровня это была борьба с ними.

Компания 4

Совсем недавно я перешел в очень маленькую компанию с небольшой группой разработчиков и без специальных тестировщиков. Мы охватили использование объектов страницы с Robot Framework, и теперь у нас есть исключительно стабильный набор легко читаемых высокоуровневых приемочных тестов. Использование робота в этой компании имело безоговорочный успех.

Сильные стороны

Самой сильной стороной робота является его гибкость. Мы использовали Robot для поддержки ручного тестирования, тестирования сервисов SOAP и REST, веб-тестирования пользовательского интерфейса, тестирования базы данных, тестирования изображений и тестирования мобильных приложений. Поскольку Robot так легко расширять с помощью дополнительных библиотек, практически нет ничего, что вы не можете проверить, если вы готовы засучить рукава и написать несколько ключевых слов. В зависимости от настроек вы можете писать ключевые слова на Python, Java, .NET или практически на любом языке с помощью удаленного API робота.

Поскольку тестовые наборы и ключевые слова робота написаны в виде простого текста, вы не привязаны к использованию проприетарного инструмента для создания или просмотра тестов. Пользователи могут выбрать инструмент по своему выбору - Visual Studio, Eclipse, Emacs, Notepad и т. Д. Существует также специальная среда для роботов (RIDE), хотя я не рекомендую ее. Кроме того, поскольку файлы представляют собой простой текст, они хорошо интегрируются с другими программными инструментами - их легко разбирать и объединять, выполнять поиск и т. Д.

Слабые стороны

Робот позволяет легко писать некачественные тесты. Хотя существуют средства для документирования ключевых слов и тестовых случаев, а также для использования удобочитаемых имен для ключевых слов, тестовых случаев и переменных, хорошего способа применения передового опыта нет. Написание большого количества тестов и ключевых слов требует дисциплины. Как говорится, робот дает вам много веревки, чтобы повеситься.

Еще одна слабость в том, что темпы прогресса на роботе довольно медленные. С другой стороны, Робот является надежным и относительно свободным от ошибок, поэтому нет необходимости в частых исправлениях. Тем не менее, есть запросы на функции, которые годами томятся в их системе отслеживания ошибок без движения, что может обескураживать.

Резюме

Во всех компаниях нам нравилось использовать гибкость, предоставляемую синтаксисом Robot, для создания управляемых данными тестов, тестов в стиле BDD, а также простых процедурных тестов. И во всех случаях, поскольку тесты представляют собой обычные текстовые файлы, с их инструментами SCM (Mercurial, Subversion и Git) было легко управлять ресурсами теста

Для меня Robot доказал, что он прост в использовании, чрезвычайно прост в расширении и полезен для широкого спектра задач тестирования, от модульного тестирования функций Python до тестирования веб-сервисов, браузера и пользовательского интерфейса планшета. Тестирование, тестирование изображений, тестирование баз данных и даже повышение эффективности ручного тестирования.

15 голосов
/ 20 февраля 2012

Мы используем Robot Framework на моем рабочем месте уже несколько лет с умеренным успехом.Как и плакат, мы также работаем с C ++.Мы потратили некоторое время, чтобы оценить Robot против Fitnesse / Slim, и в то время оба решения были хорошими, но решающими факторами были (по состоянию на ~ 2009 г.):

  • Было яснее, как Robot и егоотчеты будут масштабироваться до крупных проектов
  • Не было очевидно, как контролировать версии артефактов Fitnesse

С технической точки зрения, мы использовали SWIG для мостамежду роботом и C ++.Мы упаковываем наши тестовые данные в SWIG и связываем его с тестируемым рабочим кодом, что дает нам модуль python, который может быть импортирован Robot.

Мы почти исключительно используем формат .txt для ввода робота - мы обнаружили, что эта версия лучше управляется, ее легче читать, и мы просто не использовали расширенные функции HTML (именно здесьначалось).Кроме того, мы также используем синтаксис робота "BDD Style" .Мы используем GoogleMock с некоторыми обертками, чтобы помочь нам установить ожидания, которые проверяются во время демонтажа каждого теста робота.

Что касается организации тестов, мы остановились на следующем подходе (по вдохновению Дейл)Подход Эмери, приведенный здесь ):

  • Основная функциональная иерархия представлена ​​структурой папок.
  • Элемент размером с функциональность описан в имени файла теста робота.
  • Описание каждой части этой функции используется в имени контрольного примера робота.
  • Пример приведен в качестве шагов в контрольном примере.
  • Текст примераразбито на шаги, используя «ключевые слова» робота.
  • Тестовое устройство управляет рабочим кодом.

Например, телефон может иметь что-то вроде этого:

//  PhoneProject/MakingCalls/DialAPhoneNumber.txt

*** Test Case ***
A user can dial a US number with an area code, up to 10 digits
   Given a phone without any numbers dialed
   Expect the attempted phone number to be 123-456-7890
   When a user enters the numbers 1234567890


// A separate MakingCallsKeywords.txt or something similar
*** Keyword ***
Given a phone without any numbers dialed                CreateNewDialer
Expect the attempted phone number to be ${phoneNumber}  ExpectDialedNumber  ${phoneNumber}
When a user enters the numbers ${numbersEntered}        DialNumbers ${numbersEntered}

// MakingCallsFixture.cpp  (which gets wrapped by SWIG)

std::wstring MakingCallsFixture::DialNumbers(const std::wstring& numbersEntered)
{
   ... Drive production code ...
}

// CreateNewDialer, ExpectDialedNumber also go here

Затем мы сопоставим это с юнит-тестами, которые охватывают угловые условия (например, убедитесь, что разрешено не более 10 цифр), или, возможно, это будет еще один приемочный тест (execв зависимости от того, кто читает тесты и их знакомство с доменом.

Мы создаем черновик этих спецификаций и проверяем их у экспертов домена и команды до начала работы.Это помогло устранить ряд недоразумений на раннем этапе.

1 голос
/ 05 апреля 2016

Я использовал Robot Framework для следующих сценариев.

Тестирование пользовательского интерфейса

  1. Фреймворк Robot действительно хорош для тестирования пользовательского интерфейса
  2. Фреймворк поставляется с редактором RIDE, который можно использовать для написания тестовых случаев.
  3. Вам не нужно быть экспертом по командам Selenium и Selenium. доступны для поиска в редакторе RIDE.
  4. Вы можете поделиться кодом, используя ключевые слова и общий доступ Ресурсы. Это позволяет просто повторно использовать тестовые случаи и тестировать код библиотеки.
  5. Вы можете легко вызвать функцию библиотеки Python для выполнения более утомительных задач.

Для сервисного тестирования я обнаружил, что инфраструктуру Robot немного сложно использовать для тех видов автоматизации тестирования, которые я выполнял.

Наш уровень обслуживания приложений полностью написан на C / C ++. Я лично работаю на ноутбуке с Windows, и наше приложение находится на сервере Linux.

Я обнаружил, что * инфраструктура Fitnesse ** гораздо полезнее и проще в автоматизации. Fitnesse обладает перечисленными ниже дополнительными функциями, которые позволяют легко писать контрольные примеры. Я не смог найти похожие функции в роботе.

Таблица решений - Вы можете написать контрольные примеры в формате Microsoft .xls. Каждая строка в сетке данных будет представлять собой контрольный пример. Каждый ряд будет иметь набор входов и выходов. Выводам будет предшествовать знак вопроса в заголовке.

Таблица запросов - Вывод теста будет список данных, которые вы хотели бы проверить.

Также Fitnesse позволяет легко интегрироваться с другими языками, такими как C (используя Slim Service). Это не требует какой-либо интеграции кода. Тестовые наборы Fitnesse напрямую выполняют тестовые приборы, геттеры и сеттеры.

Резюме моего опыта:

  • Я нашел простой в использовании инструмент для автоматизации пользовательского интерфейса.

  • Мне было немного сложно использовать его для автоматизации обслуживания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...