Автоматизация тестирования веб-сервисов, web API

Добрый день.

Возможно, кто-то уже сталкивался с автоматизацией тестирования web сервисов, API и сможет подсказать/рассказать как это лучше настроить и сделать. Если есть что-то другое, лучше и удобней, чем SOAP UI для данной цели, то просьба так же поделиться своим опытом и знаниями. К сожалению, на данный момент у меня нет опыта в подобном тестировании.

Что нужно: простота в использовании тулы, настройке и поддержке. Визуализация процесса прогона тестов не нужна, нужны быстродействие и стабильность.
Веб-сервис, который нужно автоматизировать: product web API. Бек-энд написан на C#. Веб морда данного API сделана с использованием swagger. Запросы: GET, POST.
Что хотелось бы автоматизировать для начала: отправка параметризированных GET/POST запросов, получение ответа и проверка всё ли данные на месте, корректны ли они.
Более детально как использую данный API для получения данных (мануально):

  • открываю в браузере url типа http://test-product-api.com/swagger/ui/index#!/Variants/Variants_GetVariant
  • в одно поле ввожу уникальное id, во второе поле - уникальный language и нажимаю кнопку получить данные
  • данные приходят в формате application/json - в саму веб морду (или application/xml - если request url отдельно загружаешь в браузерную строку), которые анализируешь и проверяешь всё ли корректно. Немного в картинках:

Получение данных по web API (для одного конкретного варианта и для одной языковой локализации):

Буду очень благодарен за любую помощь и советы.
Спасибо!

Посмотри в сторону тулзы RestSharp

4 лайка

А чем именно не устраивает SOAP UI?

Я использовал c# HTTP Client (HttpClient Class (System.Net.Http) | Microsoft Learn). Очень похоже на первый взгляд, что RestSharp - это обертка вокруг HTTP Client, т.е. должна быть поудобнее в использовании.

1 лайк

SoapUI для тестирования REST это мне кажется перебор. Он не очень то удобен в этом плане и к тому же большинство вкусных фич в платной версии. Гораздо проще заюзать любой Unit тест фреймворк + любую REST либу.

3 лайка

В поддержку данного фреймворка.
Он прост и не требует дополнительных настроек.

2 лайка

Ну я в дот нетах не гуру, но может быт как то так: Атрибуты в NUnit для реализации Data Driven Tests / Habr
P.S.: Гуглите в сторону параметризации тестов

Спасибо за совет.

Т.е. я смогу без лишних усилий и определенных знаний (немного .Net знаю) сделать стабильные и быстрые тесты для API? И еще вопрос: допустим, мне нужно будет прогонять тесты для разных web API с использованием разных входных данных в запросе, это так же будет осуществимо с помощью данного фреймворка?

Например:
API и варианты GET запросов:
http://api01.test.com:80/api/v1/variants/Test%20_1?language=en-us6
http://api01.test.com:80/api/v1/variants/Test%20_2?language=de-de2

http://api01.test.com:80/api/v1/families/Test%20_1?language=en-us
http://api01.test.com:80/api/v1/families/Test%20_2?language=de-de

http://api01.test.com:80/products/v1/families/Test%20_1/variantnames?language=en-us

т.е. сотни подобных запросов, только с разными параметрами и вариациями в url

Знание языка все равно нужно. Это в любом случае.
По-поводу параметризированных тестов - это тоже очень хороший вариант.
Я бы параметризировал по передаваемым параметрам, т.к. их может быть много, а вот эндпоинтов нет…
И все-равно нужно все оборачивать.
В самом же RestSharp вобще дают совет возвращать C# объекты. И потом их использовать для проверок.
Я использую такой же принцип, только на джава и с http://rest-assured.io/.
Делаю запрос, получаю ответ, парсю в джава объект и потом уже проверяю.
Как то так.

Да и чуть не забыл.
Сам swagger может эти классы генерить.

И используйте эти модели в свое удовольствие.

привет,

возможно postman так же подойдет.
Очень простой инструмент, в нем есть переменные, так что можно параметризовать запросы.
Запросы объединяются в коллекции, которые можно прогонять с помощью newman.
При прогоне коллекций можно даже создавать junit отчеты.

Из проблем - невозможность работы с БД, то есть сходить в базу и убедится, что сервис отработал правильно с помощью postman нельзя.

А в целом инструмент очень вкусный:)

1 лайк

Спасибо, @dshy :slight_smile:
Я только начинаю в нем разбираться, с переменными, коллекциями. Если будут проблемы по конкретному моменту, я могу уточнить, написав вам?

Вообще, если у вас там имеют место json структуры ответов от апишек, посмотрите Json Schema Validator. У себя успешно заюзали, все довольны)

да, конечно, если я смогу ответить, буду рад помочь.

Я использую Jmeter. Это инструмент для нагрузочного тестирования, но прекрасно подходит и для функционального

Используем RestSharp, плюс NJsonSchema для валидации схемы, для генерации классов http://json2csharp.com/

1 лайк