Я занимаюсь автоматизацией тестирования более 11 лет. Скажу сразу, я фанат старомодного тестирования на Java и очень настороженно отношусь к различным готовым фреймворкам.
Если вы придерживаетесь такого же мнения или только задумываетесь об использовании Robot Framework, в этой статье я постараюсь рассказать вам о его ограничениях и, конечно же, описать все его преимущества.
Я столкнулся с Robot Framework около года назад. Перед нами стояла задача автоматизировать достаточно большой объём тестов за короткое время с помощью двух инженеров, потому что… ручная регрессия уже не укладывается в разумные рамки.
Сам проект связан с пожарной безопасностью.
Веб-часть нужно было протестировать в трех браузерах, а мобильную часть — на различных телефонах и планшетах iOS и Android. Кроме того, были тесты, которые взаимодействовали как с Интернетом, так и с мобильными устройствами.
Это, конечно, не то, что построить ракету, но и не совсем тривиально.
Честно говоря, я сопротивлялся, мы долго думали и в итоге, исходя из совокупности внутренних и внешних факторов, выбрали Robot Framework.
Несколько слов и картинок для знакомства с Robot Framework
Прежде чем мы рассмотрим плюсы и минусы, давайте очень кратко поговорим о том, что такое Robot Framework. Возможно, это имя кто-то видит впервые.Robot Framework — это платформа, управляемая ключевыми словами, разработанная специально для автоматизации тестирования.
Он написан на Python, но для написания тестов обычно достаточно использовать готовые ключевые слова (ключевые слова), заложенные в этот фреймворк, не прибегая к программированию на Python. Вам просто нужно скачать необходимые библиотеки, например, SeleniumLibrary , и вы можете написать тест. В этой статье я дам общее представление о Robot Framework, но если после прочтения вы захотите углубиться в тему, советую обратиться к официальная документация .
В конце статьи также есть ссылки на популярные библиотеки.
Что ж, перейдем к «картинкам».
Вот как может выглядеть простой проект в IDE (на примере всеми любимой Википедии):
- Синий и зеленый — папки с файлами описания страниц и тестов соответственно.
Вот как вы можете реализовать шаблон объекта страницы.
- Коричневый — драйвера для различных браузеров.
- Красный цвет — тело теста.
- Желтый — консоль, с которой можно запускать тесты и видеть консольные сообщения (полных логов здесь нет, но об этом позже).
Реализация находится в объектах страницы, например:
В стандартном разделе «Настройки» мы видим загрузку библиотеки для работы с Selenium, а в другом стандартном разделе «Ключевые слова» — реализации наших самописных ключевых слов.
Думаю, этого достаточно, чтобы составить общее представление.
Подробное описание работы с Robot Framework выходит за рамки моего поста.
Преимущества и недостатки
В этой части я расскажу о плюсах и минусах Robot Framework, с которыми столкнулась наша команда.Учитывая специфику задач на проекте, наверняка у вас возникнут свои подводные камни.
Перечислю их, двигаясь, на мой взгляд, от более существенных преимуществ/недостатков к менее существенным.
Булочки
Низкий порог входа
Как я писал выше, Robot Framework — это фреймворк, управляемый ключевыми словами, а не язык программирования.Хоть синтаксис и похож на Python, но знаний программирования требуется чуть меньше или, скажем так, их использование не обязательно там, где это позволяет сложность самой задачи.
Однако при необходимости вы можете использовать переменные, циклы, функции, возвращающие значения и т. д. Pytest и Selenide могут показаться ближайшими альтернативами, но они требуют большей подготовки пользователя, чем Robot Framework. Например, одна из встроенных стандартных библиотек — Встроенный .
Там вы можете найти такие ключевые слова, как «Сон», «Журнал», «Выполнить ключевое слово, если», «Должно быть равно строкам» и т. д., и написать что-то вроде: Run Keyword If '${status}' == 'PASS' SomeAction
Веб- и мобильная поддержка
Robot Framework хорошо работает в сочетании с Mobile+Web (как сквозные, так и атомарные тесты).Наши веб-тесты работают с Chrome, FF и IE. Мобильная часть работает как с локальными реальными устройствами на Android и iOS, так и с устройствами фермы SauceLabs. Ограничение: настоящее локальное устройство iOS можно протестировать только с Mac. Да и вообще iOS требует гораздо большего внимания, потому что тот же веб-драйвер для нее нужно пересобирать самостоятельно.
(тестирование iOS — это отдельная большая тема, и если вам интересно, дайте знать в комментариях, мне есть о чем поговорить)
Теги
Тестам можно присваивать теги.Тегами может быть любая информация, полезная нам для идентификации теста: идентификатор теста, список компонентов, которым принадлежит тест и т. д. Таким образом мы обеспечиваем связь тестов с тестами или требованиями (отслеживаемость) и устанавливаем необходимую информацию для настроить запуск тестов.
Указав в лаунчере один тег, мы можем запускать все тесты, которые относятся к конкретному компоненту, либо можем явно перечислить тест-кейсы, которые необходимо запускать при запуске (удобно для регрессионного тестирования).
Подробнее о тегах связь .
Хорошие отчеты из коробки
Для предоставления стандартной отчетности не нужно ничего изобретать.Отчеты создаются автоматически без единой дополнительной команды.
Возможно объединение результатов разных тестовых прогонов.
При запуске по умолчанию создаются три файла:
- Output.xml – результаты теста в формате XML. Полезно для объединения результатов с командой перезагрузки.
Пример:
- Log.html – подробные результаты в формате HTML. Более полезно для разработчиков тестов.
Пример:
- Report.html — результаты высокого уровня без подробного анализа.
Полезно для демонстрации посторонним лицам и руководству.
Пример:
БДД из коробки
Синтаксис языка Gherkin с нотациями «Дано», «Когда», «Тогда» и «И» включен по умолчанию, и любой шаг можно записать с этими обозначениями или без них.
Вы можете использовать нотации или нет — тесты их просто игнорируют. Например, эти два ключевых слова идентичны с точки зрения платформы: Welcome page should be open
And welcome page should be open
Подробнее связь .
Шаблон объекта страницы
Robot Framework позволяет реализовать шаблон Page Object не с использованием ООП, а с использованием синтаксиса ключевых слов.Смысл в том, чтобы последовательно указать в ключевом слове, с какой страницей мы работаем -> с какой областью внутри нее мы работаем -> с каким элементом управления мы работаем и что мы с ним делаем.
Пример: On Main page on Users tab I click Create user icon
где ключевое слово «На главной странице на вкладке «Пользователи» я нажимаю «Создать значок пользователя» хранится в отдельном файле робота, скажем, с именем mainPage.robot. При необходимости мы загружаем этот файл в наш тестовый файл.
См.
также пример из раздела «Пара слов и картинок для знакомства с Robot Framework».
Параллельный запуск
Параллельная работа стала возможной благодаря альтернативному средству запуска тестов под названием Пабот .Стандартным методом предварительной настройки является команда робота.
Естественно, тесты должны быть рассчитаны на это и не должны влиять друг на друга.
Грабли
Нет встроенной возможности отладки.
Имеется в виду классическое расположение точек останова.
Приходится либо выводить в лог что-то дополнительное, либо ставить временные промахи и таким образом обойти эту проблему.
В сети описаны некоторые способы присоединения отладки, но для уровня целевой аудитории Robot Framework это немного сложно.
Не поддерживается AWS
AWS (Amazon Web Services — коммерческое общедоступное облако, ферма мобильных устройств) не поддерживает тесты Robot Framework. AWS работает таким образом, что код выполняется на стороне Amazon, а тесты в формате Robot Framework не допускаются.А вот другая ферма, SauceLabs, устроена по другому принципу и отлично работает с Robot Framework (есть проблемы с администрированием их сервиса из России, но их можно решить, связавшись со службой поддержки или работая под VPN).
сложность IDE
RIDE (Robot IDE), специальная IDE для Robot Framework, мягко говоря, сырая.
Режим работы в табличном виде (просто для реализации идеи фреймворка, управляемого ключевыми словами) выглядит так:
Режим работы в текстовом редакторе:
Ни в одном из двух предложенных режимов работать невозможно.
Приложение периодически вылетает (хотя в других проектах этого не происходит).
В текстовом режиме нет базового перехода к определению.
Есть режим «Перейти к таблице определений», но сам этот режим крайне неудобен для средних и крупных проектов.
PyCharm работает лучше, но, к сожалению, существующие плагины не поддерживают автодополнение некоторых библиотек (например, SeleniumLibrary).
Плохая поддержка сторонних библиотек.
Готовые библиотеки, уже существующие в сети, зачастую не поддерживаются.
Пользователей мало, и они становятся зомби.
Например, работа с почтой, сравнение скриншотов и т. д. Можно, конечно, писать свои библиотеки на чистом Python (и Robot Framework это позволяет), но смысла в такой схеме мало.
Справедливости ради стоит сказать, что для наших целей нам не пришлось ничего писать на Python и достаточно было с трудом добытых нами готовых библиотек.
Выводы
Выбор инструмента Robot Framework для нашего проекта был абсолютно правильным и позволил нам выполнить взятые на себя обязательства в срок и с требуемым качеством.
Однако надо понимать, что это, конечно, не «серебряная пуля»; есть много «но», которые необходимо иметь в виду.
Инструмент — всего лишь средство для достижения цели, и не всегда нужно забивать гвозди микроскопом, даже если он выглядит впечатляюще.
Я не собираюсь ругать или хвалить Robot Framework. Скажу лишь, что это хороший инструмент для своих целей.
Полезные ссылки
Теги: #python #qa #Тестирование мобильных приложений #автоматизация тестирования #framework #qa Automation-
Фильм Закончился?
19 Oct, 24 -
Библиотека Онлайн
19 Oct, 24 -
Tinywm: Услуга Больше Не Доступна
19 Oct, 24 -
Двигайтесь Под Музыку
19 Oct, 24 -
Google Распространяет Книги В Формате Pdf
19 Oct, 24 -
Prfrl — Как Работает Интерфейс Аналитики
19 Oct, 24