Сразу вывод
-
Выбирайте Postman, если вы исследуете API, документируете его или делитесь воспроизводимыми запросами с людьми, которые не будут писать тестовый код.
-
Выбирайте TestSprite, если вам нужно покрытие API, которое генерируется из того, что сервис действительно предоставляет, и в котором работа с сессией, состоянием, порядком выполнения и очисткой встроена в сам продукт.
-
Используйте оба, если ваша коллекция действительно приносит пользу. Оставьте её для исследования и документации, а регрессию доверьте сгенерированному покрытию.
Бок о бок
| Параметр | Postman | TestSprite |
|---|---|---|
| Главная сильная сторона | Исследование, документирование и обмен запросами | Генерация и поддержка покрытия того, что предоставляет сервис |
| Как строится покрытие | Кто-то добавляет каждый запрос и пишет проверки в скриптах | Генерируется из спецификации или по итогам этапа обнаружения, затем дорабатывается |
| Работа с сессией | Pre-request-скрипты, которые вы пишете и поддерживаете | Auto-Authentication, настраивается один раз |
| Значения между вызовами | Переменные окружения, задаваемые в скриптах | Dynamic Variables, подставляемые из ответа |
| Порядок выполнения | Порядок в коллекции, поддерживается вручную | Выводится из того, что каждому тесту нужно и что он создаёт |
| Очистка | Только то, что вы напишете в скрипте | Auto-Cleanup, привязанная к тому, что создал прогон |
| Когда подходит лучше всего | Исследование, документация, ручная проверка | Широкое регрессионное покрытие без выделенного QA |
Механика этих четырёх описана в документации по тестированию API.
В чём Postman действительно лучше
Исследование незнакомого API. Ничто не сравнится с ручными запросами к эндпоинтам, пока вы только разбираетесь, что они делают.
Передача сценария воспроизведения. Коллекция, которую можно импортировать и запустить, — самый понятный баг-репорт, какой может получить команда, отвечающая за API.
Живая документация. Запросы, которые одновременно служат примерами и лежат рядом с тем API, который они описывают.
Где коллекции со скриптами обходятся дорого
Любая серьёзная коллекция со временем обрастает слоем pre-request- и тестовых скриптов, которые работают с токенами, извлекают идентификаторы, задают порядок и выполняют очистку. Это небольшой фреймворк на JavaScript, встроенный в инструмент, который фреймворком быть не задумывался, и обычно понятный лишь одному человеку.
Это работает. Цена в том, что человек, который в этом разбирается, сам становится зависимостью, а коллекцию, когда она краснеет, чаще отправляют в карантин, чем чинят.
Когда коллекция и есть документация
Есть случай, когда коллекция делает то, чего не заменит ни один сгенерированный набор тестов, — и её стоит защитить, а не убрать ради консолидации.
Если вашу коллекцию импортируют внешние потребители, чтобы разобраться в вашем API, то это документация с кнопкой запуска, и её ценность в том, что она понятна постороннему. А значит, её нужно держать небольшой, тщательно отобранной и построенной на примерах — то есть ровно наоборот тому, что требуется регрессионному набору. Коллекция, разросшаяся до четырёхсот запросов со скриптовой подготовкой, эту задачу уже не решает и, скорее всего, не решает давно.
Чистое разделение выглядит так: коллекция — это парадный вход, а страховочной сеткой пусть будет что-то другое. Эти задачи тянут в разные стороны, и попытка заставить один артефакт делать и то и другое — причина того, почему столько коллекций в итоге не оказываются ни читаемыми, ни надёжными.
Как использовать оба
Оставьте коллекцию для исследования, документации и воспроизведения багов. Пусть сгенерированное покрытие отвечает за эндпоинты и интеграционные цепочки, которые должны продолжать работать. На практике они почти не пересекаются, потому что отвечают на разные вопросы.
Если вы выбираете инструмент, сломайте что-нибудь намеренно
Внесите настоящую регрессию — например, кнопку сохранения, которая больше ничего не сохраняет, — и посмотрите, что сообщит каждый инструмент. Три вопроса: упадёт ли тест, назовёт ли падение реальное расхождение и сможет ли человек или агент, который будет это чинить, начать прямо с этого вывода, не восстанавливая картину заново. Инструмент, который сообщает об успехе прогона, так и не дошедшего до своих проверок, провалил единственный тест, который имеет значение.
Подключите репозиторий из панели управления — и прогоны будут стартовать от того деплоя, который вы и так собираете, либо вместо этого добавьте отдельный шаг в свой собственный процесс. Оба варианта описаны в репозитории CLI.
Что берёт на себя TestSprite и чего не должна делать коллекция
Широкое регрессионное покрытие, где четыре проблемы состояния решены на уровне продукта: Auto-Authentication для сессий, Dynamic Variables для значений, которые существуют только во время выполнения, Dependency Chains для порядка, Auto-Cleanup для того, что создал прогон. Именно из-за них коллекция превращается в проект по написанию скриптов.
Покрытие строится из API Discovery по работающему сервису плюс вашей спецификации, что даёт сценарии ошибок и граничные случаи, которые собранные вручную коллекции пропускают. Уточняете вы его обычным языком, а не в pre-request-скриптах.
Выигрыш в том, что ваша коллекция снова может заниматься тем, в чём она действительно хороша: исследованием, документированием и передачей сценария воспроизведения, который собеседник импортирует и запустит. И никому больше не нужно быть тем самым человеком, который разбирается в скрипте обновления токена.
Можно ли импортировать нашу коллекцию?
Относитесь к существующей коллекции как к описанию того, что у вас есть, а не как к тестам, которые нужно перенести. Полезна в ней прежде всего опись эндпоинтов.
Достаточно ли Newman для CI?
Он прекрасно запускает коллекции в CI. Вопрос не в средстве запуска, а в том, кто поддерживает скрипты, отвечающие за сессию, состояние, порядок и очистку.
А как насчёт мониторов Postman?
Они хороши для проверки доступности и простых контрактных проверок. Но они не заменяют покрытие, которое учитывает зависимости между вызовами.
Потеряем ли мы свою документацию?
Нет. Ничто из описанного не заменяет роль документации, а это как раз одна из тех вещей, в которых Postman действительно лучший.
Сколько покрытия мы получим в первый же день?
Этап обнаружения вместе со спецификацией даёт план, охватывающий всю поверхность API. Просмотрите его и уберите административные и внутренние маршруты, прежде чем что-либо запускать.
Держите коллекцию для исследования, а не для регрессии.
Postman — лучшее место, чтобы исследовать и документировать API. Но как только коллекция становится регрессионным набором, сессия, захваченные значения, порядок и очистка превращаются во фреймворк, который вы поддерживаете вручную. Оставьте оба инструмента и позвольте каждому делать то, что у него получается лучше всего.