Привет! Я Вадим Лунин, 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. Прежде чем выбрать 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), что и команда разработки, то мы можем легко понимать код друг друга и помогать в проведении ревью кода. Это способствует сотрудничеству между командами и повышает качество кода. Далее я бы хотел поговорить про инструмент автоматизации тестирования на мобильных проектах Альфа Банка. Наша задача - тестировать 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-канал Альфа-Среда. Если у вас есть вопросы или комментарии, пожалуйста, оставляйте их под этой статьей. Я буду рад ответить на них. Спасибо за внимание!  QA Manager в Альфа-Банк(Беларусь)