Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Автоматизация API. Какие "best practices" есть?

rest
api
Теги: #<Tag:0x00007fedbb1aff58> #<Tag:0x00007fedbb1afcb0>

(Volodymyr Valigura) #1

Столкнулся с проблемой отсутствия информации, или не достаточно хорошо искал информацию по тестированию API, необходима ваша помощь.

Сразу оговорюсь, API раньше не тестировал, и некому подсказать.

Есть абстрактная задача написать авто тесты API “для понимания что что-то поломалось при изменениях”, конкретно ТЗ для тестирования нет.

Если не трудно, поделитесь вашим опытом тестирования API:

  1. Где лучше исполнять тесты:
  • на отдельном сервере, где есть подготовленная база, и она всегда в каком-то первоначальном состоянии. Тесть там настроены данные и я всегда знаю по какому id получу какие данные.
  • на общем staging, где данные всегда меняются - тогда тесты нужно разрабатывать универсальными, то есть в каждом тесте сначала создавать какую-то сущность а потом ее проверять.
  1. Какие тесты гоняются на проде, и надо ли? Фактически там данные меняются всегда, и там нельзя удалять, видоизменять и создавать данные.
  2. Что необходимо тестировать в границах разумного. Например, в CREATE проверять только наличие созданного вопроса или структуру созданного вопроса или проходится по каждому полю и проверять наполнение. Или например в GET запросах проверять параметр на Null, или на четкое совпадения из данными?
  3. Возможно есть у кого-то ссылки на полезный материал чтобы почитать или примеры на Git с хорошей структурой тестов.

Буду благодарен за помощь.


(Mykola Zakoishchykov) #2
  1. Где лучше исполнять тесты?
    У меня гоняются на стейджинге, т к там данные регулируемы и действия, которые производят тесты можно не удалять. Стейджинг на 100% соответствует продакшну, баги из-за несоответствия не проходят в бой.
  2. Какие тесты гоняются на проде, и надо ли?
    У меня - нет ничего кроме ручных тестов и тестов работы микросервисов (отдают ли сервисы на запросы нужные ответы, обычно это GET и POST запросы). Раньше там были полноценные тесты, не касающиеся клиента, сейчас из-за специфики сервисов от этого отказался.
  3. Что необходимо тестировать в границах разумного?
    Я смотрю в первую очередь бизнес-логику. Все ли происходит так, как требуется для корректной и безпроблемной работы.
    Полный список всего, что надо бы проверять я как-то увидел в чатике тестировщиков и решил, что полностью согласен с ним (но такое покрытие руки не доходят сделать): * статус ответа
    а) наличие некоторых нужных строк в ответе
    б) граничные значения параметров
    в) типы данных
    г) количество вхождений
    д) схема ответа
    е) хедеры
    ж) корректные ошибки
    з) обязательность параметров
    и) сочетания параметров

(Volodymyr Valigura) #3

Спасибо, картинка немного прояснилась.


(Sergey Brit) #4

Я бы добавил. Можно добавить проверку схем респонсов.


(Sergey Brit) #5

У вас девелоперы используют вспомогательные инструменты. Например SWAGGER?
https://swagger.io/
И как пример http://petstore.swagger.io/


(Volodymyr Valigura) #6

Нет, не используют.


(Sergey Brit) #7

Подскажите им. Это очень удобно.Ну и вам в карму + будет :slight_smile:


(Volodymyr Valigura) #8

Ок, спасибо.