Всем привет! Меня зовут Вадим Лунин. Я — QA Manager из Альфа Банка в Беларуси. Этой статьёй  хочу начать цикл статей по инструментам, которые мы используем для тестирования наших продуктов в Альфа Банке.

Три месяца назад мы запустили Альфа Среду – серию митапов для IT-специалистов. Один из митапов был посвящен теме тестирования  -  "Тестирование в Альфа Банке: на пути к TestOps". На митапе мы рассказали про наши подходы и инструменты в тестировании. Больше новостей о цифровой трансформации Альфа Банка и анонсы следующих митапов можно найти в Telegram Альфа-Среда. В этой статье я подробнее опишу наш инструментарий, как мы его используем и как выбирали.

На картинке выше вы можете видеть те инструменты, которые используют тестировщики в Альфа Банке. Это достаточно разнообразные инструменты, которые применяются для решения разных задач. Поэтому я решил сделать 4 отдельных статьи по инструментам:

  • Part 0. Инструментарий QA в Альфа Банке - текущая статья, в которой я расскажу про тестировщиков, покажу какие инструменты и плагины используем.

  • Part 1. Инструменты автоматизации тестирования - в этой статье больше углубимся в наши инструменты автоматизации, где расскажу почему сделали такой выбор и покажу схему взаимодействия.

  • Part 2. Инструменты управления тестированием - в этой статье поговорим про систему управления тестированием. Расскажу, почему выбрали и приведу примеры работы.

  • Part 3. Инструменты тестирования производительности - в финальной статье расскажу как у нас выглядит схема тестирования производительности и какие инструменты мы для этого используем.

Прежде чем перейти к инструментам хотелось бы поговорить про тестировщиков, которые работают в Альфа Банке. У нас работают все Full-stack QA — это квалифицированные специалисты, которые объединяют в себе знания, умения и навыки quality assurance инженера (QA) и автоматизатора тестирования.

Это люди, которые будут думать о различных аспектах качества продукта, таких как функциональность, удобство использования, производительность, безопасность, глобализация и так далее. Они будут знакомы со стратегиями и технологиями автоматизации тестирования. Full-stack QA обладает богатым набором знаний предметной области, технических навыков и опыта тестирования, и все это с точки зрения пользователя. В современном мире, где используются гибкие технологии, тестирование нельзя проводить во время выпуска, оно делается в каждом спринте, Таким образом, работа по обеспечению качества с полным стеком начинается со сбора требований, понимания функциональности приложения, тесного сотрудничества с командой разработчиков, консультируя их по созданию приложения в соответствии с точкой зрения пользователя, а после тестирования приложения с точки зрения пользователя с использованием опыта и инструментов тестирования. Это приводит к более протестированному продукту с меньшим количеством ошибок и более быстрой доставке продукта.

Мы не делим наших тестировщиков на ручных и автоматизаторов, потому что мы считаем, что каждый тестировщик должен уметь и то, и другое. Но у нас есть разные направления тестирования: QA Web и QA Mobile. Потому, что разные платформы требуют разных навыков и инструментов для тестирования.

Тестировщики, которые работают на веб-проектах, пишут свои UI и API тесты на TypeScript. TypeScript - это расширение JavaScript, которое добавляет строгую типизацию и другие возможности для улучшения качества кода. На некоторых веб-проектах тестировщики могут писать интеграционные тесты на Java. Java - это один из самых популярных и универсальных языков программирования, который поддерживает множество библиотек и фреймворков для автоматизации тестирования. 

Тестировщики, работающие на мобильных проектах, также используют Java для написания тестов, так как он подходит для тестирования разных платформ.

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

Языки программирования

Java 11 / Java 17

Cтрого типизированный объектно-ориентированный язык программирования общего назначения, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Разработка ведётся сообществом, организованным через Java Community Process; язык и основные реализующие его технологии распространяются по лицензии GPL

JavaScript

Мультипарадигменный язык программирования. Поддерживает объектно-ориентированный, императивный и функциональный стили. Является реализацией спецификации ECMAScript

TypeScript

