SOAP UI

SOAP UI

t.me/qa_chillout

Для тестирования SOAP используется инструмент SOAP UI. Рассмотрим данный инструмент на примере тестирования сервиса Яндекс.Спеллер. Это сервис проверки правописания, который предлагает разработчикам использовать возможность интерактивной проверки орфографии на страницах своих сайтов.

Спеллер анализирует слова, основываясь на правилах орфографии и лексике современного языка, а также использует технологии машинного обучения.


Скачать инструмент SOAP UI можно с сайта SoapUI.org, где необходимо выбрать версию Open Source.

Устанавливаем и запускаем.

Далее создаем новый проект, для этого нажмем на кнопку SOAP:

В поле Project Name необходимо ввести название проекта (можно указать любое название). Также в поле Initial WSDL указать путь к файлу WSDL. Мы будем использовать WSDL от Яндекс.Спеллера. Перейдем по ссылке, которая ведет на документацию Яндекс.Спеллера (https://yandex.ru/dev/speller/doc/dg/concepts/api-overview.html):

Скопируем и вставим ссылку в поле Initial WSDL:


После того, как подтвердим создание проекта, нажав на кнопку «ок», появится слева в меню созданный проект:

В проекте имеется два набора: SpellServiceSoap и SpellServiceSoap12 для версий 1.1 и 1.2 соответственно. Для примера мы будем использовать версию SpellServiceSoap12. Открываем запрос checkText -> Request1:

Это практически готовый запрос. Нам надо внимательно изучить документацию на проект https://yandex.ru/dev/speller/doc/dg/reference/checkText.html и заполнить запрос данными. Данные, необходимые для заполнения, обозначены знаками вопроса:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:spel="http://speller.yandex.net/services/spellservice">
   <soap:Header/>
   <soap:Body>
      <spel:CheckTextRequest lang="?" options="0" format="">
         <spel:text>?</spel:text>
      </spel:CheckTextRequest>
   </soap:Body>
</soap:Envelope>

Это параметр lang и значение в теге spel:text. Давайте в параметре lang укажем язык ru. И слово с ошибкой, например, «кылбаса». Получится следующий запрос:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:spel="http://speller.yandex.net/services/spellservice">
   <soap:Header/>
   <soap:Body>
      <spel:CheckTextRequest lang="ru" options="0" format="">
         <spel:text>кылбаса</spel:text>
      </spel:CheckTextRequest>
   </soap:Body>
</soap:Envelope>

Отправляем его, получаем ответ:

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
   <soap:Body>
      <CheckTextResponse xmlns="http://speller.yandex.net/services/spellservice">
         <SpellResult>
            <error code="1" pos="0" row="0" col="0" len="7">
               <word>кылбаса</word>
               <s>колбаса</s>
            </error>
         </SpellResult>
      </CheckTextResponse>
   </soap:Body>
</soap:Envelope>

В ответе мы видим следующие параметры, описание которых можно взять из документации:

●  SpellResult — корневой элемент;

●  error — информация об ошибке (может быть несколько или может отсутствовать);

●  word — исходное слово;

●  s — подсказка (может быть несколько или может отсутствовать).

 

Элемент <error> содержит следующие атрибуты:

●  code — код ошибки;

●  pos — позиция слова с ошибкой (отсчет от 0);

●  row — номер строки (отсчет от 0);

●  col — номер столбца (отсчет от 0);

●  len — длина слова с ошибкой.


Итак, мы отправили запрос, получили ответ. Это базовые возможности SoapUI. Но можно ли быть уверенными, что ответ у нас пришел верный? Нет. Необходимо написать тесты на проверку результата ответа, другими словами, как это называется в SOAP – Assertion.

Assertion

Первоначально нужно создать TestSuite (набор тестов), для этого откройте меню проекта и выберите New TestSuite:


Указываем название, можно оставить дефолтное и для подтверждения нажать необходимо ОК:

В окне редактирования сьюта можно добавить тест-кейс, нажав на зеленую галочку:

Или добавить его через контекстное меню в левом списке:


Мы создали новый тест-кейс на проверку длины слова, поэтому так и укажем название кейса:

Создадим новый реквест, выбрав Create a new SOAP Request TestStep: 


В окне New TestRequest выберем в выпадающем списке: SpellServiceSoap12, так как мы используем вторую версию api:

Далее можно добавить сразу пару проверок на то, что пришел ответ SOAP и он соответствует WSDL, и нажать ОК:

Создадим следующий запрос:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:spel="http://speller.yandex.net/services/spellservice">
   <soap:Header/>
   <soap:Body>
      <spel:CheckTextRequest lang="ru" options="0" format="">
         <spel:text>кылбаса</spel:text>
      </spel:CheckTextRequest>
   </soap:Body>
</soap:Envelope>


Отправляем его, получаем ответ:

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
   <soap:Body>
      <CheckTextResponse xmlns="http://speller.yandex.net/services/spellservice">
         <SpellResult>
            <error code="1" pos="0" row="0" col="0" len="7">
               <word>кылбаса</word>
               <s>колбаса</s>
            </error>
         </SpellResult>
      </CheckTextResponse>
   </soap:Body>
</soap:Envelope>

Из ответа нас будет интересовать следующая строка:

<error code="1" pos="0" row="0" col="0" len="7">

А именно параметр len="7", его-то мы и проверим. Нажимаем внизу на кнопку Assertions:

В Assertions имеются две проверки, которые были добавлены автоматически при создании шага, и они прошли успешно и обе зеленые. Теперь давайте добавим проверку на то, что в ответе, в len приходит значение 7. Нажимаем Add an assertion to this item:


Далее выбираем Property Content → XPath match:

Откроется окно редактирования Assert, где необходимо нажать на кнопку Declare для добавления namespace:

Оставим только первый XPath Expression, а второй удалим. Затем добавим строку с XPath, при этом дописывая к имени тега переменную namespace:

declare namespace ns1='http://speller.yandex.net/services/spellservice';
//ns1:error/@len

А в Expected Result добавим значение len, которое мы ожидаем получить, в данном случае это 7 и сохраним нашу проверку:

В результате наш составленный assert зеленый и в ответе мы получили ожидаемое значение, т.е 7:

Давайте предположим, что мы ожидали получить значение 6:

В таком случае получим ошибку, что мы ожидали 6, а по факту получили 7:

Заключение

Мы рассмотрели базовый функционал SOAP UI. Для получения углубленных знаний по SOAP UI рекомендуем ознакомиться с официальной документацией: https://www.soapui.org/docs/soap-and-wsdl/


Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».

Report Page