Тестирование WebSocket API при помощи Postman

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

Веб-сокеты это технология, позволяющая открыть постоянное двунаправленное сетевое соединение между браузером пользователя и сервером. С помощью его API вы можете отправить сообщение на сервер и получить ответ без выполнения http запроса, причём этот процесс будет событийно-управляемым.

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

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

Расскажу немного как использовать постман для тестирования вебсокет и какие есть ограничения на сегодня (октябрь 2022 года)

Для начала пару слов о состояниях подключения. Их два - connected и disconnected. У рестовых запросов получение ответа занимает доли секунды, поэтому сначала немного непривычно контролировать этот момент. Например, если вы меняете настройки окружений, то в состоянии коннекта эти настройки не применятся, и все новые запросы будут идти со старыми переменными из того окружения, которое было выставлено в момент подключения коннекта. То есть, чтобы применить другое окружение, нужно сначала разорвать соединение, переключить окружение, опять включить соединение.

websocket postman

 

Это первое отличие от рестового сервиса. Второе - хранение запросов. Здесь нет привычного нам body, запросы отправляются через message, которых может храниться много в рамках одного запроса. Нюанс - сохранить сообщение можно только без указания названия, потом можно переименовать готовое сообщение. Ограничение - месседжи в рамках списка нельзя менять местами или искать поиском, поэтому если их хранится много, не очень удобно в них копаться.

websocket postman

 

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

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

Вот пример. Я отправила два запроса, сначала 1 (на него получено одно сообщение) потом 2 (на него получены 3 сообщения). В окне первого запроса отображается 4 сообщения в ответе, в окне второго запроса ни одного (с желтым значком отображается запрос, с синим - ответы)

websocket postman

А вот окно второго запроса, видно что сообщений нет. Первое время меня ставило в тупик - в логах сообщения отправлены, а в постмане они не отображаются. В итоге я находила эти ответы в рамках запроса, в котором открывался коннекшен ("где коннекшен первым открыли, там и спрашивайте!")

websocket postman

Главное правило - разрывайте соединения после  того, как получили нужные ответы. Если вы работаете с одним и тем же запросом - можно и не закрывать, посылать один и тот же запрос много раз, но если меняете - делайте дисконнект.

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

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

websocket postman

То есть, для создания коллекции WS вам нужно делать ее отдельно, не в рамках рест коллекций.

А еще вы не можете экспортировать коллекцию, чтобы передать ее кому-то, можете только сделать шеринг, что не очень удобно (даже совсем неудобно - получается, что работать с wss в постман можно только в команде, или каждый человек должен руками создавать свою коллекцию с нуля).

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

websocket postman


© 2021 YU-GO.RU