Язык программирования, представленный Microsoft в 2012 году и позиционируемый как средство разработки веб-приложений, расширяющее возможности JavaScript

Golang

Компилируемый многопоточный язык программирования, разработанный внутри компании Google, на котором написан K6. Необходим для понимания нюансов работы инструмента и создания плагинов к нему. 

Среда разработки

Visual Studio Code

Редактор исходного кода, разработанный Microsoft для Windows, Linux и macOS. Позиционируется как «лёгкий» редактор кода для кроссплатформенной разработки веб- и облачных приложений

IntelliJ IDEA

Интегрированная среда разработки программного обеспечения для многих языков программирования, в частности Java, JavaScript, Python, разработанная компанией JetBrains

Android Studio

Интегрированная среда разработки для работы с платформой Android, анонсированная 16 мая 2013 года на конференции Google I/O

XCode

Интегрированная среда разработки программного обеспечения для платформ macOS, iOS, watchOS и tvOS, разработанная корпорацией Apple. Первая версия выпущена в 2003 году.

Allure TestOps

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

Sublime text

Удобно для просмотра тестовых файлов разных форматов (xml, json, html и тд)

Работа с API

Наименование инструмента

Используется для решения задачи

Postman

API-платформа взаимодействия с REST API сервисов

SoapUI

Приложение с открытым исходным кодом для тестирования веб-сервисов сервис-ориентированных архитектур и передачи состояний представлений

cURL

Кроссплатформенная служебная программа командной строки, позволяющая взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.

Swagger

Собирательный инструмент для работы с запросами на бэк и параллельным предоставлением схем запросов и ответов

Fiddler

Инструмент отладки прокси-сервера, используемый для регистрации, проверки и изменения трафика HTTP и HTTPS между компьютером и веб-сервером.

Charles

Кроссплатформенное приложение прокси-сервера для отладки HTTP, написанное на Java. Он позволяет пользователю просматривать HTTP, HTTPS, HTTP/2 и включенный трафик портов TCP, доступ к которому осуществляется с локального компьютера, на него или через него.

Proxyman

Проксирование REST запросов c Android/iOS эмуляторов

mitmproxy

Кросс-платформенный HTTPS-прокси с открытым исходным кодом

Mockoon

Кроссплатформенное приложение с визуальным интерфейсом, бесплатно для использования, с платной поддержкой. Есть версии для Windows, Mac, Linux. С помощью него можно легко настроить мок-сервер для отладки и тестирования rest запросов

WireMock

Библиотека на java для создания HTTP заглушек над веб-сервисами

Тестирование производительности

Наименование инструмента

Используется для решения задачи

OpenSearch / OpenSearch Dashboard

Программное обеспечение, состоящее из поисковой системы и OpenSearch Dashboards, панели визуализации данных для этой поисковой системы

ElasticSearch

Масштабируемая утилита полнотекстового поиска и аналитики, которая позволяет быстро в режиме реального времени хранить, искать и анализировать большие объемы данных.

Grafana K6

Инструмент тестирования производительности с открытым исходным кодом, сценарии пишутся на JavaScript, "под капотом" - Golang. Совмещает API и клиентское тестирование производительности.

Apache JMeter

Инструмент тестирования производительности с открытым исходным кодом, сценарии пишутся в визуальном редакторе и хранятся в формате XML, "под капотом" - Java.

sitespeed.io

Фреймворк для тестирования клиентской производительности веб-сервисов, их настольных и мобильных версий.

Docker / Podman

Взаимодействие с docker-совместимыми образами

Prometheus

Бесплатное программное приложение, используемое для мониторинга и оповещения о событиях. Он записывает метрики в базу данных временных рядов, созданную с использованием модели запроса HTTP, с гибкими запросами и оповещениями в реальном времени.

Zabbix

Свободная система мониторинга статусов разнообразных сервисов компьютерной сети, серверов и сетевого оборудования.

Grafana

Свободная программная система визуализации данных, ориентированная на данные систем ИТ-мониторинга

xk6

Позволяет создавать кастомные сборки K6 с различными плагинами

Работа с БД

Наименование инструмента

