ABCDEFGHIJKLMNOPQRSTUVWXYZAA
1
https://petstore.swagger.io/ как пример
Видео на Youtube
:
https://youtu.be/M72eY5tHhCM

Создание запросов в Postman на основе тест-кейсов по APIhttps://t.me/protestinginfo
2
Environment: Окружение: Postman v10.8.8
3
ПриоритетНазваниеПредусловияТестовые данныеШаги Ожидаемый результатСтатус прохождения
Passed or Failed
Link to bug report (Link of defect)Комментарий
4
Пример позитивного API-теста
5
1HighДобавить нового питомца в магазин (Вызов метода POST)Headers request:
Content-Type: application/json


Обязательно: не забываем про параметры аутентификации, для этого сервиса не нужны параметры, для того, чтобы авторизоваться в систему
1 cпособ
api_key (apiKey)

Name: api_key

In: header
Value:

2 способ
petstore_auth (OAuth2, implicit)

Authorization URL: https://petstore.swagger.io/oauth/authorize

Flow: implicit
client_id:
Параметры в случае POST передаются в теле запроса в JSON объекте.
1) category: name = animal
2) name = Bulldog
3) photoUrls = https://site.com/bulldog/photo
4) tags: name = #dog
5) status = available

Тело запроса:
{
"id": 10,
"category": {
"id": 1,
"name": "animal"
},
"name": "Bulldog",
"photoUrls": [
"https://site.com/bulldog/photo"
],
"tags": [
{
"id": 1,
"name": "#dog"
}
],
"status": "available"
}
Отправить POST запрос https://petstore.swagger.io/v2/pet

или по-другому записать шаг

Инициировать вызов сервиса методом POST с телом
Запрос успешно отправлен на сервер (или запрос успешно иницирован)PassedПоле заголовка запроса Content-Type используется для указания медиа типа данных в теле сообщения.
6
Проверить код состоянияHTTP Status: 200 OKPassed
7
Проверить тело ответа от сервераНовый питомец добавлен в магазин
Тело ответа в формате JSON (сформированный объект JSON) возвращается от сервера и будет иметь следующий вид:
{
"id": 10,
"category": {
"id": 1,
"name": "animal"
},
"name": "Bulldog",
"photoUrls": [
"https://site.com/bulldog/photo"
],
"tags": [
{
"id": 1,
"name": "#dog"
}
],
"status": "available"
}
Каждое поле JSON объекта соответствует аргументу метода сервиса
Passed
8
Проверить структуру ответаСхема 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
Passed
9
Проверить заголовки ответаaccess-control-allow-headers: Content-Type,api_key,Authorization
access-control-allow-methods: GET,POST,DELETE,PUT
access-control-allow-origin: *
content-type: application/json
date:
server: Jetty(9.2.9.v20150224)
Passed
10
1.1HighИзменение статуса добавленного питомца в магазинHeaders request: Content-Type: application/jsonЗаменить status = sold


Тело запроса:
{
"id": 10,
"category": {
"id": 1,
"name": "animal"
},
"name": "Bulldog",
"photoUrls": [
"https://site.com/bulldog/photo"
],
"tags": [
{
"id": 1,
"name": "#Bulldog"
}
],
"status": "sold"
}
Отправить PUT запросhttps://petstore.swagger.io/v2/petЗапрос успешно отправлен на сервер (или запрос успешно иницирован)Passed
11
Проверить код состоянияHTTP Status: 200 OKPassed
12
Проверить тело ответа от сервераТело ответа в формате JSON возвращается от сервера и будет иметь следующий вид:
{
"id": 10,
"category": {
"id": 1,
"name": "animal"
},
"name": "Bulldog",
"photoUrls": [
"https://site.com/bulldog/photo"
],
"tags": [
{
"id": 1,
"name": "#Bulldog"
}
],
"status": "sold"
}
Изменен статус питомца на "Продано" - "status": "sold"
Passed
13
Проверить заголовки ответаaccess-control-allow-headers: Content-Type,api_key,Authorization access-control-allow-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
14
1.2HighУдаление питомца из магазинаHeaders request: Content-Type: application/json{petId} = 10
integer($int64)
(path)запрос https://petstore.swagger.io/v2/pet/{petId}
Отправить DELETE запрос https://petstore.swagger.io/v2/pet/10Запрос успешно отправлен на серверPassedЕсли еще раз удалить питомца, то будет 404

Error: Not Found
15
Проверить код состоянияHTTP Status: 200 OK
16
Проверить тело ответа от сервераТело ответа в формате JSON будет иметь следующий вид: Response body

{
"code": 200,
"type": "unknown",
"message": "10"
}
Питомец с id = 10 удален из магазина
Passed
17
Проверить заголовки ответа access-control-allow-headers: Content-Type,api_key,Authorization
access-control-allow-methods: GET,POST,DELETE,PUT
access-control-allow-origin: *
content-type: application/json
date:
server: Jetty(9.2.9.v20150224)
Passed
18
Пример негативного API-теста
19
2MediumДобавить нового питомца в магазин
Вызов метода GET - Попытка создать ресурс недопустимым методом
Headers request:
Content-Type: application/json
Accept: application/json
Параметры в случае GET передаются в теле запроса в JSON объекте.
{
"id": 10,
"category": {
"id": 1,
"name": "animal"
},
"name": "Bulldog",
"photoUrls": [
"https://site.com/bulldog/photo"
],
"tags": [
{
"id": 1,
"name": "#dog"
}
],
"status": "available"
}
Отправить GET запрос https://petstore.swagger.io/v2/petЗапрос успешно отправлен на серверNotTestedЗаголовок Accept помогает серверу правильно расшифровать сообщение.
Указывая в заголовке Accept, мы даем серверу понять, какие данные готовы принять в ответ.
20
Проверить код состоянияHTTP Status: 405 Method Not AllowedNotTested
21
Проверить тело ответа от сервераТело ответа в формате JSON будет иметь следующий вид:
{
"code": 405,
"type": "unknown"
}
описание ошибки правильное для данного типа ошибки
NotTested
22
Проверить заголовки ответаaccess-control-allow-headers: Content-Type,api_key,Authorization
access-control-allow-methods: GET,POST,DELETE,PUT
server: Jetty(9.2.9.v20150224)
NotTested
23
3MediumДобавить нового питомца в магазин
Вызов метода POST - Попытка создать ресурс c телом JSON и c content-type = XML
Headers request:
Content-Type: application/xml
Accept: application/json
Параметры в случае POST передаются в теле запроса в JSON объекте.
{
"id": 10,
"category": {
"id": 1,
"name": "animal"
},
"name": "Bulldog",
"photoUrls": [
"https://site.com/bulldog/photo"
],
"tags": [
{
"id": 1,
"name": "#dog"
}
],
"status": "available"
}
Отправить POST запрос https://petstore.swagger.io/v2/petЗапрос успешно отправлен на серверPassedЗдесь дефектТело ответа в формате JSON будет иметь следующий вид:
{
"code": 400,
"type": "unknown",
"message": "javax.xml.bind.UnmarshalException\n - with linked exception:\n[org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.]"
}
описание ошибки правильное для данного типа ошибки
24
Проверить код состоянияHTTP Status: 415 Unsupported Media Type
Код состояния HTTP соответствует типу ошибки
Failed
25
Проверить тело ответа от сервераТело ответа в формате JSON будет иметь следующий вид:
{
"code": 415,
"type": "unknown"
}
описание ошибки правильное для данного типа ошибки
Failed
26
Проверить заголовки ответаaccess-control-allow-headers: Content-Type,api_key,Authorization
access-control-allow-methods: GET,POST,DELETE,PUT
server: Jetty(9.2.9.v20150224)
Passed
27
4MediumДобавить нового питомца в магазин
Вызов метода POST - Попытка создать ресурс c телом JSON и c content-type = Javascript
Headers request:
Content-Type: application/javascript
Accept: application/json
Параметры в случае POST передаются в теле запроса в JSON объекте.
{
"id": 10,
"category": {
"id": 1,
"name": "animal"
},
"name": "Bulldog",
"photoUrls": [
"https://site.com/bulldog/photo"
],
"tags": [
{
"id": 1,
"name": "#dog"
}
],
"status": "available"
}
Отправить POST запрос https://petstore.swagger.io/v2/petЗапрос успешно отправлен на серверNotTested
28
Проверить код состоянияHTTP Status: 415 Unsupported Media Type
Код состояния HTTP соответствует типу ошибки
NotTested
29
Проверить тело ответа от сервераТело ответа в формате JSON будет иметь следующий вид:
{
"code": 415,
"type": "unknown"
}
описание ошибки правильное для данного типа ошибки
NotTested
30
Проверить заголовки ответаaccess-control-allow-headers: Content-Type,api_key,Authorization
access-control-allow-methods: GET,POST,DELETE,PUT
server: Jetty(9.2.9.v20150224)
NotTested
31
5MediumДобавить нового питомца в магазин
Вызов метода POST - Попытка создать ресурс c полем, не допускающим значение "NULL", но равен "NULL" в теле запроса
Headers request:
Content-Type: application/json
Accept: application/json
Параметры в случае POST передаются в теле запроса в JSON объекте.
{
"id": NULL,
"category": {
"id": 1,
"name": "animal"
},
"name": "Bulldog",
"photoUrls": [
"https://site.com/bulldog/photo"
],
"tags": [
{
"id": 1,
"name": "#dog"
}
],
"status": "available"
}
Отправить POST запрос https://petstore.swagger.io/v2/petЗапрос успешно отправлен на серверNotTested Поле заголовка запроса Accept используется, чтобы определить тип информации, который должен содержаться в ответе HTTP сервера
32
Проверить код состоянияHTTP Status: 400 Bad Request
Код состояния HTTP соответствует типу ошибки
NotTested
33
Проверить тело ответа от сервераТело ответа в формате JSON будет иметь следующий вид:
{
"code": 400,
"type": "unknown",
"message": "bad input"
}
описание ошибки правильное для данного типа ошибки
NotTested
34
Проверить заголовки ответаaccess-control-allow-headers: Content-Type,api_key,Authorization
access-control-allow-methods: GET,POST,DELETE,PUT
server: Jetty(9.2.9.v20150224)
NotTested
35
6MediumДобавить нового питомца в магазин
Вызов метода POST - Попытка создать ресурс c полем, не допускающим значение "null", но равен "null" в теле запроса
Headers request:
Content-Type: application/json
Параметры в случае POST передаются в теле запроса в JSON объекте.
{
"id": null,
"category": {
"id": 1,
"name": "animal"
},
"name": "Bulldog",
"photoUrls": [
"https://site.com/bulldog/photo"
],
"tags": [
{
"id": 1,
"name": "#dog"
}
],
"status": "available"
}
Отправить POST запрос https://petstore.swagger.io/v2/petЗапрос успешно отправлен на серверPassedесть дефектбудет такой ответ
{
"id": 9223372036854775807,
"category": {
"id": 1,
"name": "animal"
},
"name": "Bulldog",
"photoUrls": [
"https://site.com/bulldog/photo"
],
"tags": [
{
"id": 1,
"name": "#dog"
}
],
"status": "available"
}
и этот дефект

