Вы находитесь на странице: 1из 26

https://petstore.swagger.io/ как Видео на Youtube:https://youtu.

be/M72eY5tHhCM
пример
Создание запросов в Postman на основе тест-кейсов по API
Environment: Окружение: Postman v10.8.8
№ Приоритет Название Предусловия Тестовые данные Шаги Ожидаемый результат Статус прохождения Link to bug Комментарий
Пример позитивного API-теста Passed or Failed report (Link
1 High Добавить нового Headers request: Параметры в случае POST передаются в теле
Отправить
запроса
POST
в JSON
запрос
объекте.
Запрос
https://petstore.swagger.io/v2/petили
1)успешно
category:отправлен
name = animal2)
на сервер
name
по-другому
(или
= Bulldog3)
запрос
записать
успешно
photoUrls
шагИнициировать
иницирован)
= https://site.com/bulldog/photo4)
Passed
вызов сервиса методом
tags: name
POST= с#dog5)
Поле
телом
заголовка
status = availableТело
запроса запроса: { "id": 10, "category": { "id": 1, "name": "
питомца в Content-Type: Проверить код HTTP Status: 200 OK Passed Content-Type
магазин (Вызов application/json состояния используется для
метода POST) Проверить тело ответа Тело ответа в формате JSON (сформированный объект JSON) Passed указания медиа типа
от сервера структуру
Проверить возращается от сервера икорректно
Схема JSON отображена будет иметь следующий вид: Passed данных в теле
ответа
Проверить заголовки имена и типы полей соответствуют ожидаемым, включая
access-control-allow-headers: Content-Type,api_key,Authorization Passed сообщения.
1.1 High Изменение Headers request: Заменить status = sold ответа access-control-allow-methods:
Отправить PUT запросhttps://petstore.swagger.io/v2/pet GET,POST,DELETE,PUT
Запрос успешно отправлен на сервер (или запрос успешно иницирован) Passed
статуса Content-Type: Проверить код HTTP Status: 200 OK Passed
добавленного application/json состояния
питомца в Тело запроса: Проверить тело ответа Тело ответа в формате JSON возращается от сервера и будет иметь Passed
methods: GET,POST,DELETE,PUT access-control-allow-origin: * content-type:
магазин { от сервера
Проверить заголовки следующий вид:
application/json date: Thu,01 Dec 2022 19:14:43 GMT server: Jetty(9.2.9.v20150224) Passed
1.2 High Удаление Headers request: "id": 10,
{petId} = 10 ответа
Отправить DELETE запрос
Запрос
https://petstore.swagger.io/v2/pet/10
успешно отправлен на сервер Passed Если еще раз удалить
питомца из Content-Type: integer($int64) Проверить код HTTP Status: 200 OK питомца, то будет 404
магазина application/json (path)запрос }
состояния
Проверить тело ответа Питомец с id = 10 удален из магазина Passed
https://petstore.swagger.io/v2/pet/{petId} date: Error: Not Found
от сервера заголовки
Проверить server: Jetty(9.2.9.v20150224) Passed
Пример негативного API-теста ответа
2 Medium Добавить нового Headers request: Параметры в случае GET передаются в Отправить GET запрос https://petstore.swagger.io/v2/pet
Запрос успешно отправлен на сервер NotTested Заголовок Accept
питомца в Content-Type: теле запроса в JSON объекте. Проверить код HTTP Status: 405 Method Not Allowed NotTested помогает серверу
магазин application/json { состояния правильно расшифровать
Проверить тело ответа Тело ответа в формате JSON будет иметь следующий вид: NotTested
Вызов метода Accept: "id": 10, сообщение.
от сервера
Проверить заголовки {access-control-allow-headers: Content-Type,api_key,Authorization NotTested
GET - Попытка application/json "category": { Указывая в заголовке
создать ресурс "id": 1, ответа access-control-allow-methods: GET,POST,DELETE,PUT Accept, мы даем серверу
недопустимым "name": "animal" server: Jetty(9.2.9.v20150224) понять, какие данные
методом }, готовы принять в ответ.
"name": "Bulldog",
"photoUrls": [
"https://site.com/bulldog/photo"
],
"tags": [
{
"id": 1,
3 Medium Добавить нового Headers request: Параметры в случае POST передаются в Отправить POST запросЗапрос
https://petstore.swagger.io/v2/pet
успешно отправлен на сервер Passed Здесь Тело ответа в формате
питомца в Content-Type: теле запроса в JSON объекте. Проверить код HTTP Status: 415 Unsupported Media Type Failed дефект JSON будет иметь
магазин application/xml { состояния тело ответа Тело
Код состояния HTTP соответствует следующий вид:
Вызов метода Accept: "id": 10, Проверить ответа в формате JSON будеттипу ошибки
иметь следующий вид: Failed {
"category": { от сервера заголовки
Проверить {
access-control-allow-headers: Content-Type,api_key,Authorization Passed "code": 400,
POST - Попытка application/json
создать ресурс "id": 1, ответа access-control-allow-methods: GET,POST,DELETE,PUT "type": "unknown",
c телом JSON и "name": "animal" server: Jetty(9.2.9.v20150224) "message":
c content-type = }, "javax.xml.bind.Unmarshal
XML "name": "Bulldog", Exception\n - with linked
"photoUrls": [ exception:\
"https://site.com/bulldog/photo" n[org.xml.sax.SAXParseEx
], ception; lineNumber: 1;
"tags": [ columnNumber: 1; Content
4 Medium Добавить нового Headers request: Параметры в случае POST передаются в Отправить POST запросЗапрос
https://petstore.swagger.io/v2/pet
успешно отправлен на сервер NotTested
питомца в Content-Type: теле запроса в JSON объекте. Проверить код HTTP Status: 415 Unsupported Media Type NotTested
магазин application/javascri { состояния Код состояния HTTP соответствует типу ошибки
Вызов метода pt "id": 10,
POST - Попытка Accept: "category": { Проверить тело ответа Тело ответа в формате JSON будет иметь следующий вид: NotTested
создать ресурс application/json "id": 1, от сервера заголовки {
c телом JSON и Проверить access-control-allow-headers: Content-Type,api_key,Authorization NotTested
"name": "animal"
c content-type = ответа access-control-allow-methods: GET,POST,DELETE,PUT
},
server: Jetty(9.2.9.v20150224)
Javascript "name": "Bulldog",
"photoUrls": [
"https://site.com/bulldog/photo"
],
"tags": [
{
5 Medium Добавить нового Headers request: Параметры "id": 1, в случае POST передаются в Отправить POST запросЗапрос
https://petstore.swagger.io/v2/pet
успешно отправлен на сервер NotTested Поле заголовка
питомца в Content-Type: теле запроса в JSON объекте. Проверить код HTTP Status: 400 Bad Request NotTested запроса Accept
магазин application/json { состояния тело ответа Тело
Код состояния HTTP соответствует используется, чтобы
Проверить ответа в формате JSON будеттипу ошибки
иметь следующий вид: NotTested
Вызов метода Accept: "id": NULL, определить тип
от сервера заголовки
Проверить {
access-control-allow-headers: Content-Type,api_key,Authorization NotTested
POST - Попытка application/json "category": { информации, который
создать ресурс "id": 1, ответа access-control-allow-methods: GET,POST,DELETE,PUT должен содержаться в
c полем, не "name": "animal" server: Jetty(9.2.9.v20150224) ответе HTTP сервера
допускающим },
значение "name": "Bulldog",
"NULL", но "photoUrls": [
равен "NULL" в "https://site.com/bulldog/photo"
теле запроса ],
6 Medium Добавить нового Headers request: Параметры в случае POST передаются в Отправить POST запросЗапрос
https://petstore.swagger.io/v2/pet
успешно отправлен на сервер Passed есть дефект будет такой ответ
питомца в Content-Type: теле запроса в JSON объекте. Проверить код HTTP Status: 400 bad request Failed {
магазин application/json { состояния тело ответа id
Код состояния "id":
Проверить должен бытьHTTP
типомсоответствует
"number", а нетипу
"nul"ошибки Failed
Вызов метода "id": null, 9223372036854775807,
от сервера заголовки
Проверить Тело ответа в формате JSONContent-Type,api_key,Authorization
access-control-allow-headers: будет иметь следующий вид: Passed
POST - Попытка "category": { "category": {
создать ресурс "id": 1, ответа access-control-allow-methods: GET,POST,DELETE,PUT "id": 1,
c полем, не "name": "animal" server: Jetty(9.2.9.v20150224) "name": "animal"
допускающим }, },
значение "null", "name": "Bulldog", "name": "Bulldog",
но равен "null" "photoUrls": [ "photoUrls": [
в теле запроса "https://site.com/bulldog/photo"
], "https://site.com/bulldog/ph
"tags": [ oto"
{ ],
"id": 1, "tags": [
"name": "#dog" {
} "id": 1,
], "name": "#dog"
7 Medium Добавить нового Headers tab: Параметры в случае POST передаются в Отправить POST запросЗапрос
https://petstore.swagger.io/v2/pet1
успешно отправлен на сервер NotTested
питомца в Content-Type: теле запроса в JSON объекте.
магазин application/json {
Вызов метода "id": 10, Проверить код HTTP Status: 404 Not Found NotTested
POST - Попытка "category": { состояния тело ответа Код состояния HTTP соответствует
создать ресурс "id": 1, Проверить Тело ответа в формате JSON будеттипу ошибки
иметь следующий вид: NotTested
с "name": "animal" от сервера заголовки
Проверить {access-control-allow-headers: Content-Type,api_key,Authorization NotTested
использование }, ответа access-control-allow-methods: GET,POST,DELETE,PUT
м "name": "Bulldog", server: Jetty(9.2.9.v20150224)
несуществующе "photoUrls": [
го адреса "https://site.com/bulldog/photo"
],
"tags": [
{
8 High Добавить нового Headers tab: Параметры
"id": 1, в случае POST передаются в Отправить POST запросЗапрос
https://petstore.swagger.io/v2/pet
успешно отправлен на сервер Passed Не уверена, что это
питомца в Content-Type: теле"name":
запроса в JSON объекте.
"#dog" корректный ожидаемый
магазин application/json { } Проверить код HTTP Status: 200 OK Passed результат
Вызов метода } ], состояния
POST - Попытка "status": "available" По сути должно быть
создать ресурс Проверить тело ответа Тело ответа в формате JSON будет иметь следующий вид: Failed отображено тело JSON с
} от сервера {
c пустым JSON сообщением об
объектом "id": 9223372036854018882, заполнении обязательных
"photoUrls": [], полей и иметь другой
"tags": [] формат
} {
"id": "This field is
required.",
"name": "This field is
required."
}

NotTested
NotTested
NotTested
https://t.me/protestinginfo https://try.vikunja.io/api/v1/docs# как примерВидео на Youtube:h

Environment: Окружение: Postman v9.21.0


№ Приоритет Название Предусловия

Функциональные API тесты


1 High Регистрация Headers request:
нового Content-Type: application/json
пользователя Accept: application/json

2 High Успешная Headers request:


авторизация и Content-Type: application/json
получение токена Accept: application/json

3 High Регистрация с Headers request:


существующим Content-Type: application/json
username Accept: application/json
3 High Регистрация с Headers request:
существующим Content-Type: application/json
username Accept: application/json

4 High Регистрация с Headers request:


существующим Content-Type: application/json
email Accept: application/json

Функциональные API тесты на Label


5 High Создание Label Headers request:
Content-Type: application/json
Accept: application/json
Authorization: Bearer <jwt-
token>
5 High Создание Label Headers request:
Content-Type: application/json
Accept: application/json
Authorization: Bearer <jwt-
token>

6 High Обновление Headers request:


description для Content-Type: application/json
Label Accept: application/json
Authorization: Bearer <jwt-
token>
6 High Обновление Headers request:
description для Content-Type: application/json
Label Accept: application/json
Authorization: Bearer <jwt-
token>

6 High Получение Headers request:


информации Content-Type: application/json
одного Label Accept: application/json
Authorization: Bearer <jwt-
token>

7 High Поиск Headers request:


несуществующего Content-Type: application/json
label Accept: application/json
Authorization: Bearer <jwt-
token>
7 High Поиск Headers request:
несуществующего Content-Type: application/json
label Accept: application/json
Authorization: Bearer <jwt-
token>

8 High Поиск label, когдаHeaders request:


нет доступа на Content-Type: application/json
него Accept: application/json
Authorization: Bearer <jwt-
9 High Удаление label Headers request:
Content-Type: application/json
Accept: application/json
Authorization: Bearer <jwt-
token>
Чтобы label добавить в task, нужно создать сперва создать namespace, потом создать list, который б
10 High Создание Headers request:
namespace Content-Type: application/json
Accept: application/json
Authorization: Bearer <jwt-
token>

11 High Создание list Headers request:


Content-Type: application/json
Accept: application/json
Authorization: Bearer <jwt-
token>

12 High Создание task Headers request:


Content-Type: application/json
Accept: application/json
Authorization: Bearer <jwt-
token>

13 High Добавление label в Headers request:


task (можно Content-Type: application/json
добавить Accept: application/json
несколько) Authorization: Bearer <jwt-
token>
13 High Добавление label в Headers request:
task (можно Content-Type: application/json
добавить Accept: application/json
несколько) Authorization: Bearer <jwt-
token>

14 High Получение всех Headers request:


labels в task Content-Type: application/json
Accept: application/json
Authorization: Bearer <jwt-
token>

15 High Обновление всех Headers request:


labels в task Content-Type: application/json
Accept: application/json
Authorization: Bearer <jwt-
token>

16 High Удаление label из Headers request:


task Content-Type: application/json
Accept: application/json
Authorization: Bearer <jwt-
token>
api/v1/docs# как примерВидео на Youtube:https://youtu.be/7BvrTyrOVIM

Тестовые данные Шаги

Требования: https://try.vikunja.io/api/v1/docs#tag/user/paths/~1register/postPostman:
Отправить POST запрос https://try.vikunja.io/api/v1/register
Body -> Raw -> JSON{ "em
Проверить код состояния
Проверить тело ответа от
сервера

Требования: https://try.vikunja.io/api/v1/docs#tag/user/paths/~1login/postPostman:
Отправить POST запрос https://try.vikunja.io/api/v1/login
Body -> Raw -> JSON{ "long
Проверить код состояния
Проверить тело ответа от
сервера

Требования: https://try.vikunja.io/api/v1/docs#tag/user/paths/~1register/postPostman:
Отправить POST запрос https://try.vikunja.io/api/v1/login
Body -> Raw -> JSON{ "em
Проверить код состояния
Требования: https://try.vikunja.io/api/v1/docs#tag/user/paths/~1register/postPostman: Body -> Raw -> JSON{ "em

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


сервера

Требования: https://try.vikunja.io/api/v1/docs#tag/user/paths/~1register/postPostman:
Отправить POST запрос https://try.vikunja.io/api/v1/login
Body -> Raw -> JSON{ "em
Проверить код состояния
Проверить тело ответа от
сервера

Требования: https://try.vikunja.io/api/v1/docs#tag/labelsPostman:
Отправить PUT запрос https://try.vikunja.io/api/v1/labels
Body -> Raw -> JSON{ "created": "string", "crea
Проверить код состояния
Требования: https://try.vikunja.io/api/v1/docs#tag/labelsPostman: Body -> Raw -> JSON{ "created": "string", "crea

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


сервера

Требования: https://try.vikunja.io/api/v1/docs#tag/labels/paths/~1labels~1{id}/putPostman:
Отправить PUT запрос https://try.vikunja.io/api/v1/labels/{id}
Body -> Raw -> JSON{
Проверить код состояния
Требования: https://try.vikunja.io/api/v1/docs#tag/labels/paths/~1labels~1{id}/putPostman: Body -> Raw -> JSON{

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


сервера

Требования: https://try.vikunja.io/api/v1/docs#tag/labels/paths/~1labels~1{id}/get
Отправить GET запрос https://try.vikunja.io/api/v1/labels/{id}
Проверить код состояния
Проверить тело ответа от
сервера

Требования: https://try.vikunja.io/api/v1/docs#tag/labels/paths/~1labels~1{id}/get
Отправить GET запрос https://try.vikunja.io/api/v1/labels/{id_NOT_EXIST}
Проверить код состояния
Требования: https://try.vikunja.io/api/v1/docs#tag/labels/paths/~1labels~1{id}/get

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


сервера

Требования: https://try.vikunja.io/api/v1/docs#tag/labels/paths/~1labels~1{id}/get
Отправить GET запрос https://try.vikunja.io/api/v1/labels/{id_forbidden}
Проверить код состояния
Проверить тело ответа от
сервера
Требования: https://try.vikunja.io/api/v1/docs#tag/labels/paths/~1labels~1{id}/delete

amespace, потом создать list, который будет в namespace, затем создать task тем самым добавляя task в list
Требования:https://try.vikunja.io/api/v1/docs#tag/namespace/paths/~1namespaces/put

Требования:https://try.vikunja.io/api/v1/docs#tag/list/paths/~1namespaces~1{namespaceID}~1lists/put

Требования:https://try.vikunja.io/api/v1/docs#tag/task/paths/~1lists~1{id}/put

Требования:https://try.vikunja.io/api/v1/docs#tag/labels/paths/~1tasks~1{task}~1labels/put
Требования:https://try.vikunja.io/api/v1/docs#tag/labels/paths/~1tasks~1{task}~1labels/put

Требования:https://try.vikunja.io/api/v1/docs#tag/labels/paths/~1tasks~1{task}~1labels/get

Требования:https://try.vikunja.io/api/v1/docs#tag/labels/paths/~1tasks~1{taskID}~1labels~1bulk/post

Требования:https://try.vikunja.io/api/v1/docs#tag/labels/paths/~1tasks~1{task}~1labels~1{label}/delete
Ссылка на презентацию:https://docs.google.com/presentation/d/1U5muCseYcNBFOtgfyQ0E8BCIkkUt6jJAeZ6Eft8IM

Ожидаемый результат Статус Link to bug


прохождения report (Link
Passed or Failed of defect)

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


HTTP Status: 200 OK Passed
Пользователь успешно Failed Здесь есть
зарегистрировован дефект
Тело ответа в формате JSON
возращается от сервера и будет иметь В теле
следующий вид: ответа от
{ сервера
отсутствует
"created": "string", ключ "email":
"email": "string", "string"
"id": 0,
"name": "string",
"updated": "string", Также
"username": "string", присутствует
"web.Auth": null лишний ключ
} "name":
"string",
Запрос успешно отправлен на сервер Passed
HTTP Status: 200 OK Passed
Авторизация успешно пройдена. Passed
Происходит генерация токена.
Тело ответа в формате JSON
возращается от сервера и будет иметь
следующий вид:
{

"token": "string"
Запрос успешно отправлен на сервер NotTested
HTTP
} Status: 400 Bad Request NotTested
Тело ответа в формате JSON NotTested
возращается от сервера и будет иметь
следующий вид: {
"code": 1001,
"message": "A user with this username
already exists."
}

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


HTTP Status: 400 Bad Request NotTested
Тело ответа в формате JSON NotTested
возращается от сервера и будет иметь
следующий вид: {
"code": 1002,
"message": "A user with this email
address already exists."
}

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


HTTP Status: 201 Created NotTested
Тело ответа в формате JSON NotTested
возращается от сервера и будет иметь
следующий вид:
{
"created": "string",
"created_by": {
"created": "string",
"email": "string",
"id": 0,
"name": "string",
"updated": "string",
"username": "string",
"web.Auth": null
},
"description": "string",
"hex_color": "string",
"id": 0,
"title": "string",
"updated": "string",
"web.CRUDable": null,
"web.Rights": null
}

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


HTTP Status: 200 OK NotTested
Тело ответа в формате JSON NotTested
возращается от сервера и будет иметь
следующий вид:
{
"created": "string",
"created_by": {
"created": "string",
"email": "string",
"id": 0,
"name": "string",
"updated": "string",
"username": "string",
"web.Auth": null
},
"description": "string",
"hex_color": "string",
"id": 0,
"title": "string",
"updated": "string",
"web.CRUDable": null,
"web.Rights": null
}
Запрос успешно отправлен на сервер NotTested
HTTP Status: 200 OK NotTested
Тело ответа в формате JSON NotTested
возращается от сервера и будет иметь
следующий вид
{
"created": "string",
"created_by":
{
"created": "string",
"email": "string",
"id": 0,
"name": "string",
"updated": "string",
"username": "string",
"web.Auth": null
},
"description": "string",
"hex_color": "string",
"id": 0,
"title": "string",
"updated": "string",
"web.CRUDable": null,
"web.Rights": null
}
Запрос успешно отправлен на сервер
HTTP Status: 404 Not Found
Тело ответа в формате JSON
возращается от сервера и будет иметь
следующий вид
{

"code": 0,
"message": "Not Found"
}
Запрос успешно отправлен на сервер
HTTP Status:403 Forbidden
Тело ответа в формате JSON
возращается от сервера и будет иметь

тем создать task тем самым добавляя task в list


Комментарий

Поле заголовка запроса Content-Type используется для


указания медиа типа данных в теле сообщения.

Заголовок помогает серверу правильно расшифровать


сообщение.
Указывая в заголовке Accept, мы даем серверу понять, какие
данные готовы принять в ответ.
Реальная полезная нагрузка из Devtools:
{
"max_right": null,
"max_right": null,
"id": 0,
"title": "ProtestinginfoQA",
"hex_color": "e8e8e8",
"description": "",
"created_by": {
"max_right": null,
"id": 0,
"email": "",
"username": "",
"name": "",
"exp": 0,
"type": 0,
"created": null,
"updated": null,
"settings": {
"max_right": null,
"name": "",
"email_reminders_enabled": true,
"discoverable_by_name": false,
"discoverable_by_email": false,
"overdue_tasks_reminders_enabled": true,
"week_start": 0,
"timezone": "",
"language": "en"
}
},
"list_id": 0,
"text_color": "#4a4a4a",
"created": "1970-01-01T00:00:00.000Z",
"updated": "1970-01-01T00:00:00.000Z"
}

Ответ от сервера:
{"id":7,"title":"ProtestinginfoQA","description":"","hex_color":"e8
e8e8","created_by":
{"id":1,"name":"","username":"demo","email":"demo@vikunja.
io","created":"0001-01-01T00:00:00Z","updated":"0001-01-
01T00:00:00Z"},"created":"2023-02-

Вам также может понравиться