Тестирование по документации: Swagger, OpenAPI, когда интерфейса ещё нет

В прошлом уроке мы собрали коллекцию запросов в Postman — но для этого нужно было знать, какие эндпоинты вообще есть у API. Что делать, если интерфейс продукта ещё не готов, а API уже разработан? Разбираемся, как тестировщик может начать проверять API напрямую по документации, не дожидаясь ни одной готовой кнопки.

Чему научишься за этот урок:
— понимать, что такое Swagger и OpenAPI и как читать спецификацию;
— пользоваться Swagger UI для изучения эндпоинтов;
— составлять проверки по документации ещё до появления интерфейса.

Swagger и OpenAPI: стандарт описания API

Swagger / OpenAPI — стандарт описания REST API. Это документ (обычно в формате YAML или JSON), где для каждого эндпоинта прописано: HTTP-метод, параметры запроса, формат ответа, возможные коды ответа. По сути, это точная техническая инструкция, как API должен работать, ещё до того, как кто-то написал хоть строчку интерфейса.

Читать такой документ построчно в YAML неудобно, поэтому есть Swagger UI — интерактивная веб-страница, которая рендерит спецификацию в удобочитаемый вид: список эндпоинтов, а для каждого можно раскрыть параметры и даже отправить тестовый запрос прямо со страницы документации, без Postman.

Коды ответа, которые вы увидите в Swagger UI напротив каждого эндпоинта — это те же самые коды 200/400/401/404/500, которые вы уже разбирали в главе 3. Никакой новой системы кодов учить не нужно — меняется только то, откуда вы их узнаёте: не из вкладки Network после клика, а из документации заранее.

Раннее подключение: тестируем API до готового интерфейса

Ключевая ситуация этого урока: интерфейс (UI) продукта ещё НЕ готов, а API уже разработан и задокументирован через Swagger. В таком случае тестировщику не нужно ждать, пока разработчики фронтенда нарисуют кнопки, — он может начать тестировать API напрямую по документации. Это то же раннее подключение к тестированию, тот же принцип «сдвиг влево», который вы разбирали на V-модели в уроке 2.1 — только теперь применительно не ко всему проекту, а конкретно к API.

По спецификации составляют проверки для каждого эндпоинта: какие параметры обязательны, какой формат ответа ожидается (какие поля, какого типа), какие коды ответа возможны в разных ситуациях.

Пример: эндпоинт записи на курс

Допустим, в Swagger описан эндпоинт записи пользователя на курс:

POST /api/courses/{id}/enroll

Параметры:
  id       -> номер курса (в пути)
  user_id  -> номер пользователя (обязательный)

Ответы:
  201 -> запись прошла успешно
  404 -> курса с таким id не существует

Кнопки «Записаться» в интерфейсе продукта ещё нет — фронтенд её не нарисовал. Но тестировщик уже может составить и выполнить проверки прямо по этой спецификации: отправить запрос с корректным user_id на существующий курс и убедиться, что приходит 201; отправить запрос на несуществующий id курса и убедиться, что приходит 404; попробовать отправить запрос без обязательного параметра user_id и посмотреть, что вернёт сервер. Всё это — ещё до того, как в интерфейсе появится хоть один пиксель формы записи.

Swagger UI: список эндпоинтов API с раскрытым POST /api/courses/{id}/enroll — видны параметры запроса и возможные коды ответа 201/404

Итог:
— Swagger / OpenAPI — стандарт описания REST API: метод, параметры, формат ответа, коды ответа для каждого эндпоинта;
— Swagger UI рендерит спецификацию в удобочитаемый вид и позволяет отправлять тестовые запросы прямо со страницы;
— если интерфейс продукта ещё не готов, а API уже задокументирован, тестировщик может начать проверки API напрямую по спецификации — раннее подключение, тот же принцип «сдвиг влево»;
— проверки составляют по обязательным параметрам, формату ответа и возможным кодам ответа для каждого эндпоинта.

Контрольный вопрос. Что такое Swagger / OpenAPI?

АСтандарт описания REST API: метод, параметры, формат ответа и коды ответа для каждого эндпоинта
БИнструмент для отправки запросов вручную, аналог Postman
ВФормат хранения данных вместо JSON

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

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Что делает Swagger UI?

АРендерит спецификацию API в удобочитаемый вид и позволяет отправлять тестовые запросы со страницы
БАвтоматически пишет код фронтенда по спецификации
ВЗаменяет собой HTTP-методы новыми командами

Подсказка: В уроке описано, во что превращается спецификация, когда её открывают через эту страницу.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. В ключевой ситуации этого урока интерфейс продукта ещё не готов. Что при этом может сделать тестировщик?

