SOAP

Простой протокол доступа к объектам

Погружаемся в мир SOAP - простой, но мощный протокол для обмена данными в приложениях.

SOAP (Simple Object Access Protocol)

это протокол для обмена структурированными сообщениями между компьютерами в распределённой сети. Он используется для взаимодействия веб-сервисов и основан на стандартах XML для форматирования сообщений.

Основные принципы SOAP

SOAP - это XML-based протокол, который обеспечивает стандартизированный способ обмена сообщениями между приложениями. SOAP основан на архитектуре клиент-сервер, где клиент отправляет запросы, а сервер отвечает.

XML-формат

SOAP-сообщения представляют собой XML-документы, которые легко читаются и обрабатываются.

Независимость от языка и платформы

SOAP работает независимо от языка программирования и операционной системы.

Стандартность

SOAP является открытым стандартом, поддерживаемым многими компаниями и разработчиками.

Широкое применение

SOAP широко используется во многих отраслях, включая веб-сервисы, интеграцию приложений и мобильные приложения.

Структура SOAP-сообщения

SOAP-сообщения имеют четкую структуру, которая состоит из заголовка и тела сообщения.

Заголовок

Содержит информацию о маршрутизации, аутентификации и других метаданных.

Тело

Содержит фактические данные, которые передаются между приложениями.

Создание SOAP-запросов

SOAP-запросы отправляются клиентом и содержат информацию о том, что клиент хочет получить от сервера.

Пример SOAP-запроса

<soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/”> <soapenv:Header/> <soapenv:Body> <ns1:GetWeatherData xmlns:ns1=”http://www.example.com/weather/”> <ns1:City>London</ns1:City> </ns1:GetWeatherData> </soapenv:Body> </soapenv:Envelope>

Анализ SOAP-ответов

SOAP-ответы возвращаются сервером и содержат результат запроса, отправленного клиентом.

Обработка ответа

Проверяется код состояния и наличие ошибок.

Извлечение данных

Данные из тела сообщения извлекаются и анализируются.

Проверка соответствия

Данные сравниваются с ожидаемыми результатами.

Инструменты для тестирования SOAP

Множество инструментов доступны для тестирования SOAP-сервисов.

Практические примеры SOAP-взаимодействия

SOAP используется в различных сферах.

01

Веб-сервисы

SOAP-сервисы предоставляют доступ к функциональности через сеть.

02

Интеграция приложений

SOAP позволяет приложениям разных платформ обмениваться данными.

03

Мобильные приложения

SOAP-сервисы используются для взаимодействия мобильных приложений с серверной частью.

Интеграция SOAP в автоматизированные тесты

Автоматизация тестирования SOAP-сервисов позволяет сэкономить время и ресурсы.

Автоматизация

Тесты выполняются автоматически, что позволяет сократить время тестирования.

Повторяемость

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

Отчетность

Тесты предоставляют подробные отчеты о результатах.

Тестирование SOAP API

SOAP сервер предоставляет три метода:

  1. get_post_count: Возвращает количество опубликованных постов.
  2. get_latest_posts: Возвращает заданное количество последних постов.
  3. create_contact_form_entry: Создает новую запись контактной формы.

Наш SOAP сервер доступен по адресу: https://dev.emeli.in.ua/wp-admin/admin-ajax.php?action=emeli_soap

Теперь давайте протестируем каждый метод в Postman

Метод get_post_count

 

    • Создайте новый POST запрос на URL https://dev.emeli.in.ua/wp-admin/admin-ajax.php?action=emeli_soap
    • В заголовках добавьте:
      • Key: Content-Type
      • Value: text/xml
    • В теле запроса используйте следующий XML:

      <soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:urn=”urn:emeli_soap”>
      <soapenv:Header/>
      <soapenv:Body>
      <urn:get_post_count/>
      </soapenv:Body>
      </soapenv:Envelope>

Пояснение:

Метод get_post_count отправляет SOAP-запрос на сервер для получения количества постов.
Давайте разберем этот запрос по шагам:

URL и метод

Запрос отправляется по адресу:

https://dev.emeli.in.ua/wp-admin/admin-ajax.php?action=emeli_soap

Метод — это POST, что означает, что мы отправляем данные на сервер. URL содержит параметр action=emeli_soap, указывающий, что сервер обработает SOAP-запрос, связанный с функциональностью emeli_soap.

Заголовки (Headers)

Чтобы сервер правильно распознал тип данных, мы указываем заголовок Content-Type:

  • Key: Content-Type
  • Value: text/xml

Этот заголовок говорит серверу, что данные, которые мы отправляем, представлены в формате XML, что стандартно для SOAP-запросов.

Тело запроса (Request Body)

SOAP-запрос передает XML-документ в теле, который содержит необходимые данные для выполнения определенной команды. В вашем случае это:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:emeli_soap">
<soapenv:Header/>
<soapenv:Body>
<urn:get_post_count/>
</soapenv:Body>
</soapenv:Envelope>

