Привет! Я Вадим Лунин, 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 | Цена в месяц |
1000 минут | Безлимит | Jenkins | Cucumber, Appium, TestNG | да | 1 сессия - 250$ 5 сессий - 1250$ | |
да | Безлимит | Jenkins Plugin, npm Plugin For TestCafe, Azure Pipeline, Extension, TeamCity, Shopify Plugin, Bamdoo | Appium, selenide, Gauge, testng, geb, junit | да | 1 сессия - 125$ 5 сессий - 625$ | |
28дней, 160 минут | Безлимит | Bamboo, Bitbucket, Jenkins, TeamCity | Selenium, Espresso, Appium, XCUITest, Cypress, Playwright, TestCafe | да | 1 сессия - 199$ 5 сессий - 999$ | |
100 минут | Безлимит | Azure Pipelines, GitHub Actions, TeamCity and more | Playwright, Cypress, Appium, WebDriverIO & more | да | 1 сессия - 199$ 5 сессий - 999$ | |
140 минут на 14 дней | Безлимит | |||||
180 минут в месяц (сессия автотестов кратна 60 минутам) | 1 и более | Bitbucket, circleci, Jenkins, Travis CI, Azure DevOps | Selenium, Appium, XCUITest, Espresso | да | $ 199,00 | |
4 часа в месяц, (только ручное тестирование) | 1 | Bamboo, circleci, Travis CI, Azure DevOps | да | 125$ | ||
Есть | Безлимит | Jenkins, Bamboo, circleci | Selenium, Appium, XCUITest, Espresso | да | 1 сессия - 103$ 5 сессий - 480$ | |
есть | Appium, Selenium | да | по запросу | |||
есть | Безлимит | 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-канал Альфа-Среда. Если у вас есть вопросы или комментарии, пожалуйста, оставляйте их под этой статьей. Я буду рад ответить на них. Спасибо за внимание!