АНачать тестировать API напрямую по документации, не дожидаясь готового интерфейса
БНичего — тестирование возможно только после готового интерфейса
ВТестировать только вручную кликая по макетам дизайнера

Подсказка: В уроке прямо названо это «раннее подключение» — вспомни, к чему оно относится.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Тестирование API по документации до готового интерфейса — это применение какого принципа, уже знакомого из урока 2.1?

А«Сдвиг влево» — раннее подключение к тестированию
БV-модель применяется только к интерфейсу, а не к API
ВПринцип «сначала документация, потом код» из главы 7

Подсказка: В уроке прямо названа связь с V-моделью и её ключевым принципом из главы 2.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. В Swagger описан эндпоинт POST /api/courses/{id}/enroll с обязательным параметром user_id и кодами ответа 201 (успех) и 404 (курс не найден). Какие проверки тестировщик может составить по этой спецификации ещё до готового интерфейса (выбери все подходящие)?

Выберите все верные варианты.

АОтправить запрос с корректным user_id на существующий курс и проверить, что приходит 201
БОтправить запрос на несуществующий id курса и проверить, что приходит 404
ВОтправить запрос без обязательного параметра user_id и посмотреть, что вернёт сервер
ГДождаться готовой кнопки «Записаться» в интерфейсе и только тогда начать проверки

Подсказка: Сверь варианты с примером из урока про эндпоинт enroll — один из них противоречит идее раннего подключения.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Как называется интерактивная веб-страница, которая рендерит спецификацию Swagger в удобочитаемый вид и позволяет отправлять тестовые запросы прямо с неё? Ответь двумя словами.

Подсказка: Название совпадает с названием стандарта плюс ещё одно короткое слово из трёх букв.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Задание. В Swagger описан эндпоинт /api/courses/{id}/enroll, который создаёт новую запись ученика на курс и в ответ возвращает 201. Какой HTTP-метод из уже изученных в этом курсе обычно используют для создания новой сущности, а не для её чтения или удаления? Ответь одним словом.

Подсказка: Вспомни, какой из методов HTTP обычно используют, когда создают что-то новое.

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Задание. По спецификации из урока эндпоинт POST /api/courses/{id}/enroll возвращает 201 при успешной записи. Также в Swagger описан отдельный код ответа для случая, когда курса с таким id не существует. Какой это код? Ответь числом.

Подсказка: Посмотри на таблицу «Ответы» из ASCII-схемы урока и найди строку про несуществующий курс.

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Задание. Объясни в 2-3 предложениях: почему тестировщику полезно уметь тестировать API по документации Swagger, даже если интерфейс продукта уже готов?

Критерий приёмки: объяснено, что документация даёт точный список обязательных параметров, форматов ответа и возможных кодов ответа для каждого эндпоинта, поэтому по ней можно составить полные и однозначные проверки, а не гадать, что попробовать, кликая по готовому интерфейсу.

Подсказка: Вспомни, что именно даёт спецификация тестировщику: список параметров, формат ответа, коды — и как это помогает составлять проверки.

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

Онлайн-проверка ответа появится позже

Задание. Команда разрабатывает новый раздел «Запись на курс». Бэкенд-разработчики уже выложили эндпоинт POST /api/courses/{id}/enroll и его Swagger-спецификацию с обязательным параметром user_id и кодами 201/404. Фронтенд-команда говорит, что кнопка «Записаться» будет готова только через 2 недели. Опиши в 2-3 предложениях, что может сделать тестировщик прямо сейчас, не дожидаясь этих двух недель, и почему это выгоднее, чем просто ждать.

Критерий приёмки: описано, что тестировщик может уже сейчас составить и выполнить проверки эндпоинта напрямую по спецификации (успешная запись — 201, несуществующий курс — 404, запрос без обязательного user_id), не дожидаясь готового интерфейса. Это выгоднее ожидания, потому что баги на стороне API находят и чинят раньше — до того, как на них наслоится ещё и фронтенд (принцип раннего подключения / «сдвиг влево»).

Подсказка: Вспомни ключевую ситуацию урока: что можно проверить, если API уже задокументирован, а интерфейса ещё нет — и почему раньше значит дешевле.

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

Онлайн-проверка ответа появится позже

Что дальше

Теперь вы умеете составлять проверки по документации API. Но одного факта «код ответа правильный» недостаточно — в следующем уроке разберём, по каким осям вообще проверяют ответ API, чтобы не упустить дефект.

Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса  ·  Вперёд →

Школа Виктора Комлева