Advertisement
Guest User

Untitled

a guest
Feb 27th, 2020
440
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.83 KB | None | 1 0
  1. Инструкция по тестированию API для бэкэнд разработчиков
  2.  
  3. Подготовка и установка Postman
  4.  
  5. Для работы с postman необходимо установить postman локально (https://www.postman.com/)
  6. Предварительно необходимо установить Node.js(https://nodejs.org/ru/) и менеджер пакетов ноды NPM который устанавливается вместе с нодой.
  7. Так же в комплекте с postman идет cli утилита newman которая позволяет локально удобно прогонять все тесты. Для установки newman
  8. печатаем в консоли npm install -g newman .
  9. Создаем в корне проекта фолдер postman для коллекции и env переменных внутри. Пример фолдера можно посмотреть в проекте dbo/dbo-api.
  10. Открываем и экспортим коллекцию в постман вместе с env файлом.
  11. При добавлении теста для существующего запроса в коллекцию или прочем изменении коллекции импортим измененную коллекцию в папку postman.
  12. И запускаем тесты. Запускать тесты можно в десктоп версии по одному либо все вместе в консоли или postman runner.
  13. Чтобы запустить все реквесты в консоли нужно выполнить newman run "DBO API part 1 backup.postman_collection.json" -e "DBO-API STAGE.postman_environment.json" (имена коллекции
  14. и environment файла могут отличаться).
  15.  
  16. Правила написания хороших тестов и тестирования нашего API
  17.  
  18. Стратегия тестирования API
  19. Стратегия тестирования - это высокоуровневое описание требований к тестированию, из которого впоследствии может быть составлен подробный план тестирования, с указанием отдельных сценариев тестирования и тестовых случаев. Наша первая задача - функциональное тестирование - обеспечение правильной работы API.
  20.  
  21. Основными задачами в функциональном тестировании API являются:
  22.  
  23. Убедиться, что реализация работает правильно, как и ожидалось - никаких ошибок!
  24. Убедиться, что реализация работает так, как указано в соответствии со спецификацией требований (которая позже становится нашей документацией API).
  25. Предотвратить регрессию между слиянием и выпуском кода.
  26.  
  27. Тестовые действия API
  28. Каждый тест состоит из тестовых действий. Это отдельные действия, которые необходимо выполнить тесту в каждом потоке тестирования API. Для каждого запроса API тест должен выполнить следующие действия:
  29.  
  30. 1. Проверьте правильный код статуса HTTP. Например, создание ресурса должно возвращать 201 CREATED, а незапущенные запросы должны возвращать 403 FORBIDDEN и т. Д.
  31.  
  32. 2. Проверьте ответную нагрузку. Проверьте правильное тело JSON и правильные имена полей, типы и значения - в том числе в ответах об ошибках.
  33.  
  34. 3. Проверьте заголовки ответа. Заголовки HTTP-сервера влияют как на безопасность, так и на производительность.
  35.  
  36. 4. Проверьте правильность состояния приложения. Это не является обязательным и применяется в основном для ручного тестирования или когда пользовательский интерфейс или другой интерфейс может быть легко проверен.
  37.  
  38. 5. Проверьте основные показатели работоспособности. Если операция была успешно завершена, но заняла неоправданно много времени, тест не пройден.
  39.  
  40. Категории тестовых сценариев
  41.  
  42. Наши тестовые примеры подразделяются на следующие общие группы сценариев тестирования :
  43.  
  44. Основные позитивное тесты (positive tests)
  45. Расширенное позитивное тестирование с дополнительными параметрами
  46. Негативное тестирование с правильным вводом (negative tests)
  47. Негативное тестирование с неверным вводом
  48. Разрушительное испытание
  49. Тесты безопасности, авторизации и разрешений (которые выходят за рамки этого поста)
  50. Позитивные тесты проверяют базовую функциональность и критерии приемлемости API.
  51. Позже мы расширим позитивное тесты, чтобы включить дополнительные параметры и дополнительную функциональность.
  52. Следующая группа тестов - это негативное тестирование, где мы ожидаем, что приложение будет корректно обрабатывать проблемные сценарии как с допустимым пользовательским вводом (например, при попытке добавить существующее имя пользователя), так и с недопустимым пользовательским вводом (при попытке добавить имя пользователя, которое является нулевым).
  53. Деструктивное тестирование - это более глубокая форма негативного тестирования, когда мы намеренно пытаемся сломать API, чтобы проверить его надежность (например, отправка огромного тела полезной нагрузки в попытке переполнить систему).
  54.  
  55.  
  56.  
  57. Виды тестовых сценариев:
  58.  
  59.  
  60. 1. Основные позитивные тесты
  61.  
  62. Выполнить вызов API с допустимыми обязательными параметрами.
  63. Проверить код состояния:
  64. 1. Все запросы должны возвращать код состояния HTTP 2XX.
  65. 2. Возвращаемый код состояния соответствует спецификации:
  66. - 200 OK для запросов GET
  67. - 201 для запросов POST или PUT, создающих новый ресурс
  68. - 200, 202 или 204 для операции DELETE и т. Д. на
  69. 3. Проверить полезную нагрузку:
  70. 1. Ответ является правильно сформированным объектом JSON.
  71. 2. Структура ответа соответствует модели данных (проверка схемы: имена полей и типы полей соответствуют ожидаемым, включая вложенные объекты; значения полей соответствуют ожидаемым; ненулевые поля не равны нулю, и т.д.)
  72.  
  73. 4. Проверить заголовки:
  74. Убедитесь, что заголовки HTTP соответствуют ожидаемым, включая тип контента, соединение, управление кэшем, срок действия, время
  75. доступа, контроль доступа, происхождение, keep-alive, HSTS и другие стандартные поля заголовков - согласно спецификации.
  76. Убедитесь, что информация НЕ пропускается через заголовки (например, заголовок X-Powered-By не отправляется пользователю).
  77.  
  78. 5. Минимальные требования к производительности: Ответ получен своевременно (в пределах разумного ожидаемого времени) - как определено в плане тестирования.
  79.  
  80. Позитивные тесты и необязательные параметры :
  81.  
  82. Выполнить вызов API с допустимыми обязательными параметрами и допустимыми необязательными параметрами.
  83. Выполнить те же тесты, что и в # 1, на этот раз, включая необязательные параметры конечной точки (например, фильтр, сортировка, ограничение, пропуск и т. Д.)
  84.  
  85. Кроме того, проверьте следующие параметры:
  86. - фильтр: убедитесь, что ответ фильтруется по указанному значению.
  87. - сортировать: указать поле для сортировки, проверить параметры возрастания и убывания. Убедитесь, что ответ отсортирован в соответствии с выбранным полем и направлением сортировки.
  88. - пропустить: убедиться, что указанное количество результатов от начала набора данных пропущено
  89. - предел: убедиться, что размер набора данных ограничен указанным пределом.
  90. - limit + skip: тестовая нумерация страниц.
  91.  
  92. Проверьте комбинации всех необязательных полей (поля + sort + limit + skip) и проверьте ожидаемый ответ.
  93.  
  94.  
  95.  
  96. 2. Отрицательное тестирование
  97. Выполните вызовы API с допустимым вводом, который пытается недопустимые операции. т.е.:
  98. - Попытка создать ресурс с именем, которое уже существует (например, пользовательская конфигурация с тем же именем).
  99. - Попытка удалить ресурс, который не существует (например, пользовательская конфигурация без такого идентификатора).
  100. - Попытка обновить ресурс с недопустимыми действительными данными (например, переименование конфигурации в существующее имя).
  101. - Попытка недопустимой операции (например, удаление конфигурации пользователя без разрешения).
  102. И так далее.
  103.  
  104. Проверить код состояния:
  105. 1. Убедитесь, что отправляется ошибочный код состояния HTTP (НЕ 2XX).
  106. 2. Убедитесь, что код состояния HTTP соответствует регистру ошибки, как определено в спецификации.
  107.  
  108. Проверить пэйлоад:
  109. 1. Убедитесь, что получен ответ об ошибке.
  110. 2. Убедитесь, что формат ошибки соответствует спецификации. например, error является допустимым объектом JSON или простой строкой (как определено в спецификации)
  111. 3. Убедитесь, что имеется четкое, описательное поле сообщения об ошибке / описания
  112. 4. Убедитесь, что описание ошибки является правильным для этого случая ошибки и в соответствии со спецификацией
  113.  
  114. Проверить заголовки: Как в п.1
  115. Минимальные требования к производительности: Ответ получен своевременно (в пределах разумного ожидаемого времени) - как определено в плане тестирования.
  116.  
  117.  
  118. Исходя из расписанного выше плана тестирования хорошей практикой является создание для каждого эндпоинта двух запросов и соотственно двух тестов(позитивного и негативного)
  119. в которых исчерпывающе проверяется работа API.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement