Хабр, привет! Специалисты «Рексофт» собрали актуальные инструменты, которые облегчат жизнь тестировщику и помогут быстрее справляться с привычными задачами.  Итак, поехали! Мобильное тестирование — одна из самых активно развивающихся сфер из-за быстро растущего рынка мобильных приложений. Разберем, на что нужно обращать внимание при тестировании мобильных приложений и каким инструментарием для этого необходимо владеть. Начинают тестирование с проверки на соответствие требованиям и дизайну. Речь здесь не только о том, чтобы проверить наличие всех картинок или работоспособность ссылок, а о полноценном UX/UI анализе. Это значит, что тестировщик должен уметь работать с Figma, Zeplin, использовать инструменты проверки интерфейсов вроде Appium Viewer и другие. Также необходимо проработать все возможные маршруты перемещения пользователя по приложению. С этой целью составляют mindmap — диаграмму связей между страницами. Для этого подойдет любой mindmap-продукт — например, Mindomo или xMind. Чек-лист тестирования мобильных приложений: Геолокация. Работа приложения в разных режимах: portrait/landscape, split screen. Поля ввода. Пуш уведомления. Прерывания — входящие звонки, СМС, доступ к интернету, предупреждение о низком заряде батареи, внезапное отключение устройства и другие. Поддержка платежных систем (если присутствуют платежные транзакции). Соответствие гайдлайнам операционных систем. Влияние на производительность устройства. Также необходимо проанализировать сетевой трафик: обрыв сети и слабый интернет, исходящие запросы и полученные ответы. Для этого используют снифферы Charles/Fiddler, Proxyman и другие.  При необходимости выполняют тестирование API. Для этой задачи используют специализированные инструменты: Swagger, Postman, SOAPUI. Они помогают документировать запросы и выполнять их интерактивную проверку. Подробнее их мы рассмотрим дальше. Для тестирования на различных устройствах используют эмуляторы вроде Genymotion, BlueStacks. Однако успешные тесты на эмуляторе не гарантируют, что приложение будет работать без сбоев на реальных устройствах. Чтобы подключиться к реальным мобильным устройствам и интегрировать туда автотесты, используют фермы BrowserStack, Xamarin или AWS. Либо можно поднять собственную ферму на базе OpenSTF — это позволит всем сотрудникам иметь равный доступ к тестовым устройствам, что особо важно в условиях распределенных команд и удаленной работы. Для автоматизации UI тестирования мобильных приложений используют Appium, Detox, Ranorex — инструменты автоматизации для запуска сценариев и тестирования приложений на Android или iOS с помощью веб-драйвера. Подробнее инструменты для автоматизации тестирования мы рассмотрим ниже. Когда ваш проект имеет большое количество автотестов, будет полезно автоматизировать их запуск при каждой сборке нового билда. Чтобы настроить этот процесс, используйте системы CI/CD — Jenkins/TeamCity. Итоговый набор инструментов мобильного тестировщика: Тестирование UI/UX: Figma, Zeplin, любой mindmap-like продукт. Анализ сетевого трафика: Charles/Fiddler, Proxyman. Тестирование API: Swagger/Postman/SOAPUI. Автоматизация UI тестирования мобильных приложений: Appium, Detox, Ranorex. Фермы устройств для тестирования мобильных приложений: BrowserStack, Xamarin, AWS. Системы CI/CD: Jenkins/TeamCity. Автоматизированное тестирование в ближайшие годы точно не заменит ручное, однако его доля из года в год продолжает расти. Наибольшей популярностью здесь пользуются следующие инструменты. TestComplete — функциональная платформа позволяет создавать автоматизированные тесты для десктопных и веб-приложений, а также приложений под Android и iOS. Тесты могут быть записаны, написаны по сценарию или созданы вручную с помощью операций, управляемых ключевыми словами, и использованы для автоматического воспроизведения и регистрации ошибок. Инструмент поддерживает сценарии на языках Python, JavaScript, VBScript, и C++ Script. Katalon Studio — решение на основе платформ автоматизации с открытым исходным кодом Selenium и Appium. Имеет специализированный интерфейс IDE для тестирования веб-приложений, API, мобильных и настольных приложений. Может быть интегрирован в CI/CD, совместим с qTest, JIRA, Jenkins и Git.  Инструмент активно развивается от года к году и имеет одно неоспоримое преимущество — минимальный порог вхождения, Некоторые сценарии там можно записать, используя только автоматический рекордер и не выполняя никаких дополнительных действий. Обратите внимание, что ни одна из платформ не сравнится по функционалу и применимости с полноценной автоматизацией на языке программирования. Если уровень подготовки инженеров позволяет писать тесты, используя среду разработки со всем многообразием приемов и библиотек, то это будет лучшим решением. В этом случае вы не будете ограничены возможностями конкретной платформы. Selenium — инструмент для автоматизации действий веб-браузера. В большинстве случаев используется для тестирования web-приложений, но этим не ограничивается. В частности, может быть использован, чтобы решать рутинные задачи администрирования сайта или регулярного получать данные из различных источников. Selenium имеет огромную поддержку и постоянно совершенствуется. На его основе сделано много других инструментов, упрощающих работу, но не меняющих основу. Он не очень прост в обращении в отличие от его наследников, но все равно имеет самое большое число последователей и рекомендуется к изучению для понимания основ. Selenide — это обёртка вокруг Selenium WebDriver. Упрощает работу и позволяет сосредоточиться на логике вместо рутины с браузером. Для многих этот инструмент стал спасением: он может выполнять те же функции, что и Selenium, но не требует непосредственной реализации простейших функций в проекте, а поставляется сразу вместе с ними, что в разы ускоряет стартовый этап взаимодействия. Также имеет несколько полезных фич: встроенные скриншоты, прокси, логирование, удобная интеграцию с удаленным выполнением тестов. Allure — инструмент от Яндекса, первый по популярности в области визуализации отчетности автотестов. Allure строит графики, отображает названия с тестов, их шаги, прикрепленные файлы и скриншоты. Очень удобен и прост в подключении, умеет работать из коробки с основными фреймворками для автотестирования, такими как Junit или Testng. Junit — один из самых популярных фреймворков для автотестирования в Java-среде. Позволяет работать как с модульными, так и с любыми функциональными тестами. Junit прост в использовании: в отличие от своего ближайшего конкурента Testng не требует сложной настройки, поддерживает многопоточность и тестирование на основе данных, а также интегрирован со сборщиками (Maven, Gradle). Selenoid — удобный инструмент для удаленного и параллельного запуска тестов. Использует докер, который обеспечивает хорошую изолированность сессий браузера и быстродействие.  Selenoid можно легко поставить как на локальную машину, так и на виртуалку. Следить за выполнением тестов можно через браузер, обратившись к Selenoid UI. Инструмент отображает как загрузку контейнеров, так и непосредственно выполнение теста. Selenoid позволяет с легкостью запускать тесты на любом из популярных браузеров, имеет собственные средства для создания скриншотов с сессии и записи видео. Для систем, построенных на Kubernetes или Openshift, используется Moon — инструмент от той же организации, но обладающий расширенным функционалом для интеграции. Appium — инструмент автоматизации тестирования мобильных веб-приложений и гибридных приложений на Android или iOS с помощью веб-драйвера. Обладает открытым исходным кодом и позволяет писать сценарии, используя все языки, в которых есть библиотеки Selenium, так как работает на основе Selenium Webdriver. Благодаря кроссплатформенности и возрастающему интересу к мобильной автоматизации пользуется все большей популярностью. Jenkins — система с открытым исходным кодом на Java, предназначенная для обеспечения процесса непрерывной интеграции программного обеспечения. Это бесплатный инструмент, который включает тысячи постоянно обновляющихся плагинов. Удобен для автоматизации функционального тестирования как API, так и UI, потому что содержит плагин для работы с Allure, умеет хранить отчетность и отображать тренды.  Jenkins позволяет отслеживать ход тестирования на временных графиках. Параметризировать запуски, к примеру, настроить запуск на определенное время или сформировать письмо с кратким отчетом по указанному адресу после выполнения.  GitLab — в первую очередь, это система управления репозиториями программного кода. Репозитории включают систему контроля версий для размещения различных цепочек разработки и веток. Позволяют разработчикам проверять код и откатываться к стабильной версии софта в случае непредвиденных проблем. Все это полезно также и при автоматизации тестирования и использовании систем непрерывной интеграции. Сам GitLab также является CI/CD системой, но не такой распространенной, как Jenkins или Teamcity. Интерес к тестированию API стабильно растет в последние несколько лет. Это важный компонент в процессе CI/CD, необходимый для успешного развертывания ПО. Приводим основные инструменты, которыми необходимо владеть для тестирования API.  SOAPUI — консольный инструмент для тестирования API, который помогает легко тестировать API REST и SOAP, а также web-сервисы. Инструмент позволяет получить полный исходный документ и встроить предпочтительный набор функций. Postman — отличный выбор для API тестирования для тех, кто не желает иметь дела с кодировками в интегрированной среде разработки, используя тот же язык программирования, что и разработчик. Инструмент позволяет создавать запросы REST, SOAP и GraphQL. Поддерживает множество протоколов авторизации и управление сертификатами. REST-assured — DSL для тестирования REST-сервисов, который встраивается в тесты на Java. Это решение появилось более девяти лет назад и стало популярным из-за своей простоты и удобного функционала.  Инструментов, которые позволяют писать API тесты в среде разработки несколько, но исторически REST-assured является самым популярным для функционального тестирования. Его используют для тестирования множества систем, это полноценный инструмент с множеством протоколов и опций, позволяющий преодолеть проблемы, связанные с авторизациями, токенами, электронными подписями и другими возникающими сложностями. Из минусов можно назвать плохую работу с параллельными запросами и не самый удобный инструмент проверок ответов от сервера. Но здесь Junit в помощь.  Swagger — фреймворк с открытым исходным кодом, позволяющий разработчикам создавать документацию для REST API. Тестировщики могут использовать его как примеры, тут сразу видно, что за эндпоинт был сделан, какого типа, по какому url. Часто представлены примеры заполнения запроса, ответа и возможных кодов ответа на запрос. На этом пока все. Расскажите в комментариях, какие инструменты для тестирования используете вы. Будем рады вашим дополнениям. Software developer