HTTP-запрос, ответ и проверяемый контракт · QA Orbit
Перейти к содержимому
QA ORBIT
Новости Инструменты Библиотека Полезные сайты Курсы ИИ и тестирование
Войти
КурсыТренажёры3
Маршруты обучения
КурсыТестирование API: контракт, данные и состояниеУрок 1
Программа курса

Тестирование API: контракт, данные и состояние

0 из 6 уроков пройдено
01HTTP-запрос, ответ и проверяемый контракт≈ 45 мин02Позитивные и негативные проверки данных≈ 50 мин03Авторизация, объектный доступ и состояние≈ 55 мин04Коллекция, окружение и осмысленные assertions≈ 55 мин05Диагностика, повторы и честный результат≈ 50 мин06Итоговый проект: проверка API-контракта≈ 80 мин
Учебные данные. Реальные навыки.
Урок 01 / 6 · 01 / HTTP и контракт≈ 45 мин с практикой

HTTP-запрос, ответ и проверяемый контракт

Разберите метод, адрес, заголовки и тело; соберите ожидание шире одного статуса.

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

Локальная лаборатория и офлайн-режим

Практика на выбор: (1) анализировать выданные трассы прямо на сайте — запуск не нужен; (2) скачать api-lab.mjs, check-lab.mjs и README.md в отдельную папку, запустить node api-lab.mjs в терминале, затем node check-lab.mjs во втором. Нужен поддерживаемый Node.js 22.13+ (подойдёт актуальный 24/26), без npm install. Адрес по умолчанию http://127.0.0.1:4177. Остановка Ctrl+C. Если порт занят, QA_ORBIT_API_PORT=4178 node api-lab.mjs и QA_ORBIT_API_URL=http://127.0.0.1:4178 node check-lab.mjs. Скачанные скрипты — обычный исходный код: его можно прочитать перед запуском. Сайт не запускает этот код в фоне.

API — наблюдаемая граница системы

HTTP-запрос задаёт метод, целевой ресурс, заголовки и при необходимости тело. Ответ даёт статус, заголовки и представление результата. URL выбирает объект или действие, а данные JSON являются содержимым, не частью самого метода. Эти слои можно нарушить независимо: правильный URL с отсутствующим токеном; корректный JSON с неверным типом поля; успешный статус с неправильным автором в теле. Поэтому тест API начинается с контракта, а не с нажатия Send.

В нашем стенде Bearer demo-anna задаёт синтетического участника north, а не значение authorId из тела запроса. Клиент не может назначить автора через неизвестное поле: A2 требует отказ. Этот выбор нужен для учебной проверки доверия к входным данным. В другом API поля и правила будут иными. Сначала откройте согласованную спецификацию нужной версии; привычная форма REST не даёт права выдумывать обязательные поля или статус.

Успех проверяется целиком

Для POST /tasks с {"title":"План"} A3 обещает 201 и Location, указывающий на новый ID, а также draft, автора из токена и defaults description="", priority=normal. Проверка только 2xx пропустит 200 вместо 201, неверное состояние или подмену автора. Точная проверка текста title нужна, чтобы заметить скрытый trim. Отдельный GET новым ID под тем же автором подтверждает читаемое сохранение; лабораторный snapshot позволяет проверить, что создана ровно одна запись.

Не привязывайте будущий тест к ожидаемому t5, даже если после reset этот ID вероятен. Возьмите фактический ID из успешного ответа, проверьте его тип и непустоту, затем используйте в следующих шагах. Сравните Location с этим же ID. Так тест выражает правило идентичности, а не случайное значение счётчика. Подобная зависимость особенно важна при параллельном выполнении и повторных запусках.

HTTP-семантика и правило продукта — разные основания

Классы статусов помогают ориентироваться: 2xx означает успешный результат на уровне операции, 4xx сообщает о проблеме запроса в рамках выбранной семантики. Но точный ответ на недостаточные права, скрытый объект или повторную публикацию устанавливает API-CORE-1. Порядок 401→404→403→409→422 в A5 не является универсальным правилом HTTP. Если в реальном проекте контракт возвращает 403 вместо скрывающего 404, тест должен следовать тому контракту.

Наша лаборатория моделирует требуемое поведение и даёт воспроизводимую практику клиента. Успешный прогон доказывает соответствие этой локальной модели проверенным сценариям. Он ничего не сообщает о безопасности production-портала, реальной базе, шифровании или распределённых сбоях. При офлайн-анализе исходных трасс укажите «проанализировано», а динамический статус новых запросов оставьте Not run до фактического запуска.

Первый запрос в локальный стенд

bashУчебный пример
curl -i http://127.0.0.1:4177/tasks \
  -H 'Authorization: Bearer demo-anna' \
  -H 'Content-Type: application/json' \
  --data '{"title":"План"}'

Источники и проверка фактов

RFC 9110 — HTTP SemanticsСемантика методов и статусов. Порядок проверок и поля OrbitDesk заданы отдельным учебным контрактом, не самим HTTP.OpenAPI Specification 3.1.1Структура описания операций, параметров, запросов и ответов; в курсе зафиксирована конкретная версия документа, не заявлена последней.

Авторский учебный материал · Редакция QA Orbit · версия 2026-10-28.1

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

Проверяй. Понимай. Расти.

Пространство осмысленного тестирования.
ИсследуйтеНовостиИнструментыБиблиотека
РазвивайтесьКурсыТренажёрыМаршруты обученияИИ и тестирование
Оставайтесь на орбитеО проекте Полезные сайтыГлоссарий
© 2026 QA Orbit. Сделано с вниманием к деталям.
КонфиденциальностьУсловия использования Всегда есть что исследовать