Коллеги, всем желаю хорошего дня.

Для начинающих специалистов по тестированию.

Автор: Надежда Дудник

Недавно я делилась информацией как составлять тест-кейсы по бэкенду (читать статью Шаблоны тест-кейсов по API, тест-кейсы по идемпотентности).

Сейчас хочу продемонстрировать примеры создания запросов по данным тест-кейсов для сайта:

UI: https://try.vikunja.io/login

API documentation: https://try.vikunja.io/api/v1/docs

Разберем следующие функциональные проверки на API:

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

  • Регистрация с существующим username

  • Регистрация с существующим email

  • Успешная авторизация и получение токена

  • Создание project (проекта)

  • Получение информации проекта по id

  • Обновление проекта по id

  • Удаление проекта по id

  • Создание task (задачи)

  • Получение всех задач в проекте

  • Получение инфомации задачи по id

  • Обновление задачи по id

  • Удаление задачи по id

  • Добавление label в task (можно добавить несколько)

  • Создание label (метки)

  • Получение всех меток в задаче

  • Получение информации метки по id

  • Обновление метки по id

  • Удаление метки по id

Создание запросов на основе тест-кейсов в инструментах

Postman

Postman (Version 10.20.3, OS platform win32 10.0.19045 на момент написания статьи)

Так выглядит коллекция запросов:

Коллекция "Vikunja API" в Postman
Коллекция "Vikunja API" в Postman

Переменные со своими значениями объявлены в самой коллекции:

Необходимые переменные для работы
Необходимые переменные для работы

Код на вкладке Tests для установки переменных в коллекцию:

в запросе POST Login

var jsonData = JSON.parse(responseBody);
pm.collectionVariables.set("token", jsonData.token);

Токен можно объявить или через вкладку "Headers" как Authorization: Bearer {{token}} 
или
через вкладку "Authorization" -> type 'Bearer Token'
в запросе PUT Creates a new project

var jsonData = JSON.parse(responseBody);
pm.collectionVariables.set("project_id", jsonData.id);
в запросе PUT Create a task

var jsonData = JSON.parse(responseBody);
pm.collectionVariables.set("task_id", jsonData.id);
в запросе PUT Create a label

var jsonData = JSON.parse(responseBody);
pm.collectionVariables.set("label_id", jsonData.id);

Пример запроса и ответа от сервера:

PUT Create a task
PUT Create a task

Просмотреть и скачать коллекцию: ссылка на коллекцию.

Insomnia

Insomnia (Version: Insomnia 8.4.5, OS: Windows_NT x64 10.0.19045 на момент написания статьи).

Так выглядит коллекция запросов:

Коллекция "Vikunja API" в Insomnia
Коллекция "Vikunja API" в Insomnia

Переменные со своими значениями объявлены в окружении:

Необходимые переменные для работы
Необходимые переменные для работы

Значения переменных взяты следующим образом:

пример редактирования переменной: более подробно можно почитать здесь
пример редактирования переменной: более подробно можно почитать здесь

Пример запроса и ответа от сервера:

PUT Create a task
PUT Create a task

Просмотреть и скачать коллекцию: ссылка на коллекцию.

Заключение

На основе данных примеров показала как составлять запросы и строить структуру коллекции в postman и insomnia.

Внести скрипты проверок - планируется.

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

Благодарю за прочтение.

С уважением, Надежда Дудник (protestinginfo), главный инженер по тестированию в финтехе и ментор по тестированию ПО.

И желаю достичь своей цели!

Комментарии (5)


  1. PrinceKorwin
    12.12.2023 06:52

    Подскажите знающие люди. А есть какой-то тул чтобы можно было его использовать локально без этих вот GUI и Cloud?

    Просто набор скриптов/правил по который провалидировать REST API разрабатываемого приложения?

    Сценарий простой:

    • поправил код

    • запустил сервис

    • прогнал REST API тесты

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


    1. des1roer
      12.12.2023 06:52

      scratch в phpstorm. функциональные тесты


      1. PrinceKorwin
        12.12.2023 06:52

        Хотелось бы что-то на подобие wrk, только не для нагрузки на API, а на его валидацию.


        1. PrinceKorwin
          12.12.2023 06:52

          Кажется нашёл: https://hurl.dev

          Выглядит обещающе.