автор Малаховская Екатерина
Что такое Message Bus?
Message Bus — это архитектурный паттерн, который используется для обмена данными между различными компонентами системы. Он организует асинхронное взаимодействие между сервисами или приложениями с помощью сообщений, которые передаются через центральную шину (message bus). Этот подход помогает декомпозировать сложные системы, улучшить масштабируемость и снизить связанность компонентов, что делает их более независимыми друг от друга.
Как работает Message Bus?

Отправитель (Producer) — отправляет сообщение в шину, но не знает, кто его получит.

Шина (Message Bus) — это центральный компонент, через который проходят все сообщения. Она распределяет сообщения между заинтересованными компонентами.

Получатель (Consumer) — получает сообщения, которые ему нужны, и обрабатывает их.

Важно то, что отправители и получатели могут работать независимо друг от друга. Шина сообщений обеспечивает гибкость и надежность в сложных распределённых системах.

Пример использования Message Bus

Представьте интернет-магазин. Когда покупатель оформляет заказ:
  • Сервис оформления заказов отправляет сообщение о новом заказе в Message Bus.
  • Сервис оплаты получает сообщение и начинает обработку платежа.
  • Сервис склада проверяет наличие товара и готовит его к отправке.
  • Сервис уведомлений отправляет клиенту письмо с подтверждением заказа.
Все эти компоненты работают параллельно и могут быть физически расположены на разных серверах, но они связаны через одну шину сообщений.

Как тестировщику подходить к тестированию системы с использованием Message Bus?

Тестирование систем, использующих Message Bus, имеет свои особенности. Вот несколько ключевых подходов:

1. Понимание бизнес-процессов и взаимодействий

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

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

2. Тестирование отправки сообщений

Необходимо убедиться, что отправители (Producers) корректно формируют и отправляют сообщения в шину. Тестировщик должен проверить:
  • Соответствует ли структура и содержание сообщений требованиям.
  • Происходит ли отправка сообщений в нужные моменты.

Пример: Проверить, что при успешной оплате заказа сервис отправки товаров получает сообщение для начала процесса доставки.
3. Тестирование получения сообщений

Со стороны получателей (Consumers) нужно убедиться, что они правильно обрабатывают поступающие сообщения. Важно проверить:
  • Обрабатываются ли сообщения корректно.
  • Как система реагирует на некорректные или неполные сообщения.

Пример: Проверить, что сервис оплаты обрабатывает все сообщения о новых заказах и отправляет корректные ответы.

4. Проверка обработки ошибок

Асинхронные системы часто сталкиваются с различными видами сбоев. Тестировщик должен проверить:
  • Как система реагирует на недоставленные или поврежденные сообщения.
  • Реализована ли повторная попытка обработки сообщения в случае неудачи.
  • Что происходит, если один из сервисов временно недоступен.

Пример: Проверить, что если сервис склада недоступен, сообщение о новом заказе не теряется и будет обработано, когда сервис снова станет доступен.
5. Мониторинг и логирование

Для тестирования систем с использованием Message Bus важно уметь анализировать логи и отслеживать прохождение сообщений по системе. Это позволяет находить проблемы на этапе интеграции и отслеживать возможные сбои.

Пример: Проверять логи сообщений и состояние очередей, чтобы убедиться, что все сообщения корректно доставляются и обрабатываются.

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

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

Пример: Запустить сценарий с большим количеством заказов и проверить, как система справляется с их параллельной обработкой.

7. Конечное состояние системы

При тестировании важно убедиться, что после обработки сообщений все сервисы пришли в корректное состояние. Это значит, что в результате обмена сообщениями все операции выполнены успешно, и данные между сервисами синхронизированы.

Пример: Проверить, что после оформления заказа товары корректно списываются со склада, платеж подтверждается, а клиент получает уведомление.

Заключение

Message Bus — это мощный инструмент для создания масштабируемых и распределённых систем. Тестировщику необходимо учитывать специфические аспекты асинхронного взаимодействия, такие как корректная отправка и получение сообщений, обработка ошибок и мониторинг системы. Понимание бизнес-логики и взаимодействия между сервисами помогает эффективнее разрабатывать тестовые сценарии и выявлять потенциальные проблемы на ранних этапах.
Хотите лучше разбираться в тестировании и узнать много примеров из практики от опытных преподавателей - приходите на наш курс В тестировщики с нуля!
В тестировщики с нуля
  • 320$
    Lite
    Включает в себя:
    - Пакет В тестировщики с нуля
    - Интенсив по GIT
    - 1 месяц стажировки
  • 400$
    Medium
    Включает в себя:
    - Пакет В тестировщики с нуля
    - Интенсив по GIT
    - Доступ к вебинарам
    - 2 месяца стажировки
  • 540$
    Maximum
    Включает в себя:
    - Пакет В тестировщики с нуля
    - Интенсив по GIT
    - Доступ к вебинарам
    - Курс Тестирование API
    - 4 месяца стажировки
Учимся отличать тест-план, тест-кейсы и чек-листы на примерах.
Полезные ресурсы и советы для поиска работы
Выпускник школы QaLearning рассказывает про свой путь обучения, поиска работы и прохождения собеседований. Вы получите много дельных советов!