Помощь с Java + Spring для автоматизации тестированиия webService-ов

На проекте стоит задачи написать автоматические тесты на проверку #webservices используя #java и #spring. Может кто-нибудь посоветовать с чего начать, какие подводные камни можно встретить, best practice и так далее. Буду благодарен за любую помощь

Опыт показывает что лучше всего для webService-ов использовать SoapUI (можно даже фришный). В нем создать нужные тесты (что гораздо быстрее и удобнее чем делать этот из джавы), а потом запускать проект мавеном с плагином в любой CI системе.

Если уж очень хочеться городить еще один джавишный “псевдоинтегрейшн фреймворк”, то надо сначала уточнить какие именно веб сервисы, SOAP или RESTful?

1 лайк

Если просто сделать три запроса, то SoapUI лучше, если что-то сложнее, берите Spring +RestTemplate

SoapUI прикольный. Но с вынесением общих методов и кода там чутка печально. Еще размер проекта растет как на дрожжах. Под несколько сотен мегабайт может вполне уйти на десятке сервисов. Начинаю уже подумывать об отдельных проектах под каждый сервис. Но это тоже не очень удобно.

В про-версии с этим все ок. Лайфхак, если дорого покупать, это девелопить в триальной про версии, а ранить мавеном с про плагином, он бесплатен как ни странно. Конечно каждые две недели продлевать триал это не выход, но все же )))

1 лайк

А чем PRO в лучшую сторону отличается от Free версии? Особенно интересно в плане размеров проекта и переиспользования кода? Хотя, там есть DataSource и его можно как-то применить, чтобы уменьшить число тестов…

С maven’ом делал эксперименты. И были с этим проблемы. Особенно при работе с SoapUI выше 5-й версии. Что-то там не собиралось и даже на сайте у них есть плашка с предупреждением об этом: https://www.soapui.org/test-automation/maven/maven-2-x.html
Мне эта магия не понравилась сильно. На 5.0.0 версии смог собрать проект (пришлось через программистов на их зеркало настроится, т.к. нет выхода в глобальную сеть). Но при прогоне тестов выяснилось, что в отчет не попадали данные о прогоне теста (логи). Хотя при запуске через консоль они писались. Поэтому этот способ пока отпал.

Еще проблему одну неприятную вскрыл, когда правил тесты в версии 5.2.1 и потом запускал на версии 5.0.0, оказывается последняя версия портит XML-структуру проекта добавляя в шаблоны-запросов символ переноса \r причем он не служебный, а как обычный вставляется в тело CDATA. В итоге структура XML была нарушена и в конце каждой строки были эти символы - \r
Причем в версии 5.2.1 их не видно в редакторе, а в самом проектном файле, если открыть через Notepad++ их видно.

P.S. закупки я не делаю, но слышал, что планировалось сделать закупку нескольких про-лицензий soapUI, или ReadyAPI, так и не разобрался в чем там разница у них. Но мне для текущей работы в принципе хватало и Free версии, но штучек с DataDriven и расширенными отчетами, хотелось бы. Если купят, то буду рад. Посмотрю, что оно еще дает в работе.

А чем PRO в лучшую сторону отличается от Free версии?

В про есть понятие композитного проекта, когда проект не один огромный XML документ, а более структурно разбит на модули, что удобнее при командной разработке (к сожалению на мавене это не заведется, так что все равно нужно будет потом переганять в обычный, так что тут польза сомнительная) Переиспользование кода в про версии довольно неплохо сделано, можно выносить код во внешние груви либы и подключать импортами где нужно, не супер конечно, но удобнее чем никак.

С maven’ом делал эксперименты. И были с этим проблемы.

Единствення проблема, с которой я столкнулся, это большой размер джарника плагина, иногда при первой выкачке мавеном оно обрывалось по таймауту. Решалась проблема выкачкой вручную и засовываением в локальный репозиторий. И да, soapui-pro-maven-plugin версия 5.1.2.

правил тесты в версии 5.2.1 и потом запускал на версии 5.0.0

я бы удивился если бы было иначе ))

soapUI, или ReadyAPI, так и не разобрался в чем там разница у них

“Ready! API combines the power of SoapUI NG Pro, LoadUI NG Pro, Secure, ServiceV, and API Monitoring in AlertSite into a single pane of glass.” Тоесть ReadyAPI это уже целый набор утилит, с общим дашбордом и одной точкой входа, с помощью которого можно делать много чего полезного. SoapUI Pro тепер разрабатывается под другим названием- “SoapUI NG Pro”. ОупенСорсный же СоапЮай, походу так и останеться SoapUI.

1 лайк

Всем привет.

не стал создавать новые темы, т.к. эта очень похожа. Подскажите, пожалуйста,

  1. Есть АПИ соапное и я хочу запускать его через Java проект.
  2. Попробовал 2 варианта
    1-й вариант: через библиотеку com.eviware.soapui

@Test
public void createNewCustWithNavApi() throws Exception{
    WsdlProject project = new WsdlProject("http://my-url-to-wsdl-file");

    TestSuite testSuite = project.getTestSuiteByName("My TestSuite");
    TestCase testCase = testSuite.getTestCaseByName("My TestCase");

    TestRunner runner = testCase.run( new PropertiesMap(), false );
    assert TestRunner.Status.FINISHED.equals(runner.getStatus());
}

Так вот при запуске данного теста, во первых ругается на авторизацию, во вторых мне не понятно, почему я не могу передавать не урл, а файл xml моего соапного проекта, в котором уже прописаны груви скрипты для сет данных…

2-й вариант - это через wsimport, пробовал по шагам, которые описал Игорь Хрол у себя в статье
В этом варианте у меня не получается выполнить чек, а именно как получить результат?.. Буду рад абсолютно за любую помощь.

Спасибо!

Всем спасибо :slight_smile:
Получилось самому разобраться, с помощью wsimport.