четверг, 20 июля 2017 г.

Как отправить SOAP-запрос в Soap Ui

Если вы никогда раньше не слышали про SOAP-запросы, то вам сюда 

Давайте рассмотрим на примере, который вы можете прямо сейчас взять и повторить. Показывать я буду на системе Users, которая находится в открытом доступе. А запросы будем посылать через бесплатный инструмент Soap Ui.

Все то же самое, но в видео варианте

Отправить первый запроса с нуля


1. Запустить Soap Ui.

2. File — New SOAP Project

Создаем новый проект

3. В открывшемся окне нужно указать имя проекта и его WSDL.
  • Имя — это то, что будет отображаться в левой части. Не стоит давать абстрактные имена типа "Test", иначе потом у вас будет десяток проектов с одним названием и поди угадай, где какой Smile :). Мы тестируем Users, так проект и назовем. Если было бы несколько стендов, давали бы более конкретные названия: «Users TEST», «Users PREPROD», «Users PROD»...
  • WSDL — фактически это ссылка, по которой вы получаете доступ к методам. Если вам нужно проверить SOAP-запросы, просите дать вам WSDL. Получаем мы ее от разработчиков, для Users это http://users.bugred.ru/tasks/soap/WrapperSoapServer.php?wsdl
Указали название и WSDL

4. Нажать «Ок» → Soap Ui по WSDL автоматически сгенерит проект и все доступные методы

Вот он, проект

5. Развернуть проект по кнопочке «+» слева от названия → мы увидим все методы, которые можно вызывать.

Список доступных методов

6. Выберем, например, метод регистрации — doRegister. Разворачиваем его: Soap Ui при чтении WSDL сам создает базовый запрос на каждый метод. Смотрим, что внутри Request 1

Метод doRegister
Ага, уже примерно понятно, что делает метод и как его отправить:
— регистрирует нового пользователя (понимаем из названия);
— нужно указать емейл, имя и пароль (понимаем из описания полей).

Проверим себя, прочитаем, что умеет этот метод — открываем документацию, делаем Ctrl + F по названию метода. Ну да, вроде все верно! Давайте создадим пользователя test_soap_1@mail.ru

А как будем тестировать, что пользователь создан? Вдруг метод делает «ничего», всегда возвращая «успешно»?  Проверим, что сейчас пользователя нет. Открываем http://users.bugred.ru, делаем поиск. Ничего! Пользователя пока нету)))

Проверяем, что такого пользователя пока не существует
Пора отправлять SOAP-запрос!

7. Заполняем поля:
  • email — test_soap_1@mail.ru
  • name — Тестовое имя
  • password — 1
Нажимаем "Отправить" — зеленая стрелочка в верхнем левом углу запроса

Отправляем запрос

О, ответ вернул какую-то фигню непустой! В нем мы видим переданные нами значения и какие-то новые поля, пустые (что логично, мы же их не передавали):

Ответ без ошибки!
Проверим, правда ли пользователь создан. Снова открываем http://users.bugred.ru и ищем по email — test_soap_1@mail.ru. О, теперь результат непустой, такой пользователь существует! И автор у него — SOAP, что верно. Так и было задумано по ТЗ.

Не верим ответу по API. проверяем в системе
Вот, собственно, и все!

Вставили в Soap Ui WSDL-ку, и инструмент сам сгенерил нам реквесты. Выбираем любой, заполняем, отправляем! А главное — вы можете прямо сейчас повторить все то же самое (разве что другие емейл и имя пользователю дать, уникальные). Круто же? 5 минут назад впервые услышал про SOAP-запросы, а тут Р-р-р-раз, и отправил первый запрос Smile :)

См также:
Освоение тестирования SOAP API — полезная статья с более подробным описанием, что такое WSDL, XSD, и других страшных слов 

А от меня еще пара заметок по инструменту из серии HOWTO


Авторизоваться


Это Users — открытая система. У вас в компании наверняка API будет скрыто под паролем. Для указания авторизации слева внизу запроса нажмите Auth → раскройте выпадающий список → Add New Authorization Basic → и там уже вводите логин и пароль.

Так добавлять авторизацию
Это добавит авторизацию на уровне одного конкретного запроса. Если запросов много и разных, можно настроить авторизацию глобально для всего проекта — слева внизу Properties

Глобальные настройки

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

Переименовать запрос


Тыкнуть на запрос — F2
Или правой кнопкой мыши — Rename.

И даем более осмысленное название, например, «Успешная регистрация»

Переименовать запрос

Клонировать запрос


Тыкнуть на запрос — F9
Или правой кнопкой мыши — Clone Request.

Клонировать запрос

Очень полезная опция, когда мы хотим изменить что-то одно и иметь под рукой комплект тестов. Клонируем успешную регистрацию, делаем ей название «Уже существующий email» или другое название. Зависит от того, какую именно проверку вы хотите провести.

Например, метод UpdateUserOneField — он позволяет отредактировать только одно поле пользователя. А самих полей у нас много! Поэтому создаем первый тест, например, на дату рождения. А потом клонируем, меняя название и содержание. Проверяем все поля:
  • email
  • hobby
  • name
  • ...
Полный список полей можно подсмотреть в методе FullUpdateUser.

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

Создать новый запрос


Тыкнуть на метод (не запрос, а уровнем выше) — Ctrl + N.
Или правой кнопкой на название метода → new request



Это будет запрос, сформированный на основании XSD. С пустыми полями и без авторизации. Тот, который мы заполняли в первом разделе этого блог-поста.

См также:
Освоение тестирования SOAP API — напоминаю ссылочку с описанием, что такое XSD 
Тестирование SOAP-сервиса с помощью SoapUI — как сэмулировать сервис, если реальный еще не готов
Postman – ваш помощник в тестировании API — POST / GET запросы на реальном примере


Домашнее задание


Попробуйте создать пользователя в Users через SOAP! Или поисследуйте другие SOAP-методы приложения, это придаст уверенности в своих знаниях =) 


PS — статья написана в помощь студентам моего курса «Тестирование REST API»

Добавлена на Testbase в навык использования инструментов. Теперь не потеряется!

8 комментариев:

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

    ОтветитьУдалить
  2. Ольга, спасибо за прекрасное объяснение и предоставление такого сервиса для тренировок. Хотел бы спросить, как мне редактировать свой профиль через завпросы, если я залогинился через соц.сеть? e-mail'а то нет. :)

    ОтветитьУдалить
    Ответы
    1. Не за что) Ну, раз нет емейла, значит никак) Вы же логинились не через запросы

      Удалить
  3. Сервис не работает.
    Error loading [http://users.bugred.ru/tasks/soap/WrapperSoapServer.php?wsdl]: java.lang.Exception: Failed to load url; http://users.bugred.ru/tasks/soap/WrapperSoapServer.php?wsdl, 0

    ОтветитьУдалить
    Ответы
    1. Работает сервис, иначе бы ГУИ не открывался. WSDL тоже прекрасно читается

      Удалить
    2. У нас проблема в том что soapUI не генерирует запросы из XML

      Удалить