Разбор XML:

  • <soapenv:Envelope>: Оболочка, которая обозначает, что это SOAP-сообщение.
    • xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/": Указывает на пространство имен SOAP (стандартный URL, используемый для SOAP-запросов).
    • xmlns:urn="urn:emeli_soap": Определяет пространство имен для конкретного сервиса, в данном случае — для веб-службы emeli_soap.
  • <soapenv:Header/>: Заголовок в SOAP-сообщении, который в данном случае пуст (нет необходимости передавать дополнительные данные).
  • <soapenv:Body>: Основная часть запроса, где передается действие.
    • <urn:get_post_count/>: Это метод, который вызывается. Он должен вернуть количество постов.

Ожидаемый ответ

Когда сервер получит этот запрос, он должен выполнить метод get_post_count и вернуть результат в виде SOAP-ответа с количеством постов на сайте.

<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/” xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:SOAP-ENC=”http://schemas.xmlsoap.org/soap/encoding/”>
<SOAP-ENV:Body>
<ns1:get_post_countResponse xmlns:ns1=”urn:emeli_soap”>
<return xsi:type=”xsd:integer”>757</return>
</ns1:get_post_countResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Ответ, который вы получили, показывает, что запрос успешно обработан, и сервер вернул количество постов — 757.

Метод get_latest_posts

 

    • Используйте тот же URL и заголовки
    • В теле запроса используйте:

      <soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:urn=”urn:emeli_soap”>
      <soapenv:Header/>
      <soapenv:Body>
      <urn:get_latest_posts>
      <count>5</count>
      </urn:get_latest_posts>
      </soapenv:Body>
      </soapenv:Envelope>

Пояснение:

Этот SOAP-запрос отправляется для получения последних 5 постов с сервера, используя метод get_latest_posts. Р
азберём запрос по элементам:

1. <soapenv:Envelope>

Это основной элемент, который содержит всё SOAP-сообщение. Он обозначает “оболочку” для запроса.

  • xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/": Пространство имен (namespace), которое указывает, что это сообщение соответствует спецификации SOAP.
  • xmlns:urn="urn:emeli_soap": Пространство имен для веб-службы emeli_soap. Оно связано с функциональностью конкретного SOAP-сервиса, на который отправляется запрос.

2. <soapenv:Header/>

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

3. <soapenv:Body>

Это основная часть SOAP-запроса, содержащая конкретный метод и его параметры.

  • <urn:get_latest_posts>: Метод, который вызывается на сервере. В данном случае это get_latest_posts — получение последних постов.
    • xmlns:urn="urn:emeli_soap": Пространство имен, которое указывает, что метод принадлежит к веб-службе emeli_soap.

4. <count>5</count>

Это параметр, передаваемый методу get_latest_posts, который указывает количество постов, которые нужно вернуть. В данном случае передано значение 5, что значит, что сервер должен вернуть последние 5 постов.

Метод create_contact_form_entry

  • Используйте тот же URL и заголовки
  • В теле запроса используйте:

    <soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:urn=”urn:emeli_soap”>
    <soapenv:Header/>
    <soapenv:Body>
    <urn:create_contact_form_entry>
    <name>Иван Иваненко</name>
    <email>ivan@ivanenko.com</email>
    <message>Это сообщение через SOAP</message>
    </urn:create_contact_form_entry>
    </soapenv:Body>
    </soapenv:Envelope>

Пояснення

Этот SOAP-запрос используется для отправки данных контактной формы через метод create_contact_form_entry. Разберём его по элементам:

1. <soapenv:Envelope>

Этот элемент является “оболочкой” для SOAP-запроса, которая содержит всю структуру сообщения.

  • xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/": Пространство имен, которое указывает, что сообщение соответствует спецификации SOAP.
  • xmlns:urn="urn:emeli_soap": Пространство имен, связанное с веб-службой emeli_soap, к которой направляется запрос.

2. <soapenv:Header/>

Этот элемент предназначен для заголовков сообщения, но в данном запросе он пуст. Заголовки могут содержать дополнительную информацию, такую как аутентификация или параметры сеанса, но здесь это не требуется.

3. <soapenv:Body>

Основная часть SOAP-запроса, в которой находятся данные, передаваемые серверу для выполнения конкретного метода.

  • <urn:create_contact_form_entry>: Метод, который вызывается на сервере. В данном случае это create_contact_form_entry, который, судя по названию, обрабатывает данные формы обратной связи.
    • Пространство имен urn="urn:emeli_soap" указывает, что этот метод принадлежит веб-службе emeli_soap.

4. Передаваемые параметры

Внутри метода передаются три параметра, которые соответствуют полям контактной формы:

  • <name>: Имя отправителя. В данном случае это Иван Иваненко.
  • <email>: Электронная почта отправителя. В данном случае это ivan@ivanenko.com.
  • <message>: Сообщение, отправленное пользователем через контактную форму. Здесь это “Это сообщение через SOAP”.

Задания для самостоятельной работы

Задание 1: Обработка ошибок

  • Создайте копию запроса “Get Latest Posts”.
  • Измените XML, указав отрицательное число постов:
     
    <urn:get_latest_posts> <count>-1</count> </urn:get_latest_posts>
  • Отправьте запрос и изучите, как API обрабатывает некорректные данные.

Задание 2: Создание тестов в Postman

  • Откройте вкладку “Tests” в запросе “Get Post Count”.
  • Добавьте следующий JavaScript код для проверки ответа:

    var xmlResponse = xml2Json(responseBody); var postCount = parseInt(xmlResponse['SOAP-ENV:Envelope']['SOAP-ENV:Body']['ns1:get_post_countResponse']['return']);pm.test("Post count is a positive number", function () { pm.expect(postCount).to.be.above(0); });
  • Запустите запрос и проверьте результаты теста.
  • Создайте аналогичные тесты для других запросов.

Хотите больше узнать о тестировании SOAP API?


Присоединяйтесь к нашему месячному курсу, где вы получите полное руководство по тестированию SOAP API, включая настройку, интеграцию и автоматизацию тестов. Практические занятия помогут вам освоить все ключевые аспекты и внедрить SOAP в ваши QA-процессы. Не упустите возможность улучшить свои навыки и повысить профессиональный уровень!

Рекомендованные курсы

SELENIUM WEBDRIVER

JAVA QA BASIC AUTOMATION

Преимущества

  • Освоение языка Java Java – это один из самых популярных языков программирования в индустрии программного обеспечения. Изучение Java позволит вам работать с множеством инструментов и технологий в области разработки и автоматизированного тестирования.
  • Умение создавать автоматизированные тесты Навыки автоматизации тестирования чрезвычайно важны для повышения эффективности и точности тестирования программного обеспечения.
  • Освоение jUnit, TestNG, Cucumber jUnit – это один из самых популярных фреймворков для юнит-тестирования в Java. TestNG предоставляет больше возможностей для настройки тестовых сценариев и группирования тестов. Cucumber позволяет писать тесты в виде читаемых сценариев, которые может понимать даже человек, не занятый тестированием.
  • Обучение на реальных проектах
  • Индивидуальный подход
  • Сертификат и признание
Срок обучения -> 2 месяца
Вечернее обучение -> 2 раза в неделю
Формат обучения -> вживую в Skype
Подробнее

JAVA QA ADVANCED AUTOMATION

Преимущества

  • Углубленные знания Java Курс позволяет расширить и углубить ваши знания в языке программирования Java, что является фундаментом для многих автоматизированных тестов и разработки программного обеспечения.
  • Расширение автом. навыков Вы изучите продвинутые техники автоматизированного тестирования, которые помогут вам создавать более сложные тестовые сценарии и обеспечить высокое качество тестов.
  • Углубление в архитектуре ПО Курс может предоставить знания по архитектурным паттернам и структурам программного обеспечения, что может быть полезным для создания более расширяемых и поддерживаемых автоматизированных тестовых наборов.
  • Индивидуальный подход
  • Повышение карьерных возможностей Знание продвинутых техник автоматизации тестирования может повысить вашу конкурентоспособность на рынке труда и привести к улучшению вашей заработной платы.
  • Сертификат и признание
Срок обучения: от 1 месяца
Вечернее обучение -> 2 раза в неделю
Формат обучения -> вживую в Skype
Подробнее
CYPRESS (NODE.JS)

JAVASCRIPT QA BASIC AUTOMATION

Преимущества

  • Использование JavaScript и Cypress JavaScript – один из самых популярных языков программирования веб-разработчиков, а Cypress – мощный фреймворк для автоматизированного тестирования веб-приложений.
  • Сосредоточенность на веб-автоматизации Курс специализируется на автоматизации тестирования веб-приложений, что является важным навыком для качества инженера QA.
  • Практические задачи и проекты Важным преимуществом может быть возможность практического применения знаний посредством выполнения задач и разработки автоматизированных тестовых сценариев для реальных веб-приложений.
  • Индивидуальный подход
  • Работа с GIT
  • Сертификат и признание
Срок обучения -> 2 месяца
Вечернее обучение -> 2 раза в неделю
Формат обучения -> вживую в Skype
Подробнее

Поддержка и вопросы

Если вам требуется какая-либо поддержка или у вас возникли дополнительные вопросы, не стесняйтесь связаться с нами – мы готовы быстро оказать вам помощь.

Через чат-бот

Мы также присутствуем в социальных сетях! Подписывайтесь на нас и получайте последние новости, акции, скидки, бесплатные тренинги и участие в марафонах.
Будем рады видеть вас в нашем сообществе!

Курсы

Публичная оферта. Авторское право © 2024 Школа подготовки тестировщиков