Шпаргалка по API для QA. Часть 3: Инструментарий
QA❤️4LifeШпаргалка по API для QA. Часть 3: Инструментарий
Postman (коллекции, окружения, тесты), cURL, Swagger/OpenAPI, JMeter — инструменты, которые нужны каждому QA для работы с API.
Канал: QA❤️4Life
Автор: Евгений Гусинец
Часть 4: Инструментарий QA-инженера для тестирования API
В этом разделе мы рассмотрим ключевые инструменты, от самых универсальных до узкоспециализированных, и разберемся, как и для чего они используются.
4.1. Postman — Швейцарский нож для API
Вопросы с собеседований:
Что такое Postman?
Что такое Postman-коллекция?
Что такое environment?
Что это такое?
Postman — это интерактивная среда для разработки и тестирования API. Это самый популярный в мире инструмент для отправки HTTP-запросов, просмотра ответов и проведения как ручного, так и автоматизированного тестирования. Он предоставляет удобный графический интерфейс для всех операций, которые мы обсуждали ранее.
Ключевые возможности Postman:
Создание и отправка запросов: Позволяет легко конструировать любые HTTP-запросы (GET, POST, PUT и т.д.), добавлять заголовки, параметры и тело запроса.
Просмотр ответов: Наглядно отображает код ответа, заголовки и тело (с подсветкой синтаксиса для JSON, XML, HTML).
Автоматизация тестов: Позволяет писать тесты на JavaScript во вкладке "Tests" для автоматической проверки ответов (например, pm.test("Status code is 200", ...)).
Работа с переменными: Позволяет хранить данные (URL, токены, ID) в переменных, чтобы переиспользовать их в разных запросах.
Postman-коллекция (Collection)
Что это? Коллекция в Postman — это, по сути, папка для хранения и организации ваших API-запросов. Это основной способ группировки связанных запросов.
Зачем нужна?
Организация: Вы можете создать коллекцию для каждого проекта или для каждой функциональной области (например, "Users API", "Products API").
Документация: Каждому запросу и коллекции можно добавить описание, что превращает коллекцию в интерактивную документацию.
Автоматизация: Вы можете запустить всю коллекцию целиком с помощью Collection Runner, чтобы выполнить все запросы один за другим и проверить все тесты.
Обмен: Коллекциями можно делиться с командой, экспортируя их в JSON-файл.
Environment (Окружение)
Что это? Environment в Postman — это набор переменных (ключ-значение), который позволяет адаптировать ваши запросы для разных сред выполнения.
Зачем нужно? Представьте, у вас есть несколько тестовых сред:
Development: http://dev.api.example.com
QA/Staging: http://staging.api.example.com
Production: http://api.example.com
Вместо того чтобы менять URL в каждом запросе вручную, вы создаете переменную {{baseUrl}}. Затем вы создаете три окружения: "Development", "Staging", "Production". В каждом из них переменная {{baseUrl}} будет иметь свое значение. Перед запуском тестов вы просто выбираете нужное окружение в выпадающем списке, и Postman автоматически подставит правильный URL во все запросы.
Что еще хранят в окружениях? Токены авторизации, логины, пароли, ID пользователей — любые данные, которые меняются от среды к среде.
4.2. cURL — Мощь командной строки
Вопросы с собеседований:
Что такое cURL?
Чем отличается URL от cURL?
Что такое URL?
URL (Uniform Resource Locator) — это адрес ресурса в сети. Это просто строка, которая указывает, где находится ресурс (например, https://google.com/search?q=api). URL — это что вы хотите получить.
Что такое cURL?
cURL (Client URL) — это инструмент, утилита командной строки для отправки запросов по различным протоколам, включая HTTP/HTTPS. cURL — это как вы получаете ресурс.
Ключевое отличие: URL — это адрес (существительное), cURL — это инструмент для перехода по адресу (глагол).
Зачем нужен cURL?
Скорость и простота: Позволяет быстро проверить доступность эндпоинта или отправить простой запрос прямо из терминала, не открывая Postman.
Автоматизация и скрипты: Легко встраивается в shell-скрипты для автоматизации задач.
Воспроизведение багов: Это лучший способ передать разработчику информацию для воспроизведения бага. Вы можете скопировать запрос из Postman или DevTools как cURL-команду. Разработчик вставляет ее в свой терминал и мгновенно получает ту же ошибку, что и вы.
Пример cURL-команды:
# Простой GET-запрос
curl https://api.github.com/users/google
# POST-запрос с JSON-телом и заголовком
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "John", "email": "john@doe.com"}'
-X POST — задает метод.
-H — задает заголовок.
-d — задает тело запроса.
4.3. Swagger (OpenAPI) — Интерактивная документация
Вопрос с собеседования:
Что такое Swagger? Зачем он нужен?
Что это такое?
Swagger — это набор инструментов для реализации спецификации OpenAPI. А OpenAPI Specification — это стандарт, "язык" для описания RESTful API.
Если проще, Swagger — это инструмент, который позволяет создавать красивую, интерактивную веб-страницу с документацией для вашего API прямо из его кода.
Зачем он нужен?
Единый источник правды: Документация генерируется автоматически на основе кода бэкенда. Это исключает ситуацию, когда код поменялся, а документацию обновить забыли.
Интерактивность: Swagger UI позволяет не просто читать документацию, но и отправлять тестовые запросы прямо со страницы. Вы можете заполнить параметры, нажать "Execute" и сразу увидеть реальный ответ от сервера. Это очень удобно для быстрого "прощупывания" API.
Ускорение разработки и тестирования:
Для Frontend-разработчиков: Они могут видеть, какие эндпоинты существуют и какие данные от них ожидать, не дергая бэкендеров.
Для QA-инженеров: Это отправная точка для составления тест-плана. Вся структура API, модели данных, обязательные поля — все уже описано.
Генерация кода: На основе OpenAPI-спецификации можно автоматически генерировать клиентский код для разных языков программирования.
4.4. JMeter — Инструмент для нагрузочного тестирования
Вопрос с собеседования:
Что такое JMeter?
Что это такое?
Apache JMeter — это мощный open-source инструмент, написанный на Java, предназначенный в первую очередь для нагрузочного тестирования.
Зачем он нужен?
Postman отлично подходит для проверки функциональности — "работает ли API правильно?". JMeter отвечает на другие вопросы:
"А что будет, если этим API одновременно воспользуются 1000 пользователей?"
"Какое максимальное количество запросов в секунду может выдержать наш сервер?"
"Как меняется время ответа при увеличении нагрузки?"
Ключевые возможности:
Симуляция нагрузки: Может создавать сотни и тысячи виртуальных пользователей, которые одновременно отправляют запросы к вашему API.
Анализ производительности: Собирает метрики: среднее время ответа, пропускную способность (throughput), процент ошибок и т.д.
Гибкие сценарии: Позволяет создавать сложные сценарии поведения пользователей (например, "логин -> поиск товара -> добавление в корзину -> оформление заказа").
Поддержка разных протоколов: Может тестировать не только HTTP/HTTPS, но и базы данных (через JDBC), FTP, почтовые протоколы и многое другое.Канал: QA❤️4Life
Автор: Евгений Гусинец