En

JazzTeam Software Development Company

Agile Java Development

Автоматизированное тестирование Приложения по Управлению Продуктами и Услугами мобильного оператора

Краткое описание проекта: “Приложение по Управлению Продуктами и Услугами” (далее – Приложение) работает в составе группы приложений, которые обеспечивают бизнес-процессы телеком- компаний по подключению/отключению услуг, информированию клиентов, списанию денежных средств абонентов для мобильных операторов.

Приложение состоит из 2-ух сервисов:

  1. Первый сервис, Менеджер Состояний” – получает информацию из смежных сервисов об изменениях, касающихся абонентов, и принимает решение о подключении/отключении тех или иных продуктов/пакетов услуг. Например, абонент подключил себе тарифный план, предусматривающий работу базового пакета услуг (звонки, смс) даже при большой задолженности. В таком случае, когда Менеджер Состояний получит информацию, что баланс абонента пересек допустимый порог по задолженности, при котором нужно отключить услуги до погашения – он отправит запрос в смежную подсистему для подключения этому абоненту базового пакета услуг.
  2. Второй сервис, Загрузчик – выполняет так называемый “холодный старт” Менеджера Состояний. Для того, чтобы Менеджер Состояний мог начать работать с другим сторонними сервисами, для него необходимо загрузить реальные данные в кэш. Для этого и используется Загрузчик. Загрузчик выгружает абонентов, их текущее состояние и подключенные услуги с тарифными планами из баз данных других сервисов, находящихся в системе, и загружает их в кэш Приложения.

Описание работы Приложения проиллюстрировано на схеме ниже:

Описание работы Приложения

Описание работы Менеджера Состояний

Отличительной особенностью архитектуры Менеджера Состояний является возможность гибкой настройки – заказчик может самостоятельно настраивать правила по подключению/отключению продуктов и услуг без внесения изменений в код ядра самого сервиса.

Это достигается за счет того, что описание правил хранится в Groovy скриптах в Zookeeper. При добавлении нового скрипта с правилами, Менеджер Состояний автоматически загружает его к себе в память.

Информация об абонентах, подключенных продуктах и их состояниях хранится в NoSQL базе данных Couchbase.

Когда Менеджер Состояний получает по асинхронному каналу (RabbitMq) событие об изменении абонента, он отправляет REST запрос на подключение продукта абоненту, исходя из имеющихся правил и наличия абонента и его услуг в Couchbase. После этого внешний сервис, отвечающий за подключение продуктов абоненту, отправит запрос в Менеджер Состояний, на основании которого подключенный/отключенный продукт сохранится в Couchbase.

Описание работы Загрузчика

Загрузчик также имеет возможность, которая позволяет выполнять гибкую настройку без внесения изменений в код ядра. Гибкая настройка реализуется за счет выполнения
правил, по которым следует выгружать абонентов и услуги из внешних источников, которые, в свою очередь, описаны в Groovy скриптах и лежат в zookeeper. При добавлении нового скрипта с правилами Загрузчик автоматически сохраняет его к себе в память.

Для инициализации выгрузки абонентов и услуг пользователь выполняет REST запрос к загрузчику. На основании имеющихся правил, загрузчик выполняет одну из двух возможных операций:

  1. Выгружает определенных абонентов из внешней БД Oracle и сохраняет их к себе в БД Couchbase.
  2. Выполняет REST запрос на выгрузку продуктов абонента из внешнего Сервиса Выгрузки Продуктов. После успешного выполнения запроса Сервис Выгрузки Продуктов начинает отправлять данные по продуктам в Kafka, откуда Загрузчик сохраняет их в БД Couchbase.

Обязанности команды JazzTeam

Обеспечение автоматизации тестирования проекта с нуля

Необходимыми требованиями для тестирования были:

Разработка тестового фреймворка

Для автоматизированного тестирования необходимо было разработать тестовый фреймворк, в котором подготовлены все необходимые функции для написания автотестов. Тестовый фреймворк должен был уметь работать со всеми сервисами, с которыми интегрируется СУПУ (Couchbase, Kafka, Oracle DB, Zookeeper, Mock Server, REST).

Сам тестовый проект был реализован на базе JUnit5 и SpringBootTest. Для поднятия сервисов в докере использовалась библиотека TestContainers. Во время сборки перед запуском тестов был реализован парсинг YML файлов, в результате которого в Zookeeper создавались все необходимые Groovy скрипты и в контейнер Приложения помещался настроечный файл с настройками подключения его к сторонним сервисам.

Архитектура тестового фреймворка была реализована следующим образом:

Архитектура тестового фреймворка

Проведение комплексного тестирования

Совместно с командами, реализующими другие сервисы, необходимо было провести комплексное тестирование на стендах, близких по конфигурации к окружению заказчика.

Комплексное тестирование включало следующий список задач:

  1. Разработка комплексных тестовых сценариев. Описание сценариев велось в TestRail. Всего было описано около десятка сценариев.
  2. Консультирование других команд по работе Менеджера Состояний и настройке.
  3. Выполнение тестовых сценариев, заведение багов на разработчиков всех команд при выявлении дефектов в ходе тестирования.

Используемые технологии:

Infrastructure: Jira, Confluence, MobaXTerm, Postman, VRA, Maven, Gradle, git, TeamCity, TestRail, Stash, Oracle Sql, Couchbase.
Stack: Java 8, Bash, Groovy(basic), SQL, RabbitMq, Zookeeper, Kafka, Docker, JSON, YAML, Regular expressions, WireMockServer, Lombok.
Test automation libraries: Junit5, TestContainers, SpringBootTest, Rest Assured.

Особенности проекта:

Результат проекта:

Достижения компании на проекте: