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

от автора

Привет всем!

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

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

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

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

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

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

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

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

При выполнении каждого запроса 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 возращается от сервера  и будет иметь следующий вид: {     "id": 10,     "category": {         "id": 1,         "name": "animal"     },     "name": "Bulldog",     "photoUrls": [         "https: //site.com/bulldog/photo"     ],     "tags": [         {             "id": 1,             "name": "#dog"         }     ],     "status": "available" }

Ожидаемый результат структуры ответа (более подробно):

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

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


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

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

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

Регистрация пользователя:

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

Postman: Body -> Raw -> JSON  {     "email": "protestirovaniye@mail.ru",     "id": 0,     "password": "hard389sS",     "username": "NadezhdaQA" }

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

Запрос успешно отправлен на сервер. HTTP Status: 200 OK  Пользователь успешно зарегистрировован. Тело ответа в формате JSON  возращается от сервера и будет иметь следующий вид:  {  "created": "format of date",     "email": "protestirovaniye@mail.ru",     "id": 1254,     "updated": "format of date",     "username": "NadezhdaQA",     "web.Auth": null }  где "id": 1254 - значение сгенерировано системой

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


Дополнительно я подготовила тест-кейсы на «Проверку идемпотентности» для тех, кто в начале пути по изучению основ тестирования и этот материал для закрепления знаний.
В данной информации можно скачать коллекцию, в которой я указала просто запросы на методы POST, PUT, GET, DELETE. Ваша задача в некоторых запросах подставить свои значения.

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

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

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

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

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

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

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

Тело запроса: {     "category": {         "id": 1,         "name": "animal"     },     "name": "Bulldog",     "photoUrls": [         "https://site.com/bulldog/photo"     ],     "tags": [         {             "id": 1,             "name": "#dog"         }     ],     "status": "pending" }

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

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

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

и

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

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

HTTP Status: 200 OK Создан объект питомца с id = <генерируется новое значение> Тело ответа в формате JSON возращается от сервера и будет иметь следующий вид: {     "id": <генерация нового значения типа int (number)>,     "category": {         "id": 1,         "name": "animal"     },     "name": "Bulldog",     "photoUrls": [         "https://site.com/bulldog/photo"     ],     "tags": [         {             "id": 1,             "name": "#dog"         }     ],     "status": "pending" } POST /add_pet не идемпотентен.  При каждом его вызове будет добавлен новый питомец в магазин.  Происходит изменение состояния. 

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

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


ссылка на оригинал статьи https://habr.com/ru/articles/718560/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *