Шпаргалка: Тестирование WebSocket

Интерактивное руководство по WebSocket для QA инженеров: от основ до симуляции тестирования в Postman.

Что такое WebSocket?

WebSocket — это протокол, который обеспечивает постоянное, двустороннее соединение между клиентом и сервером. В отличие от HTTP, где клиент должен постоянно запрашивать новые данные, WebSocket позволяет серверу отправлять данные клиенту в любой момент.

Это как иметь постоянную телефонную линию вместо того, чтобы постоянно перезванивать, чтобы спросить "Есть новости?".

HTTP Polling (Периодические запросы)

Клиент
Сервер

Клиент вынужден постоянно "дергать" сервер.

WebSocket (Постоянное соединение)

Клиент
Сервер

Сервер сам отправляет данные, когда они появляются.

Работа с WebSocket в Postman

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

wss://your-server.com
Disconnected

Messages

New Message

Жизненный цикл сообщения

В системах реального времени важно отслеживать статус сообщения. Вот как сервер может информировать клиента об этом через WebSocket.

Отправка
// Клиент отправляет сообщение
Отправлено
{"event": "status_update", "messageId": "msg123", "status": "SENT"}
Доставлено
{"event": "status_update", "messageId": "msg123", "status": "DELIVERED"}
Просмотрено
{"event": "status_update", "messageId": "msg123", "status": "SEEN"}

Стратегии тестирования

Тестирование WebSocket отличается от REST и требует внимания к состоянию соединения и асинхронной природе обмена данными.

Тестирование соединения (Handshake)

  • Позитивные: Успешное подключение с корректным URL, заголовками и параметрами аутентификации. Проверка ответа сервера `101 Switching Protocols`.
  • Негативные: Попытка подключения к неверному URL, без аутентификации, проверка корректной ошибки (например, `401 Unauthorized`).

Тестирование отправки и получения сообщений

  • Отправка сообщений в корректном формате (например, валидный JSON).
  • Отправка сообщений в некорректном формате (проверка, что сервер не "падает").
  • Проверка, что клиент получает сообщения от сервера в правильном формате и порядке, включая системные уведомления (ping/pong).

Тестирование разрыва соединения

  • Что происходит, если клиент закрывает соединение? Проверить код закрытия (например, `1000 Normal Closure`).
  • Тестирование механизма переподключения (reconnection) после обрыва по таймауту или из-за ошибки сети.

Практический симулятор: Чат

Это симулятор чата на WebSocket. Сначала установите соединение, а затем начните обмениваться сообщениями. Это демонстрирует ключевое отличие от HTTP: постоянное соединение для обмена данными в реальном времени.

Статус: Отключено
Пользователь 1 (Вы)
Пользователь 2 (Собеседник)