id как 9223372036854775807 подставляется автоматически
36
Проверить код состоянияHTTP Status: 400 bad request
Код состояния HTTP соответствует типу ошибки
Failed
37
Проверить тело ответа от сервераid должен быть типом "number", а не "nul"
Тело ответа в формате JSON будет иметь следующий вид:

{
"code": 400,
"type": "unknown",
"message": "bad input"
}
Failed
38
Проверить заголовки ответаaccess-control-allow-headers: Content-Type,api_key,Authorization
access-control-allow-methods: GET,POST,DELETE,PUT
server: Jetty(9.2.9.v20150224)
Passed
39
7MediumДобавить нового питомца в магазин
Вызов метода POST - Попытка создать ресурс с использованием несуществующего адреса
Headers tab:
Content-Type: application/json
Параметры в случае POST передаются в теле запроса в JSON объекте.
{
"id": 10,
"category": {
"id": 1,
"name": "animal"
},
"name": "Bulldog",
"photoUrls": [
"https://site.com/bulldog/photo"
],
"tags": [
{
"id": 1,
"name": "#dog"
}
],
"status": "available"
}
Отправить POST запрос https://petstore.swagger.io/v2/pet1Запрос успешно отправлен на серверNotTested
40
Проверить код состоянияHTTP Status: 404 Not Found
Код состояния HTTP соответствует типу ошибки
NotTested
41
Проверить тело ответа от сервераТело ответа в формате JSON будет иметь следующий вид:
{
"code": 404,
"type": "unknown",
"message": "null for uri: http://petstore.swagger.io/v2/pet1"
}
описание ошибки правильное для данного типа ошибки
NotTested
42
Проверить заголовки ответаaccess-control-allow-headers: Content-Type,api_key,Authorization
access-control-allow-methods: GET,POST,DELETE,PUT
server: Jetty(9.2.9.v20150224)
NotTested
43
8HighДобавить нового питомца в магазин
Вызов метода POST - Попытка создать ресурс c пустым JSON объектом
Headers tab:
Content-Type: application/json
Параметры в случае POST передаются в теле запроса в JSON объекте.
{
}
Отправить POST запрос https://petstore.swagger.io/v2/petЗапрос успешно отправлен на серверPassedНе уверена, что это корректный ожидаемый результат

По сути должно быть отображено тело JSON с сообщением об заполнении обязательных полей и иметь другой формат
{
"id": "This field is required.",
"name": "This field is required."
}
44
Проверить код состоянияHTTP Status: 200 OK
Passed
45
Проверить тело ответа от сервераТело ответа в формате JSON будет иметь следующий вид:
{
"id": 9223372036854018882,
"photoUrls": [],
"tags": []
}
Failed
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100