Момент, когда требование меняется
Отправка запроса отвечает на вопрос «что этот эндпоинт делает прямо сейчас». Проверка отвечает на вопрос «делает ли этот эндпоинт по-прежнему то, что должен». Второму нужны три вещи, которых не требует первое: место, где живёт ожидаемый результат, способ запускаться без человека и способ замечать, что ответ изменился.
Именно поэтому инструменты здесь выглядят по-разному, и об этом стоит сказать прямо: многие команды пытаются прийти к проверкам, просто складывая запросы в закладки.
Что должна добавить альтернатива ReqBin
| Критерий | Инструменты для разовых запросов | TestSprite |
|---|---|---|
| Что вы получаете | Ответ, который вы читаете | Вердикт относительно ожидаемого результата |
| Где живут ожидания | У вас в голове | В тест-кейсе, под версионным контролем |
| Кто запускает | Вы — когда вспомните | Пайплайн — при каждом изменении |
| Многошаговые сценарии | Значения переносятся между вкладками вручную | Dynamic Variables и Dependency Chains |
| Очистка | Всё, что вы не забыли удалить | Auto-Cleanup, привязанный к запуску |
| Уведомление | Нет | Комментарий в пул-реквесте или проверка на коммите |
Три вопроса, которые покажут, что вам нужно
Понадобится ли кому-то ещё это запускать? Если да — этому придётся покинуть ваш браузер.
Есть ли в сценарии больше одного вызова? Как только значение приходится передавать из одного запроса в другой, ручное копирование перестаёт масштабироваться.
Хотели бы вы узнать, если бы это сломалось ночью? Это и есть граница между инструментом и проверкой.
Одно «да» означает, что вы переросли инструмент для отправки запросов. Три — что переходить нужно было уже давно.
Где не нужно переплачивать
Если вам действительно нужно лишь время от времени отправить запрос — продолжайте так и делать. ReqBin и curl прекрасно справляются, и ничто здесь не говорит против них. Переходить стоит тогда, когда к запросу привязан ожидаемый результат, — и не раньше.
Как оценивать любой из вариантов
Сломайте что-нибудь намеренно. Внесите настоящую регрессию — например, сохранение, которое больше ничего не сохраняет, — и посмотрите, что сообщит каждый кандидат. Упадёт ли проверка, назовёт ли она реальное расхождение и сможет ли тот, кто будет чинить, начать прямо с этого вывода, не восстанавливая всю картину заново. Инструмент, который рапортует об успехе по прогону, так и не дошедшему до своих ассертов, провалил единственный тест, который имеет значение.
Промежуточный шаг, который все пропускают
Между отправкой запроса из вкладки браузера и разворачиванием полноценного набора тестов есть промежуточный вариант, и именно потому, что его пропускают, многие команды задерживаются на разовых инструментах дольше, чем следовало бы.
Этот шаг — записать ожидаемый результат хоть куда-нибудь. Текстовый файл с указанием эндпоинта, того, что вы отправили, и того, что должно вернуться, — это ещё не автоматизация, но он уже даёт две вещи, которых нет у вкладки браузера: его может запустить кто-то другой, и по нему видно, изменился ли ответ. Большинству команд, которые думают, что им нужен инструмент, нужно именно это, — и на то, чтобы это выяснить, уходит десять минут.
По-настоящему больше требуется в тот момент, когда запускать это руками просто перестают. Это проблема расписания, а не выразительности, — и именно её решает переход к полноценному набору тестов.
С чего начать
Терминал
npm install -g @testsprite/testsprite-cli
testsprite setup
Для тех, кто не хочет локальной установки, дашборд закрывает те же задачи, а полный набор команд описан в репозитории CLI.
Два пути, и выбор на самом деле сводится к тому, кто владеет пайплайном. Подключение GitHub App из дашборда не требует вообще никаких изменений в репозитории, потому что реагирует на деплой, который ваша сборка и так создаёт. Добавление шага GitHub Actions помещает проверку в репозиторий, где она проходит ревью наравне с остальной сборкой.
Что вы получаете, когда запрос становится проверкой
Место, где живёт ожидаемый результат, триггер, которым являетесь не вы, и уведомление, когда ответ изменился. Эти три вещи и есть вся разница — и именно их даёт TestSprite.
Многошаговые сценарии перестают быть упражнением в копировании: Dynamic Variables переносят идентификатор из одного вызова в следующий, а Dependency Chains определяют, что должно произойти раньше. Auto-Cleanup удаляет то, что создал запуск, поэтому десятый запуск ведёт себя так же, как первый.
Путь туда короткий. Направьте проект на ваш базовый URL, дайте обнаружению перечислить эндпоинты, проверьте план и подключите всё к репозиторию, чтобы запуск шёл при каждом изменении. Если вам действительно нужно лишь изредка отправить запрос — продолжайте так и делать; всё это для того момента, когда к запросу привязан ожидаемый результат.
Подойдёт ли curl в качестве альтернативы?
Для отправки запросов — да, и он лучше сочетается со скриптами. Ограничение у него то же: нет ожидаемого результата, нет расписания, нет уведомлений.
Нужен ли аккаунт?
Для разовых запросов — нет. Для проверок, которые выполняются без вас, что-то должно хранить ожидаемый результат и историю, а значит, нужен сервис.
А что насчёт общей коллекции Postman?
Разумный промежуточный шаг. Вы получаете запросы, которыми можно делиться, а сессия, порядок выполнения и очистка превращаются в скрипты, которые вам придётся поддерживать.
Сколько настройки нужно до первой проверки?
Направьте проект на ваш базовый URL, дайте обнаружению перечислить эндпоинты, проверьте план. Именно проверка плана требует вашего суждения.
Можно ли тестировать приватный API?
Нужна доступная цель. Сервису в приватной сети понадобится открытое окружение для API-прогонов.
Запрос становится проверкой, когда к нему привязан ожидаемый результат.
ReqBin хорош, чтобы отправить запрос. Альтернатива ReqBin нужна тогда, когда к запросу привязан ожидаемый результат, когда он состоит из нескольких вызовов или когда он должен выполняться без вас. Ниже этой границы не берите лишнего.