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

rest
soapui
web
api
json
webservices
http
Теги: #<Tag:0x00007fedbbdabf50> #<Tag:0x00007fedbbdabde8> #<Tag:0x00007fedbbdabbb8> #<Tag:0x00007fedbbdab9d8> #<Tag:0x00007fedbbdab848> #<Tag:0x00007fedbbdab6b8> #<Tag:0x00007fedbbdab500>

(Sergey_Kot) #1

Добрый день.

Возможно, кто-то уже сталкивался с автоматизацией тестирования 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 (для одного конкретного варианта и для одной языковой локализации):

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


(zaleg) #2

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


(Vitaliy Penkov) #3

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

Я использовал c# HTTP Client (https://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.118).aspx). Очень похоже на первый взгляд, что RestSharp - это обертка вокруг HTTP Client, т.е. должна быть поудобнее в использовании.


(rmerkushin) #4

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


(Sergey Brit) #5

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


(rmerkushin) #7

Ну я в дот нетах не гуру, но может быт как то так: https://habrahabr.ru/post/129480/
P.S.: Гуглите в сторону параметризации тестов


(Sergey_Kot) #8

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

Т.е. я смогу без лишних усилий и определенных знаний (немного .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


(Sergey Brit) #9

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


(Sergey Brit) #10

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


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


(denys shynkarenko) #11

привет,

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

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

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


(Sergey_Kot) #12

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


(Diana Sanzharevskaya) #13

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


(denys shynkarenko) #14

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


#15

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


(Ilya G) #16

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