Инструменты автоматизации тестирования
Популярность инструментов автоматизации в области тестирования ПО не вызывает сомнений. И это не случайно. Ведь именно внедрение автоматизированного тестирования позволяет ускорить процессы и повысить эффективность работы над проектами.
В компании Bytex тестовая автоматизация является важной частью проекта и поэтому в данной статье дано описание наиболее популярных инструментов, применение которых позволит повысить продуктивность и качество конечного продукта и одновременно уменьшить время, необходимое для его разработки.
Appium
На текущий момент — одно из лучших решений в своей нише. Призван в помощь для UI-тестирования мобильных приложений.
Возможности:
- Поиск элементов приложения по XPath, селектору или ID, и работа с ними (нажатие, ввод текста, скролл)
- Поддерживаются и менее гибкие функции, такие как нажатия или свайпы по координатам на экране, или эмуляция нажатия аппаратных кнопок (назад, домой и т.п).
Плюсы:
- Поддержка популярных мобильных ОС (Android, IOS)
- Поддержка наиболее актуальных ЯП
- Хорошее community
- Достаточно просто устанавливается
- Документация покрывает большинство возникающих вопросов
Минусы:
- Не распознает элементы интерфейса в программах / играх, созданных на мультиплатформенных движках (например Unity, UnrealEngine)
- Иногда бывают проблемы с синхронизацией
UIAutomatorviewer & UIAutomator
Оба инструмента распространяются в составе Android Studio. UIAutomatorviewer (далее viewer) — используется для распознавание Android UI-элементов, а UIAutomator представляет собой набор библиотек Java API для тестирования пользовательского интерфейса.
Возможности:
- Основной целью viewer является получение информации о каждом видимом элементе интерфейса, будь то текст, название кнопки, её ID или другой атрибут
- В принципе основные возможности взаимодействия с интерфейсом как и у Appium
Плюсы:
- Простая интеграция в другие инструменты
- Простое и «легковесное приложение» (а точнее скрипт) в составе Android SDK
Минусы:
- Как и Appium viewer не распознает элементы интерфейса в приложениях, созданных на мультиплатформенных движках (точнее будет сказать, что отсюда и растут ноги этой проблемы у appium)
- Необходима версия Android 4.3.
- У viewer нет возможности эмуляции хотя бы тапа, что часто может быть полезным, чтобы обновить вьюпорт «не отходя от кассы»
- Возможность написания скриптов только на java (насколько знаю, товарищ xiaocong разрабатывает библиотеку, благодаря которой можно писать скрипты на python)
PyWinAuto
В настоящее время довольно редко используют автоматизацию UI-тестирования приложений Windows, но тем не менее, этот инструмент довольно хорошо выполняет свою работу и заслужил своё место в этом списке. Для большей простоты работы следует использовать в связке с инструментами типа Inspect, Spy++ или SWAPY, которые дадут информацию о любом элементе в активном окне.
Возможности:
- Поиск элементов приложения по многим параметрам от текста на кнопке до ID элемента
- Эмуляция нажатия кнопок клавиатуры / мыши
Плюсы:
- Поддержка MS UI Automation
- Хуки для мыши и клавиатуры
Минусы:
- Community как таковое отсутствует
- Поддержка и обновление инструмента очень посредственные
Katalon Studio
Относительно молодой, но подающий надежды проект. Его функционал вкупе с ценником «free» постепенно введут его в лидеры. Отличный инструмент как для web, так и для мобильного тестирования. Главное, благодаря режимам «Manual» и «Record&play» автотесты смогут писать тестировщики,не знающие языков программирования.
Возможности:
- Создание автотестов посредством скриптов, record & playback или интерфейса приложения
- Автоматическое создание репортов после прогона тестов
Плюсы:
- Встроенные шаблоны проектов: предлагая встроенные шаблоны для организации тест-кейсов, репозитория объектов и ключевых слов, Katalon Studio значительно упрощает процесс тестирования
- Мультифункциональность: полностью поддерживает тестирование Web, Android, iOS и API на всех операционных системах
- Беспроблемная интеграция инструмента: легко интегрируется с Jenkins, GIT и нативными плагинами JIRA
- Простой и интуитивно понятный интерфейс
Минусы:
- Скрипты можно писать только на java и ещё менее известном Groovy (лично мне хотелось бы видеть ещё и python)
- Интерфейс выполнения тестов оставляет желать лучшего. После выполнения мы видим уведомление со словом «done» на зеленом фоне. А чтобы узнать правильно ли прошёл тест или зафейлился, нужно лезть в консоль, по-моему, это очень большой недочет со стороны разработчиков
- Инструмент не совсем самостоятельный и для работы требует установленного appium
Fiddler
Fiddler — инструмент для перехвата, анализа сетевого трафика и работы с ним. Программа не совсем для автоматических тестов в их классическом понимании. По большей части Fiddler нужен для мониторинга пересылаемых пакетов, однако в потаенных его уголках содержит мощный функционал.
Возможности:
- Перехват сетевого трафика
- Расшифровка содержимого пакетов
- Возможность управления скриптами (возможность задания армии запросов для проведения стресс-теста сайта или web-приложения)
Плюсы:
- Создание правил на заданных URL
- Breakpoints для заданных URL
- Настраиваемая задержка при отправке / получении пакетов (аналог имитации медленного интернета)
Минусы:
- Не может декодировать некоторые пакеты с защищенным протоколом
- Требуется поставить плагин для работы перехвата с мобильных устройств
Выводы
Таким образом, каждый из инструментов автоматизированного тестирования позволяет нам получить новые преимущества. Однако, не стоит забывать и о существующих ограничениях. Сегодня 100% покрытие проекта автотестами, тем более когда речь идет о проверке специфических багов, вряд ли возможно. Поэтому всё же наилучший результат дает комбинированный вариант.