Почтальон - отличный инструмент тестирования API для разработчиков, тестеров QA и тестеров на проникновение. Его пользовательский интерфейс позволяет легко отправлять HTTP-запросы и видеть ответы, но это также отличный инструмент для автоматизации.

Postman позволяет вам писать тесты chai.js в Javascript, которые будут запускаться после каждого ответа и позволят вам делать утверждения о теле ответа. Эти тесты также можно запускать без управления с помощью Newman и добавлять в конвейер сборки, но я расскажу об этом позже.

Тестовая песочница Postman содержит несколько полезных библиотек, функций и объектов для тестирования. Их список можно найти на справочной странице Postman Sandbox.

Контрактные испытания

Контрактные тесты позволяют убедиться, что схемы запросов и ответов API не изменились. Это особенно полезно при работе над мобильным приложением большой командой с отдельными разработчиками мобильных приложений и API.

Сначала вы должны сгенерировать схему JSON для тела ответа. Если вы не хотите делать это вручную, вы можете использовать онлайн-генератор, например, на jsonschema.net. Для этой демонстрации я проведу тесты, которые подтвердят, что контракт Alpha Vantage API Stock Quote не изменился.

Удобно хранить схемы, базовые URL-адреса и другие общие переменные, используя переменные среды Postman, и анализировать JSON в каждом тесте, чтобы несколько тестов могли повторно использовать одну и ту же схему. Postman’s Sandbox поставляется с tv4, библиотекой проверки схемы JavaScript, которая берет на себя всю тяжелую работу. Все, что от вас требуется, - это вызвать функцию tv4.validateResult.

Функция вернет объект со свойством valid, которое будет истинным, если объект соответствует схеме.

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

Вы можете протестировать этот образец в Postman с коллекцией.

Тесты безопасности

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

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

Поскольку тюрьма реальна, я продемонстрирую этот пакет, используя песочницу Google Gruyere.

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

В Google Gruyere существует аутентифицированная сохраненная XSS-уязвимость, при которой пользователь может отправить код JavaScript во фрагменте и заставить его выполнить любой, кто просматривает домашнюю страницу его экземпляра.

Во-первых, нам нужно войти в систему и получить файл cookie аутентификации.

Почтальон позволяет вам устанавливать переменные среды с помощью функции pm.environment.set. Это очень полезно для тестовых случаев, которые зависят от ответов на предыдущие запросы, таких как заголовки аутентификации и номера учетных записей. Благодаря этому тесты могут быть более динамичными и сократить использование жестко закодированных данных.

Поскольку это приложение использует файлы cookie, мы помещаем их в переменную среды «cookie».

Куки-файлами можно управлять, установив в заголовке куки-файлов переменную среды «cookie» Postman. Это будет автоматически включать в каждый запрос правильное значение.

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

Наконец, мы проверяем, что некодированные полезные данные JavaScript, которые запускают уязвимость, были очищены. Как только разработчики исправят эти ошибки, этот набор тестов пройдет.

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

Если вы хотите поиграть с этой коллекцией, вы можете скачать ее здесь, а среду - здесь.

Ньюман и ваш конвейер

Чтобы по-настоящему увидеть преимущества автоматических тестов Postman, лучше всего добавить их на этапе сборки с помощью программного обеспечения конвейера сборки непрерывной интеграции. Newman позволяет запускать тестовые коллекции Postman всякий раз, когда код помещается в ваш репозиторий.

Сначала экспортируйте среду и коллекцию как файлы JSON. Затем просто сообщите Ньюману, где находится ваша среда и коллекция, и запустите ее.

Добавление этой команды в конвейер сборки позволит Ньюману запускать ваши тесты при каждой сборке и предотвратить регресс.

Попробуй

TargetPractice имеет уязвимые серверы, которые вы можете взломать сколько душе угодно. Протестируйте реальные инструменты и эксплойты, которые работают с живыми целями, не попадая в тюрьму. Если это TargetPractice, это не преступление.