Зачем тестировщику понимать работу брокеров сообщений (Message Brokers)?

«Зачем тестировщику понимать работу брокеров сообщений (Message Brokers)?» — вопрос из категории Архитектура, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Понимание брокеров сообщений (Kafka, RabbitMQ, ActiveMQ) критично для тестирования распределённых и микросервисных систем, где компоненты общаются асинхронно через очереди.

Ключевые области тестирования с использованием брокеров:

  1. Интеграционное тестирование: Проверка корректной отправки, маршрутизации и получения сообщений между сервисами.
  2. Тестирование отказоустойчивости:
    • Что происходит, если потребитель (consumer) недоступен? (Сообщения накапливаются в очереди).
    • Как система восстанавливается после падения брокера?
    • Проверка механизмов подтверждения доставки (acknowledgement).
  3. Нагрузочное тестирование: Оценка пропускной способности очереди и задержек при пиковых нагрузках.
  4. Тестирование порядка и гарантий доставки: (например, «точно-в-одном-экземпляре» — exactly-once delivery).

Пример проверки отправки сообщения с помощью RabbitMQ и библиотеки pika:

import pika

# Установка соединения
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

# Объявление очереди (идентично должно быть на стороне потребителя)
channel.queue_declare(queue='orders_queue', durable=True)  # durable сохраняет очередь после перезапуска брокера

# Публикация сообщения
message_body = '{"order_id": 123, "status": "created"}'
channel.basic_publish(
    exchange='',
    routing_key='orders_queue',  # имя очереди
    body=message_body,
    properties=pika.BasicProperties(
        delivery_mode=2,  # делает сообщение персистентным
    )
)
print(f" [x] Sent '{message_body}'")
connection.close()

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