Используется для решения задачи

DBeaver

Для подключения к базе РКО

DBvisualizer

Просмотр базы данных на проде

PgAdmin

Платформа с открытым исходным кодом для администрирования и разработки для PostgreSQL и связанных с ней систем управления базами данных

Фреймворки и библиотеки

Наименование инструмента

Используется для решения задачи

Основные фреймворки и библиотеки

Playwright

Библиотека Node.js для автоматизации Chromium, Firefox и WebKit с помощью одного API.

JUnit 5

Фреймворк для модульного тестирования программного обеспечения на языке Java

RestAssured

Библиотека, разработанная для упрощения тестирования и валидации REST API, с учетом практик, применяемых в динамических языках

Appium

Фреймворк, который помогает автоматизировать приложения как для Android, так и для iOS

Spring Framework

Универсальный фреймворк с открытым исходным кодом для Java-платформы.

Mockito

Фреймворк, который позволяет создавать тестовые двойные объекты в автоматизированных модульных тестах с целью разработки через тестирование или разработки через поведение.

AssertJ

Библиотека, которая позволяет использовать удобные и читабельные выражения для проверки результатов тестов

gradle

Фреймворк для автоматизации сборки, построенная на принципах Apache Ant и Apache Maven, но предоставляющая DSL на языках Groovy и Kotlin вместо традиционной XML-образной формы представления конфигурации проекта

Maven

Фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах на языке POM, являющемся подмножеством XML

Вспомогательные фреймворки и библиотеки

com.fasterxml.jackson

Работа с xml и json для Java

lombok

Библиотека для сокращения кода в классах и расширения функциональности языка Java

JS-библиотека papaparse

Библиотека парсинга CSV-подобных массивов строк

NPM-библиотеки

n

Библиотека для переключения версии node

cross-env

Установка переменных окружения для разных платформ (используется в cmd командах)

husky

Вы можете использовать его для проверки сообщений о фиксации , запуска тестов , проверки кода и т. д. при фиксации или отправке.

dotenv

Считывание переменных окружения (в том числе из .env файла)

eslint

Инструмент для выявления шаблонов, обнаруженных в коде ECMAScript/JavaScript, и составления отчетов о них.

prettier

Авто-форматирование кода

Работа с Allure

allure-rest-assured

Отображение в репорте запросов

allure-assertj

Отображение в репорте результатов проверок в более красивом виде

allurectl

Оболочка командной строки API Allure TestOps, позволяющая загружать результаты тестирования в режиме реального времени из задания сборки и управлять объектами на стороне Allure TestOps (тестовые случаи, запуски, проекты).

Плагины для Visual Studio Code

Playwright Test for VSCode

Это расширение интегрирует Playwright в ваш рабочий процесс VS Code

code spell checker

Базовая проверка орфографии, которая хорошо работает с кодом и документами.

docker

Расширение Docker позволяет легко создавать, управлять и развертывать контейнерные приложения из Visual Studio Code. Он также обеспечивает отладку Node.js, Python и . NET внутри контейнера.

ESLint

Интегрирует ESLint в VS Code. Если вы новичок в ESLint, проверьте документацию.

xml

Это расширение VS Code обеспечивает поддержку создания и редактирования XML-документов на основе языкового сервера LemMinX XML.

better comments

Расширение Better Comments поможет вам создавать более удобные для человека комментарии в вашем коде. Комментарии разных цветов

Inline Parameters for VSCode

Расширение для Visual Studio Code, которое добавляет встроенные аннотации параметров при вызове функции.

Bracket Pair Colorization Toggler

Расширение VS Code, которое дает вам простую команду для быстрого переключения глобальной настройки «Раскрашивание пары скобок, добавленной в VS Code v1.60. Более понятные фигурные скобки

Git Graph

Просмотрите Git Graph вашего репозитория и легко выполняйте действия Git из графика. Настраивается так, чтобы выглядеть так, как вы хотите!

indent-rainbow

Это расширение раскрашивает отступ перед вашим текстом, чередуя четыре разных цвета на каждом шаге. Некоторые могут найти это полезным при написании кода для Python, Nim, Yaml и, вероятно, даже типов файлов, которые не зависят от отступов.

