Сразу вывод

  • Выбирайте Postman, если вы исследуете API, документируете его или делитесь воспроизводимыми запросами с людьми, которые не будут писать тестовый код.

  • Выбирайте TestSprite, если вам нужно покрытие API, которое генерируется из того, что сервис действительно предоставляет, и в котором работа с сессией, состоянием, порядком выполнения и очисткой встроена в сам продукт.

  • Используйте оба, если ваша коллекция действительно приносит пользу. Оставьте её для исследования и документации, а регрессию доверьте сгенерированному покрытию.

Бок о бок

ПараметрPostmanTestSprite
Главная сильная сторонаИсследование, документирование и обмен запросамиГенерация и поддержка покрытия того, что предоставляет сервис
Как строится покрытиеКто-то добавляет каждый запрос и пишет проверки в скриптахГенерируется из спецификации или по итогам этапа обнаружения, затем дорабатывается
Работа с сессией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. Но как только коллекция становится регрессионным набором, сессия, захваченные значения, порядок и очистка превращаются во фреймворк, который вы поддерживаете вручную. Оставьте оба инструмента и позвольте каждому делать то, что у него получается лучше всего.