Привет! Я Вадим Лунин, QA Manager в Альфа Банке в Беларуси. С 2022 года я работаю в банке и одно из моих направлений работы - выбор инструментов тестирования. Не так давно я написал статью “Part 0. Инструментарий QA в Альфа Банке”, в которой описал концепцию Full-stack QA. В этой статье поделился тем, что у нас нет разделения QA-специалистов на ручных тестировщиков и автоматизаторов, а есть разделение по платформам. А в этой статье я хочу рассказать, какие инструменты мы используем для автоматизации тестирования и почему именно к этому пришли.

Итак, когда я пришел в Альфа Банк, мне необходимо было выбрать инструмент автоматизации веб-проектов, который обеспечивал бы следующие требования:

  • кроссбраузерность и кроссплатформенность - клиенты Альфа Банка работают в разных браузерах и на разных платформах, поэтому, этот фактор был очень важен при выборе инструментов;

  • интеграция с другими инструментами - любой инструмент должен быть хорошо совместим с другими системами и продуктами, которые используются в процессе разработки и тестирования;

  • масштабируемость - в Альфа Банке большое количество проектов и очень важно, чтобы инструмент мог поддерживать большие объемы тестов и данных.

Как я уже упомянул, наша команда QA-специалистов разделена по разным платформам, которые состоят из:

  1. QA Mobile - специалисты по тестированию мобильных приложений, которые используют различное ПО, методологии и технологии. Они отвечают за проверку фронтенда (UI) для Android и iOS платформ и интеграции на уровне API. Основным языком программирования для них является Java с использованием фреймворка JUnit 5.

  2. 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$
или
0,17$ за минуту

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-канал Альфа-Среда. Если у вас есть вопросы или комментарии, пожалуйста, оставляйте их под этой статьей. Я буду рад ответить на них. Спасибо за внимание!