Шаблоны тест-кейсов по API, тест-кейсы по идемпотентности

Привет всем!

Давайте знакомиться.

Я, Надежда Дудник, главный инженер по тестированию в СБЕРе, а ещё ментор по тестированию ПО.

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

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

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

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

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

Сперва необходимо составлять позитивные тесты — успешное прохождение сценария, затем негативные тесты с невалидными и недопустимыми данными и т.д..

При выполнении каждого запроса API нам необходимо и важно проверить:

  • корректность статуса кода;
  • полезную нагрузку ответа;
  • сам ответ от сервера: сообщение, ключ, значение, тип данных, структуру объектов;
  • заголовки ответа от сервера;
  • авторизацию с использованием методов аутентификации;
  • протокол HTTP / HTTPS согласно спецификации;
  • дополнительно доступы разных ролей, время ответа API, стиль формата обмена данными.

Хочу продемонстрировать пример тест-кейса "Добавить нового питомца в магазин (Вызов метода POST)", используя сайт https://petstore. swagger. io/

Тест-кейс API "Добавление нового питомца в магазин"
Тест-кейс API "Добавление нового питомца в магазин"

Важно выполнить следующие шаги:

Отправить POST запрос https://petstore. swagger. io/v2/pet с телом:

{ "id": 10, "category": { "id": 1, "name": "animal" }, "name": "Bulldog", "photoUrls": [ "https: //site.com/bulldog/photo" ], "tags": [ { "id": 1, "name": "#dog" } ], "status": "available" }

Проверить код состояния

Проверить тело ответа от сервера

Проверить структуру ответа

Проверить заголовки ответа

Часть ожидаемого результата:

HTTP Status: 200 OK Схема JSON отображена корректно, имена и типы полей соответствуют ожидаемым, включая вложенные объекты: "category": { "id": 1, "name": "animal" } вложенная структура данных, содержащая объекты и массивы: "tags": [ { "id": 1, "name": "#dog" } ] значения полей соответствуют ожидаемым значениям из тестовых данных: "id": 10 - number "category": { "name": "animal" } - object "name": "Bulldog" - string "photoUrls": [ "https://site.com/bulldog/photo" ] - array "tags": [ { "name": "#dog" } ] - array with objects "status": "available" - string

Шаблон тест-кейсов API данного примера предлагаю просмотреть по ссылке.

Рассмотрим пример тест-кейсов для сайта https://try. vikunja. io/login.

Тест-кейс API: регистрация и авторизация пользователя.
Тест-кейс API: регистрация и авторизация пользователя.

Тест-кейс: "Регистрация пользователя"

Отправить POST запрос https://try. vikunja. io/api/v1/register с телом

Postman: Body -> Raw -> JSON { "email": "string", "id": 0, "password": "stringst", "username": "string" }

Ожидаемый результат:

Запрос успешно отправлен на сервер

HTTP Status: 200 OK

Пользователь успешно зарегистрировован.

Тело ответа в формате JSON возращается от сервера и будет иметь следующий вид:

{ "created": "string", "email": "string", "id": 0, "name": "string", "updated": "string", "username": "string", "web.Auth": null }

Шаблон тест-кейсов API для сайта Vikunja смотреть по ссылке.

Дополнительно я подготовила тест-кейсы на «Проверку идемпотентности» для тех, кто в начале пути по изучению основ тестирования, и этот материал для закрепления знаний.

В данной информации можно скачать коллекцию, в которой я указала просто запросы на методы POST, PUT, GET, DELETE. Ваша задача в некоторых запросах подставить свои значения. Эти тест-кейсы я расписала детально для вас. В проектных задачах по тестированию редко кто так составляет детально тест-кейсы API в TMS (Test Managment System), потому что мало времени на подробное описание тест-кейсов и на их актуализацию.

Если у вас возник вопрос, что такое "Идемпотентность", то по вышеуказанной ссылке имеется полезный материал на теорию по идемпотентности.

Пример тест-кейсов по идемпотентности:

Добавить нового питомца в магазин (Вызов метода POST /add_pet не идемпотентен)
Добавить нового питомца в магазин (Вызов метода POST /add_pet не идемпотентен)

Основные шаги при отправке запроса методом POST:

Отправить POST запрос https://petstore. swagger. io/v2/pet с телом (тело запроса было указано в первом примере)

Проверить код состояния

Проверить тело ответа от сервера

Ожидаемый результат:

POST /add_pet не идемпотентен. При каждом его вызове будет создан новый питомец.

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

Благодарю за прочтение и рекомендую использовать данные шаблоны при выполнении тестовых и проектных задач.

7
1 комментарий

Класс

Ответить