Postman

Расширение Postman VS Code позволяет разрабатывать и тестировать ваши API в Postman непосредственно из Visual Studio Code.

Todo+

Todo+ (для списка дел/правок и т.д)

Allure TestOps Support

Интеграция с Allure TestOps

Плагины для IntelliJ IDEA

Allure TestOps Support

Интеграция с Allure TestOps

checkStyle-IDEA

Этот плагин обеспечивает сканирование файлов Java как в режиме реального времени, так и по требованию с помощью Checkstyle из IDEA.

gradle

Обеспечивает интеграцию с Gradle для автоматизации создания, тестирования, публикации и развертывания пакетов программного обеспечения.

lombok

Плагин, который добавляет первоклассную поддержку Project Lombok

JUnitGenerator V2. 0

Этот плагин генерирует тесты JUnit из меню «Создать...», щелкнув правой кнопкой мыши, сосредоточившись на классе java. Выходной код модульного теста можно настроить с помощью предоставленного шаблона скорости для форматирования кода на основе исходного класса.

Если модульный тест создается там, где он уже существует, пользователю предлагается перезаписать или объединить. Операция слияния позволяет пользователю выборочно создавать содержимое целевого файла.

GitToolBox

Расширяет интеграцию Git дополнительными функциями

Прочие инструменты

Наименование инструмента

Используется для решения задачи

Node

Кросс-платформенная среда выполнения JavaScript с открытым исходным кодом.

Camunda

Инструмент отображения бизнес-процессов и выполнения операций по этим бизнес-процессам в схематическом виде

Заключение

Сегодня я поделился инструментами и плагинами, которые мы используем в рамках тестирования в Альфа Банке. Вы узнали, что мы работаем с разными платформами и технологиями, и что является Full-stack QA, которые объединяют в себе знания и навыки quality assurance инженера и автоматизатора тестирования. Не пропустите мои статьи о наших инструментах автоматизации тестирования, управления тестированием и тестирования производительности. Я надеюсь, что это будет очень интересно и полезно для вас. А чтобы не пропустить ничего важного и быть в курсе всех новостей и событий Альфа Банке в Беларуси, подписывайтесь на наш telegram-канал Альфа-Среда. Для меня важен ваш фидбек, делитесь им в комментариях.

Комментарии (10)


  1. Griwski
    11.10.2023 09:08
    +2

    Хорошо, что вы перечислили софт. Хотелось бы узнать на примере задач и решений, как вы это используете. Иначе зачем это здесь?


    1. VadimLunin Автор
      11.10.2023 09:08
      +2

      В следующих статьях буду рассказывать подробнее


  1. almator
    11.10.2023 09:08

    Одной жизни хватит чтобы в е это знать на профессиональном уровне?


    1. agolubenk
      11.10.2023 09:08
      +1

      Как показал жизненный опыт, достаточно)

      Но не на всё...


      1. almator
        11.10.2023 09:08

        Вы подарили мне надежду????


    1. gigimon
      11.10.2023 09:08

      там половина изучается за 20 минут, другая часть не используется вместе, а третью, если один изучил, остальные и так понятны будут


  1. Nikitkin
    11.10.2023 09:08

    Чем дибивер для вас предпочтительнее датагрпа


    1. VadimLunin Автор
      11.10.2023 09:08

      Основной плюсы у DBeaver это то что у него есть бесплатная версия и он достаточно прост в использовании


      1. SaintMihail
        11.10.2023 09:08

        А вы не пробовали покупать сотрудникам интележ идею ультимейт, которая заменяет кучу клиентов для подключениям к СУБД?


  1. Pryanik71
    11.10.2023 09:08

    А расскажите про инструменты тестирования логики вашего мобильного приложения.

    Есть уведомления, которые постоянно висят непрочитанными. Чтобы сбросить счетчик на иконке-нужно кликнуть на уведомление. Уведомление автоматом начинает оформление кредита. Я понимаю, что ничего личного, только бизнес. Но это как-то за гранью.