Привет! Я Вадим Лунин, QA Manager в Альфа Банке в Беларуси. С 2022 года я работаю в банке и одно из моих направлений работы - выбор инструментов тестирования. Не так давно я написал статью “Part 0. Инструментарий QA в Альфа Банке”, в которой описал концепцию Full-stack QA. В этой статье поделился тем, что у нас нет разделения QA-специалистов на ручных тестировщиков и автоматизаторов, а есть разделение по платформам. А в этой статье я хочу рассказать, какие инструменты мы используем для автоматизации тестирования и почему именно к этому пришли.
![](https://habrastorage.org/getpro/habr/upload_files/3e5/ee4/124/3e5ee4124db24d6974ce2a505ba69aca.png)
Итак, когда я пришел в Альфа Банк, мне необходимо было выбрать инструмент автоматизации веб-проектов, который обеспечивал бы следующие требования:
кроссбраузерность и кроссплатформенность - клиенты Альфа Банка работают в разных браузерах и на разных платформах, поэтому, этот фактор был очень важен при выборе инструментов;
интеграция с другими инструментами - любой инструмент должен быть хорошо совместим с другими системами и продуктами, которые используются в процессе разработки и тестирования;
масштабируемость - в Альфа Банке большое количество проектов и очень важно, чтобы инструмент мог поддерживать большие объемы тестов и данных.
Как я уже упомянул, наша команда QA-специалистов разделена по разным платформам, которые состоят из:
QA Mobile - специалисты по тестированию мобильных приложений, которые используют различное ПО, методологии и технологии. Они отвечают за проверку фронтенда (UI) для Android и iOS платформ и интеграции на уровне API. Основным языком программирования для них является Java с использованием фреймворка JUnit 5.
QA Web - специалисты по тестированию сайтов и браузерных приложений, которые используют различное ПО, методологии и технологии. Они отвечают за проверку фронтенда (UI) и интеграции на уровне API. Основным языком программирования для них является TypeScript, некоторые команды также используют Java для тестирования API.
Инструменты QA Web
![](https://habrastorage.org/getpro/habr/upload_files/269/168/56f/26916856ffa66217fb7f54b3b3b186d2.jpg)
Прежде чем выбрать 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. Один и тот же механизм рендеринга работает на вашем рабочем столе и в облаке.
![](https://habrastorage.org/getpro/habr/upload_files/0ad/a3e/ac1/0ada3eac130a9d08a9acb170efb55fbe.png)
Судя по количеству звёзд на 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 устройства.
![](https://habrastorage.org/getpro/habr/upload_files/a81/af1/922/a81af19222744d609bff878a44bff822.jpg)
Appium - это кроссплатформенный инструмент для автоматизации тестирования мобильных приложений, который использует WebDriver протокол. JUnit 5 - это фреймворк для написания и запуска тестов на Java. С помощью Appium и JUnit 5 мы смогли создать универсальные тесты, которые работают на обеих платформах с минимальными изменениями. Это позволило нам сократить время и затраты на тестирование мобильных проектов Альфа Банка.
![](https://habrastorage.org/getpro/habr/upload_files/14b/c7f/e1b/14bc7fe1b9e513c90d7b79db92a1f8bd.png)
![](https://habrastorage.org/getpro/habr/upload_files/57e/78a/27e/57e78a27e3c32c120ff3254f02ca8ffb.png)
Одна из главных сложностей при тестировании мобильных приложений - это необходимость учитывать большое разнообразие моделей и характеристик устройств. Покупать по несколько девайсов для каждого участника проекта - это нерационально и дорого. К тому же, в условиях удаленной работы, сложно обеспечить доступ к физическим устройствам всем заинтересованным лицам. Для решения этой проблемы мы решили использовать облачные мобильные фермы. Это сервисы, которые предоставляют удаленный доступ к реальным мобильным устройствам через интернет. С помощью облачных мобильных ферм мы можем тестировать наши приложения на разных устройствах, операционных системах и браузерах. Также мы можем автоматизировать наши тесты и запускать их параллельно на нескольких устройствах. Это повышает качество нашего продукта и сокращает время тестирования.
Данные в таблице актуальны на момент написания статьи (октябрь 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 - это мощный инструмент для разработчиков и тестировщиков, которые хотят оптимизировать свой процесс тестирования и гарантировать совместимость своих приложений со всеми возможными комбинациями устройств и браузеров.
![](https://habrastorage.org/getpro/habr/upload_files/598/0db/317/5980db3174c885055f97805ba85b3a59.jpg)
Таким образом у нас выглядит работа с Browserstack. На схеме хорошо видно, как мы интегрируем Browserstack с нашими инструментами CI/CD (Tekton) и как мы получаем отчеты о результатах тестирования с помощью Allure TestOps. Я надеюсь, что эта информация была полезной и интересной, и что вы попробуете использовать Browserstack для своих проектов.
Заключение
Итоговая схема инструментов автоматизации тестирования в Альфа Банке выглядит следующим образом:
![](https://habrastorage.org/getpro/habr/upload_files/d98/d3b/b83/d98d3bb8367f6979167e154b06d84f83.jpg)
В этой статье я рассказал вам про наш инструментарий для автоматизации тестирования в Альфа Банке и почему мы выбрали Playwright для тестирования веб-приложений и использование Spring для тестирования API на некоторых проектах, а также выборе Appium для тестирования мобильных приложений и использование BrowserStack. Я также показал, какие преимущества мы получаем от этих инструментов и как их используем. В следующих статьях я расскажу о других инструментах, которые мы используем для управления тестированием и тестирования производительности.
Чтобы не пропустить ничего важного и быть в курсе всех новостей и событий Альфа Банка в Беларуси, подписывайтесь на наш telegram-канал Альфа-Среда. Если у вас есть вопросы или комментарии, пожалуйста, оставляйте их под этой статьей. Я буду рад ответить на них. Спасибо за внимание!
Комментарии (5)
darkgrow
18.10.2023 08:29Альфа банк перестал использовать akita? И в рамках тестирования используются ли bdd фреймворки?
VadimLunin Автор
18.10.2023 08:29Возможно, вы путаете нас с Альфа-Банком России, но мы являемся самостоятельным юридическим лицом. Мы не применяли инструменты Akita и Cucumber BDD для нашего тестирования.
Pitcentr0
Проводите ли вы регрессионное тестирование web сайта или только идет проверка на уровне запрос/ответ ?
VadimLunin Автор
Регрессинное тестирование проводим
Pitcentr0
а можно подробнее какие сервисы/инструменты ?