
Инструменты автоматизации тестирования
Популярность инструментов автоматизации в области тестирования ПО не вызывает сомнений. И это не случайно. Ведь именно внедрение автоматизированного тестирования позволяет ускорить процессы и повысить эффективность работы над проектами.
В компании 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% покрытие проекта автотестами, тем более когда речь идет о проверке специфических багов, вряд ли возможно. Поэтому всё же наилучший результат дает комбинированный вариант.
 




