Part 1. Инструменты автоматизации тестирования
Привет! Я Вадим Лунин, QA Manager в Альфа Банке в Беларуси. С 2022 года я работаю в банке и одим из моих направлений работы — выбор инструментов тестирования. Не так давно я написал статью «Part 0. Инструментарий QA в Альфа Банке», в которой описал концепцию Full-stack QA. В этой статье поделился тем, что у нас нет разделения QA-специалистов на ручных тестировщиков и автоматизаторов, а есть разделение по платформам. А в этой статье я хочу рассказать, какие инструменты мы используем для автоматизации тестирования и почему именно к этому пришли.
Итак, когда я пришел в Альфа Банк, мне необходимо было выбрать инструмент автоматизации веб-проектов, который обеспечивал бы следующие требования:
кроссбраузерность и кроссплатформенность — клиенты Альфа Банка работают в разных браузерах и на разных платформах, поэтому, этот фактор был очень важен при выборе инструментов;
интеграция с другими инструментами — любой инструмент должен быть хорошо совместим с другими системами и продуктами, которые используются в процессе разработки и тестирования;
масштабируемость — в Альфа Банке большое количество проектов и очень важно, чтобы инструмент мог поддерживать большие объемы тестов и данных.
Как я уже упомянул, наша команда QA-специалистов разделена по разным платформам, которые состоят из:
QA Mobile — специалисты по тестированию мобильных приложений, которые используют различное ПО, методологии и технологии. Они отвечают за проверку фронтенда (UI) для Android и iOS платформ и интеграции на уровне API. Основным языком программирования для них является Java с использованием фреймворка JUnit 5.
QA Web — специалисты по тестированию сайтов и браузерных приложений, которые используют различное ПО, методологии и технологии. Они отвечают за проверку фронтенда (UI) и интеграции на уровне API. Основным языком программирования для них является TypeScript, некоторые команды также используют Java для тестирования API.
Инструменты QA Web
Прежде чем выбрать Playwright, мы провели анализ рынка автоматизации и рассмотрели разные альтернативы. У меня был опыт работы с такими инструментами, как Cypress и TestCafe, но я решил посмотреть, что еще есть из альтернативных вариантов на рынке. Основными критериями для выбора инструмента были:
Популярность. Мы хотели выбрать инструмент, который имеет большое сообщество, хорошую документацию и активную поддержку.
Возможности. Мы хотели выбрать инструмент, который имеет все необходимые функции для тестирования веб-приложений, такие как кроссбраузерность, кроссплатформенность, эмуляция мобильных устройств и другие.
Производительность. Мы хотели выбрать инструмент, который работает быстро, стабильно и надежно.
Интеграция с Allure TestOps. Для нас было важно, чтобы инструмент был совместим с системой управления тестированием Allure TestOps.
По результатам анализа мы взяли в работу три основных инструмента: Cypress, Playwright и WebdriverIO. Мы прочитали и посмотрели много материалов, сравнивающих эти инструменты. Мы также написали несколько тестов, которые помогли нам оценить возможности каждого инструмента. Выбор пал на Playwright, потому что он соответствовал всем нашим требованиям:
Linux | macOS | Windows | |
Chromium | ✅ | ✅ | ✅ |
WebKit | ✅ | ✅ | ✅ |
Firefox | ✅ | ✅ | ✅ |
Кроссбраузерность. Playwright поддерживает все современные механизмы рендеринга, включая Chromium, WebKit и Firefox.
Кроссплатформенность. Тестируйте в Windows, Linux и macOS, локально или в CI, в автономном или управляемом режиме.
Кросс-язык. Используйте Playwright API в TypeScript, JavaScript, Python, .NET, Java.
Тестирование мобильного Интернета. Встроенная мобильная эмуляция Google Chrome для Android и Mobile Safari. Один и тот же механизм рендеринга работает на вашем рабочем столе и в облаке.
Судя по количеству звёзд на GitHub в Star history видно, что Playwright быстро набирает популярность.
В начале статьи я упомянул, что некоторые наши команды используют Spring для автоматизации тестирования API. Основной причиной такого выбора является то, что бэкенд приложения написан на Spring, что дает возможность переиспользовать те же компоненты и моки, что и команда разработки, запускать отдельные сервисы без запуска всего приложения и использовать другие преимущества этого фреймворка, включая помощь в проведении ревью кода со стороны разработки.
Spring — это популярный фреймворк для разработки Java-приложений, основанный на принципе инверсии управления (IoC) и аспектно-ориентированном программировании (AOP). Spring предоставляет множество модулей для различных аспектов разработки, таких как веб, безопасность, тестирование, интеграция и другие. Spring также поддерживает разные стандарты и технологии, такие как REST, SOAP, JPA, JDBC и другие.
Для тестирования API наши команды используют Spring Boot Test. Spring Boot Test — это модуль Spring Boot, который позволяет легко создавать и запускать тесты с помощью JUnit 5. Spring Boot Test предоставляет разные аннотации и утилиты для конфигурации тестового контекста, внедрения зависимостей, мокирования компонентов и других задач.
Используя Spring Boot Test для автоматизации тестирования API, наши команды получают следующие преимущества:
Переиспользование компонентов и моков. Так как бэкенд приложения написан на Spring, то мы можем использовать те же компоненты и моки, что и команда разработки. Это упрощает синхронизацию кода и данных между командами и повышает качество тестирования.
Запуск отдельных сервисов. Так как Spring поддерживает микросервисную архитектуру, то мы можем запускать отдельные сервисы без запуска всего приложения. Это ускоряет процесс тестирования и позволяет изолировать ошибки в конкретных сервисах.
Помощь в проведении ревью кода. Так как мы используем тот же язык программирования (Java) и фреймворк (Spring), что и команда разработки, то мы можем легко понимать код друг друга и помогать в проведении ревью кода. Это способствует сотрудничеству между командами и повышает качество кода.
Инструменты QA Mobile
Далее я бы хотел поговорить про инструмент автоматизации тестирования на мобильных проектах Альфа Банка. Наша задача — тестировать Android и iOS устройства. Изначально я планировал нанимать отдельных тестировщиков для каждой платформы. Тестировщики Android должны были использовать Kaspresso, а тестировщики iOS — XCTest. Однако таких специалистов на рынке немного, и их содержание на одном проекте было бы дорогостоящим. Поэтому мы провели анализ рынка и выбрали Appium с JUnit 5 в качестве инструмента, который может тестировать как Android, так и iOS устройства.
Appium — это кроссплатформенный инструмент для автоматизации тестирования мобильных приложений, который использует WebDriver протокол. JUnit 5 — это фреймворк для написания и запуска тестов на Java. С помощью Appium и JUnit 5 мы смогли создать универсальные тесты, которые работают на обеих платформах с минимальными изменениями. Это позволило нам сократить время и затраты на тестирование мобильных проектов Альфа Банка.
Одна из главных сложностей при тестировании мобильных приложений — это необходимость учитывать большое разнообразие моделей и характеристик устройств. Покупать по несколько девайсов для каждого участника проекта — это нерационально и дорого. К тому же, в условиях удаленной работы, сложно обеспечить доступ к физическим устройствам всем заинтересованным лицам. Для решения этой проблемы мы решили использовать облачные мобильные фермы. Это сервисы, которые предоставляют удаленный доступ к реальным мобильным устройствам через интернет. С помощью облачных мобильных ферм мы можем тестировать наши приложения на разных устройствах, операционных системах и браузерах. Также мы можем автоматизировать наши тесты и запускать их параллельно на нескольких устройствах. Это повышает качество нашего продукта и сокращает время тестирования.
Данные в таблице актуальны на момент написания статьи (октябрь 2023 года).
Сервис | Пробный период | Кол-во пользователей | CI/CD | Frameworks | API | Цена в месяц |
AWS device farm | 1000 минут | Безлимит | Jenkins | Cucumber, Appium, TestNG | да | 1 сессия — 250$ 5 сессий — 1250$ |
LambdaTest | да | Безлимит | Jenkins Plugin, npm Plugin For TestCafe, Azure Pipeline, Extension, TeamCity, Shopify Plugin, Bamdoo | Appium, selenide, Gauge, testng, geb, junit | да | 1 сессия — 125$ 5 сессий — 625$ |
Sauce Labs | 28дней, 160 минут | Безлимит | Bamboo, Bitbucket, Jenkins, TeamCity | Selenium, Espresso, Appium, XCUITest, Cypress, Playwright, TestCafe | да | 1 сессия — 199$ 5 сессий — 999$ |
BrowserStack | 100 минут | Безлимит | Azure Pipelines, GitHub Actions, TeamCity and more | Playwright, Cypress, Appium, WebDriverIO & more | да | 1 сессия — 199$ 5 сессий — 999$ |
Kobiton | 140 минут на 14 дней | Безлимит | ||||
Experitest | 180 минут в месяц (сессия автотестов кратна 60 минутам) | 1 и более | Bitbucket, circleci, Jenkins, Travis CI, Azure DevOps | Selenium, Appium, XCUITest, Espresso | да | $ 199,00 |
Perfecto | 4 часа в месяц, (только ручное тестирование) | 1 | Bamboo, circleci, Travis CI, Azure DevOps | да | 125$ | |
pCloudy | Есть | Безлимит | Jenkins, Bamboo, circleci | Selenium, Appium, XCUITest, Espresso | да | 1 сессия — 103$ 5 сессий — 480$ |
HeadSpin | есть | Appium, Selenium | да | по запросу | ||
TestingBot | есть | Безлимит | Azure Devops (VSTS), Bamboo, Bitbucket, Pipelines, Circle CI, GitHub, Actions, GitLab CI | Selenium, Appium | да | 1 сессия — 90$ 4 сессий — 360$ |
Мы выбрали Browserstack, потому что он предлагает множество преимуществ для автоматизации тестирования наших мобильных приложений. Вот некоторые из них:
позволяет нам тестировать наши приложения на реальных устройствах и браузерах в режиме реального времени;
интегрируется с популярными фреймворками для автоматизации тестирования, такими как Appium, что позволяет нам использовать наши предпочитаемые инструменты тестирования, пользуясь преимуществами облачной инфраструктуры;
обеспечивает высокую масштабируемость и надежность нашего процесса тестирования. Мы можем запускать сотни тестов одновременно на наших параллельных потоках и ставить остальные в очередь, не беспокоясь о потере тестов;
помогает нам повысить качество нашего продукта и сократить время тестирования. Мы можем тестировать наши приложения на разных устройствах, операционных системах и браузерах, а также автоматизировать наши тесты и запускать их параллельно на нескольких устройствах.
В общем, Browserstack — это мощный инструмент для разработчиков и тестировщиков, которые хотят оптимизировать свой процесс тестирования и гарантировать совместимость своих приложений со всеми возможными комбинациями устройств и браузеров.
Таким образом у нас выглядит работа с Browserstack. На схеме хорошо видно, как мы интегрируем Browserstack с нашими инструментами CI/CD (Tekton) и как мы получаем отчеты о результатах тестирования с помощью Allure TestOps. Я надеюсь, что эта информация была полезной и интересной, и что вы попробуете использовать Browserstack для своих проектов.
Заключение
Итоговая схема инструментов автоматизации тестирования в Альфа Банке выглядит следующим образом:
В этой статье я рассказал вам про наш инструментарий для автоматизации тестирования в Альфа Банке и почему мы выбрали Playwright для тестирования веб-приложений и использование Spring для тестирования API на некоторых проектах, а также выборе Appium для тестирования мобильных приложений и использование BrowserStack. Я также показал, какие преимущества мы получаем от этих инструментов и как их используем. В следующих статьях я расскажу о других инструментах, которые мы используем для управления тестированием и тестирования производительности.
Чтобы не пропустить ничего важного и быть в курсе всех новостей и событий Альфа Банка в Беларуси, подписывайтесь на наш telegram-канал Альфа-Среда. Если у вас есть вопросы или комментарии, пожалуйста, оставляйте их под этой статьей. Я буду рад ответить на них. Спасибо за внимание!