Коллеги, всем желаю хорошего дня.
Для начинающих специалистов по тестированию.
Автор: Надежда Дудник
Недавно я делилась информацией как составлять тест-кейсы по бэкенду (читать статью Шаблоны тест-кейсов по 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](https://habrastorage.org/getpro/habr/upload_files/e29/df2/34e/e29df234e424b98e3288514f113aa567.png)
Переменные со своими значениями объявлены в самой коллекции:
![Необходимые переменные для работы Необходимые переменные для работы](https://habrastorage.org/getpro/habr/upload_files/342/cfb/83e/342cfb83eae04f02aa0a44e4afab9561.png)
Код на вкладке 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](https://habrastorage.org/getpro/habr/upload_files/d58/5d7/589/d585d75899be41688f14725086838ab2.png)
Просмотреть и скачать коллекцию: ссылка на коллекцию.
Insomnia
Insomnia (Version: Insomnia 8.4.5, OS: Windows_NT x64 10.0.19045 на момент написания статьи).
Так выглядит коллекция запросов:
![Коллекция "Vikunja API" в Insomnia Коллекция "Vikunja API" в Insomnia](https://habrastorage.org/getpro/habr/upload_files/8d6/4c5/ee7/8d64c5ee71fd2abf8ae8665771ad5d3e.png)
Переменные со своими значениями объявлены в окружении:
![Необходимые переменные для работы Необходимые переменные для работы](https://habrastorage.org/getpro/habr/upload_files/9f5/fcd/287/9f5fcd287a1388bf29b0126848356f01.png)
Значения переменных взяты следующим образом:
![пример редактирования переменной: более подробно можно почитать здесь пример редактирования переменной: более подробно можно почитать здесь](https://habrastorage.org/getpro/habr/upload_files/038/17c/c8c/03817cc8c0fefac88c039c2105a9b261.png)
Пример запроса и ответа от сервера:
![PUT Create a task PUT Create a task](https://habrastorage.org/getpro/habr/upload_files/7bd/02f/5a8/7bd02f5a89b2f590fa057bf1eafc2f30.png)
Просмотреть и скачать коллекцию: ссылка на коллекцию.
Заключение
На основе данных примеров показала как составлять запросы и строить структуру коллекции в postman и insomnia.
Внести скрипты проверок - планируется.
Эти примеры помогут больше не только в построении запросов, но и в написании функциональных тест-кейсов по API при обучении и даже на работе.
Благодарю за прочтение.
С уважением, Надежда Дудник (protestinginfo), главный инженер по тестированию в финтехе и ментор по тестированию ПО.
И желаю достичь своей цели!
PrinceKorwin
Подскажите знающие люди. А есть какой-то тул чтобы можно было его использовать локально без этих вот GUI и Cloud?
Просто набор скриптов/правил по который провалидировать REST API разрабатываемого приложения?
Сценарий простой:
поправил код
запустил сервис
прогнал REST API тесты
Ну и чтобы на всех платформах работало и желательно не тянуло за собой тонны всего.
des1roer
scratch в phpstorm. функциональные тесты
PrinceKorwin
Хотелось бы что-то на подобие wrk, только не для нагрузки на API, а на его валидацию.
PrinceKorwin
Кажется нашёл: https://hurl.dev
Выглядит обещающе.
savostin
Postman cli