Deprecated: Creation of dynamic property Yoast\Presenters\CommonArticlePresenter::$metaPropertyType is deprecated in /var/www/html/web/app/themes/tutortop-blog/Yoast/Presenters/CommonArticlePresenter.php on line 26

Deprecated: Creation of dynamic property Yoast\Presenters\CommonArticlePresenter::$metaPropertyType is deprecated in /var/www/html/web/app/themes/tutortop-blog/Yoast/Presenters/CommonArticlePresenter.php on line 26

Deprecated: Creation of dynamic property Yoast\Presenters\CommonArticlePresenter::$metaPropertyType is deprecated in /var/www/html/web/app/themes/tutortop-blog/Yoast/Presenters/CommonArticlePresenter.php on line 26
Как отправить SOAP запрос в Postman: пошаговое руководство для тестирования API
26.06.2025
220
17.5 мин

Как отправить SOAP запрос в Postman: Полное руководство для тестирования веб-сервисов

Понимание основ SOAP и подготовка к работе с Postman

Прежде чем мы перейдём к практическим шагам, важно понимать, что SOAP — это протокол обмена структурированными сообщениями в распределённых вычислительных средах. В отличие от REST, который использует простые HTTP методы, SOAP всегда использует POST запросы и требует специально сформированного XML-тела.

Как отмечает Джон Мюллер, автор книги «Web Services For Dummies»: «SOAP предоставляет строгую структуру для обмена данными, что делает его идеальным выбором для критически важных корпоративных приложений, где необходимы гарантии доставки и безопасности».

Если вы интересуетесь тестированием, то в изучении вам помогут онлайн-курсы.

Основные компоненты SOAP сообщения включают:

  • Envelope — корневой элемент, определяющий XML документ как SOAP сообщение
  • Header — необязательный элемент с метаинформацией
  • Body — обязательный элемент, содержащий фактические данные запроса
  • Fault — необязательный элемент для передачи информации об ошибках

Для успешной работы с SOAP в Postman вам понадобится:

  • Установленная версия Postman (рекомендуется последняя стабильная версия)
  • URL WSDL-файла или готовый SOAP endpoint
  • Базовое понимание XML структуры
  • Документация по методам веб-сервиса (если доступна)

Настройка SOAP endpoint в Postman

Первый и критически важный шаг — правильная настройка endpoint’а. В отличие от REST API, где URL может напрямую указывать на ресурс, SOAP использует единый endpoint для всех операций, а конкретный метод определяется содержимым XML-запроса.

Пошаговый процесс настройки:

Шаг 1: Создание нового запроса
Откройте Postman и создайте новый запрос, нажав кнопку «New» или используя комбинацию клавиш Ctrl+N (Cmd+N на Mac). Выберите «HTTP Request» из списка доступных опций.

Шаг 2: Установка HTTP метода
SOAP всегда использует POST метод. Убедитесь, что в выпадающем меню слева от поля URL выбран именно POST. Это принципиальный момент — SOAP не поддерживает GET, PUT или DELETE запросы.

Шаг 3: Ввод URL endpoint’а
Введите URL вашего SOAP сервиса в поле адреса. Обычно SOAP endpoint выглядит примерно так:

  • http://example.com/soap/service
  • https://api.company.com/webservice/soap
  • http://localhost:8080/MyWebService/Service.asmx

Практический пример: Допустим, мы работаем с веб-сервисом калькулятора. URL может выглядеть как http://www.dneonline.com/calculator.asmx. Это популярный тестовый SOAP сервис, который предоставляет базовые математические операции.

Важная деталь: если у вас есть WSDL-файл (Web Services Description Language), вы можете использовать его для автоматического определения доступных методов и их параметров. WSDL URL обычно получается добавлением «?wsdl» к основному endpoint’у: http://www.dneonline.com/calculator.asmx?wsdl

Формирование тела SOAP запроса

Создание правильного XML-тела запроса — это сердце работы с SOAP. Здесь кроется большинство ошибок новичков, поэтому разберём этот процесс максимально детально.

Базовая структура SOAP запроса:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<!-- Здесь размещается содержимое вашего запроса -->
</soap:Body>
</soap:Envelope>

Рассмотрим конкретный пример с веб-сервисом калькулятора для операции сложения:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Add xmlns="http://tempuri.org/">
<intA>5</intA>
<intB>3</intB>
</Add>
</soap:Body>
</soap:Envelope>

Пошаговое создание тела запроса в Postman:

Шаг 1: Перейдите на вкладку «Body» в интерфейсе Postman

Шаг 2: Выберите радиокнопку «raw»

Шаг 3: В выпадающем меню справа выберите «XML» вместо «Text»

Шаг 4: Скопируйте и вставьте ваш SOAP XML в текстовое поле

Критически важные моменты при формировании тела запроса:

  • Namespace’ы — убедитесь, что все необходимые пространства имён объявлены корректно
  • Регистр элементов — SOAP чувствителен к регистру, поэтому «Add» и «add» — разные элементы
  • Структура данных — строго следуйте структуре, определённой в WSDL
  • Типы данных — соблюдайте требования к типам параметров (int, string, boolean и т.д.)

Второй практический пример: Запрос к веб-сервису погоды

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<GetWeather xmlns="http://www.webserviceX.NET">
<CityName>Moscow</CityName>
<CountryName>Russia</CountryName>
</GetWeather>
</soap12:Body>
</soap12:Envelope>

Обратите внимание на различия в пространствах имён — этот пример использует SOAP 1.2 вместо SOAP 1.1, что влияет на структуру envelope’а.

Настройка заголовков HTTP для SOAP запросов

Правильная настройка HTTP заголовков критична для успешного выполнения SOAP запросов. Многие начинающие разработчики упускают этот аспект, что приводит к ошибкам 400 Bad Request или 500 Internal Server Error.

Обязательные заголовки для SOAP:

ЗаголовокЗначение для SOAP 1.1Значение для SOAP 1.2Описание
Content-Typetext/xml; charset=utf-8application/soap+xml; charset=utf-8Указывает тип содержимого запроса
SOAPAction«http://tempuri.org/Add»Не требуетсяУказывает намерение SOAP HTTP запроса
Accepttext/xmlapplication/soap+xmlУказывает предпочитаемый формат ответа
Content-LengthАвтоматическиАвтоматическиДлина тела запроса в байтах

Настройка заголовков в Postman:

Шаг 1: Перейдите на вкладку «Headers» в интерфейсе Postman

Шаг 2: Нажмите «Add Header» или начните вводить в пустой строке

Шаг 3: Добавьте следующие заголовки:

  • Key: Content-Type, Value: text/xml; charset=utf-8
  • Key: SOAPAction, Value: «http://tempuri.org/Add» (в кавычках!)
  • Key: Accept, Value: text/xml

Важная деталь касается заголовка SOAPAction: значение должно точно соответствовать тому, что указано в WSDL для конкретного метода. Для нашего примера с калькулятором, если мы вызываем метод «Add», SOAPAction будет выглядеть как «http://tempuri.org/Add».

Дополнительные заголовки, которые могут потребоваться:

  • Authorization — для аутентификации (Basic, Bearer, API Key)
  • User-Agent — идентификация клиентского приложения
  • Cache-Control — управление кешированием (обычно «no-cache»)
  • Connection — управление соединением (обычно «keep-alive»)

Профессиональный совет: если вы работаете с корпоративным SOAP сервисом, часто требуются дополнительные заголовки безопасности. Например, некоторые сервисы Microsoft требуют заголовок «X-Requested-With: XMLHttpRequest».

Мужчина работает за ноутбуком

Третий практический пример: Полная настройка заголовков для корпоративного веб-сервиса с аутентификацией:

  • Content-Type: text/xml; charset=utf-8
  • SOAPAction: «http://company.com/webservice/GetEmployeeData»
  • Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
  • Accept: text/xml, application/xml
  • User-Agent: Postman API Client v1.0

Отправка и анализ SOAP запросов

После тщательной подготовки endpoint’а, тела запроса и заголовков, настало время отправить запрос и проанализировать полученный ответ. Этот этап не менее важен, чем подготовка, поскольку правильная интерпретация результатов определяет успех всего процесса тестирования.

Процесс отправки запроса:

Шаг 1: Финальная проверка
Перед отправкой запроса обязательно проверьте:

  • Правильность URL endpoint’а
  • Корректность HTTP метода (должен быть POST)
  • Наличие всех необходимых заголовков
  • Валидность XML в теле запроса

Шаг 2: Отправка
Нажмите синюю кнопку «Send» в правом верхнем углу интерфейса Postman. В зависимости от сложности обработки и загруженности сервера, ответ может прийти за время от нескольких миллисекунд до нескольких секунд.

Анализ успешного ответа:

Успешный SOAP ответ обычно имеет следующую структуру:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<AddResponse xmlns="http://tempuri.org/">
<AddResult>8</AddResult>
</AddResponse>
</soap:Body>
</soap:Envelope>

Ключевые элементы для анализа:

  • HTTP Status Code: должен быть 200 OK для успешного запроса
  • Response Time: время выполнения запроса (отображается в правом нижнем углу)
  • Response Size: размер полученного ответа в байтах
  • Response Headers: заголовки ответа, включая Content-Type
  • Response Body: XML содержимое с результатами

Обработка ошибок SOAP:

SOAP использует специальный механизм для передачи информации об ошибках через элемент soap:Fault. Пример ответа с ошибкой:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Invalid method name: 'Addd'</faultstring>
<detail>
<message>The method 'Addd' is not supported by this service</message>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>

Типы SOAP ошибок:

  • soap:Client — ошибка в запросе клиента (неправильные параметры, некорректный XML)
  • soap:Server — ошибка на стороне сервера (внутренняя ошибка, недоступность ресурса)
  • soap:MustUnderstand — сервер не понимает обязательный заголовок
  • soap:VersionMismatch — несовместимость версий SOAP

Использование инструментов Postman для анализа:

Postman предоставляет множество встроенных инструментов для анализа ответов:

  • Pretty View — автоматическое форматирование XML для удобного чтения
  • Raw View — отображение ответа в исходном виде
  • Preview — визуализация ответа (если применимо)
  • Test Results — результаты автоматических тестов (если настроены)
  • Response Headers — детальная информация о заголовках ответа

Профессиональный совет от эксперта API тестирования Валентины Сергеевой: «При работе с SOAP сервисами обязательно логируйте полный цикл запрос-ответ. Это поможет при отладке сложных ошибок и создании документации для команды».

Продвинутые техники работы с SOAP в Postman

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

1. Использование переменных Postman в SOAP запросах

Переменные позволяют создавать гибкие и переиспользуемые запросы. Вместо жёстко заданных значений можно использовать плейсхолдеры:

<Add xmlns="http://tempuri.org/">
<intA>{{firstNumber}}</intA>
<intB>{{secondNumber}}</intB>
</Add>

Настройка переменных:

  • Перейдите в раздел «Variables» в настройках коллекции или окружения
  • Добавьте переменные: firstNumber = 10, secondNumber = 5
  • Postman автоматически подставит значения при отправке запроса

2. Создание коллекций SOAP запросов

Организация запросов в коллекции критически важна для больших проектов. Статистика показывает, что команды, использующие структурированные коллекции, на 40% быстрее выполняют регрессионное тестирование.

Рекомендуемая структура коллекции:

  • Authentication — запросы для получения токенов авторизации
  • Core Operations — основные бизнес-операции
  • Error Scenarios — тестовые случаи для проверки обработки ошибок
  • Performance Tests — запросы для нагрузочного тестирования

3. Автоматизация с помощью Pre-request Scripts

Pre-request скрипты выполняются перед отправкой запроса и позволяют динамически генерировать данные:

// Генерация случайного числа для тестирования
pm.globals.set("randomNumber", Math.floor(Math.random() * 100));

// Получение текущей даты в формате ISO
pm.globals.set("currentDate", new Date().toISOString());

4. Создание автоматических тестов для SOAP ответов

Postman позволяет создавать тесты для автоматической проверки ответов:

// Проверка статуса ответа
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});

// Проверка содержимого SOAP ответа
pm.test("SOAP response contains result", function () {
var responseText = pm.response.text();
pm.expect(responseText).to.include("AddResult");
});

// Извлечение значения из XML ответа
pm.test("Addition result is correct", function () {
var responseXml = xml2Json(pm.response.text());
var result = responseXml["soap:Envelope"]["soap:Body"]["AddResponse"]["AddResult"];
pm.expect(parseInt(result)).to.equal(15);
});

5. Работа с WS-Security

Многие корпоративные SOAP сервисы требуют WS-Security аутентификации. Пример заголовка безопасности:

<soap:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>{{username}}</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">{{password}}</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap:Header>

6. Интеграция с системами непрерывной интеграции

Postman коллекции можно запускать из командной строки с помощью Newman:

newman run soap-collection.json -e production-environment.json --reporters cli,html

Это особенно полезно для включения SOAP тестов в CI/CD пайплайны Jenkins, GitLab CI или Azure DevOps.

Мужчина программирует за ноутбуком

Сравнение различных подходов к тестированию SOAP

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

КритерийPostmanSoapUIcurlСобственный код
Простота использованияОчень высокаяСредняяНизкаяОчень низкая
ФункциональностьВысокаяОчень высокаяБазоваяПолная
СтоимостьБесплатно/ПлатноБесплатно/ПлатноБесплатноВремя разработки
Поддержка командыОтличнаяХорошаяОграниченнаяЗависит от команды
АвтоматизацияХорошаяОтличнаяХорошаяПолная

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

Реальный кейс: Тестирование банковского SOAP сервиса

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

Постановка задачи:
Необходимо протестировать веб-сервис проверки баланса, который принимает номер счёта и возвращает текущий баланс. Сервис использует SOAP 1.1 с WS-Security аутентификацией.

Технические требования:

  • Endpoint: https://bank-api.example.com/AccountService.asmx
  • Метод: GetAccountBalance
  • Аутентификация: Username Token (WS-Security)
  • Обязательные поля: AccountNumber, BankCode
  • Ожидаемый ответ: Balance, Currency, Status

Настройка запроса:

1. URL и метод: POST https://bank-api.example.com/AccountService.asmx

2. Заголовки:

  • Content-Type: text/xml; charset=utf-8
  • SOAPAction: «http://bank.example.com/GetAccountBalance»
  • Accept: text/xml

3. Тело запроса:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>{{api_username}}</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">{{api_password}}</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap:Header>
<soap:Body>
<GetAccountBalance xmlns="http://bank.example.com/">
<AccountNumber>{{account_number}}</AccountNumber>
<BankCode>{{bank_code}}</BankCode>
</GetAccountBalance>
</soap:Body>
</soap:Envelope>

4. Переменные окружения:

  • api_username: «test_user»
  • api_password: «secure_password_123»
  • account_number: «4081781234567890»
  • bank_code: «044525225»

Ожидаемый успешный ответ:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetAccountBalanceResponse xmlns="http://bank.example.com/">
<Balance>125000.50</Balance>
<Currency>RUB</Currency>
<Status>Active</Status>
<LastUpdate>2024-01-15T10:30:45</LastUpdate>
</GetAccountBalanceResponse>
</soap:Body>
</soap:Envelope>

Автоматические тесты для проверки:

pm.test("Response status is 200", function () {
pm.response.to.have.status(200);
});

pm.test("Response contains balance information", function () {
var responseText = pm.response.text();
pm.expect(responseText).to.include("GetAccountBalanceResponse");
pm.expect(responseText).to.include("Balance");
pm.expect(responseText).to.include("Currency");
});

pm.test("Balance is valid number", function () {
var responseXml = xml2Json(pm.response.text());
var balance = responseXml["soap:Envelope"]["soap:Body"]["GetAccountBalanceResponse"]["Balance"];
pm.expect(parseFloat(balance)).to.be.above(0);
});

pm.test("Response time is acceptable", function () {
pm.expect(pm.response.responseTime).to.be.below(3000);
});

Этот кейс демонстрирует, как Postman может эффективно использоваться для тестирования сложных корпоративных SOAP сервисов с продвинутыми механизмами безопасности.

Типичные ошибки и способы их решения

В процессе работы с SOAP запросами в Postman, разработчики и тестировщики часто сталкиваются с повторяющимися проблемами. Рассмотрим наиболее распространённые ошибки и эффективные способы их устранения.

1. Ошибка 400 Bad Request

Возможные причины:

  • Неправильный Content-Type заголовок
  • Отсутствующий или некорректный SOAPAction заголовок
  • Невалидная XML структура в теле запроса
  • Неправильное пространство имён (namespace)

Решение: Тщательно проверьте все заголовки и убедитесь, что XML соответствует WSDL спецификации. Используйте онлайн валидаторы XML для проверки синтаксиса.

2. Ошибка 500 Internal Server Error

Возможные причины:

  • Ошибка в бизнес-логике на стороне сервера
  • Неправильные параметры запроса
  • Нарушение ограничений безопасности
  • Временная недоступность внешних систем

Решение: Проанализируйте детали SOAP Fault в ответе, обратитесь к документации API, проверьте логи сервера (если доступны).

3. Проблемы с кодировкой символов

Особенно актуально при работе с русскими текстами или специальными символами.

Решение:

  • Убедитесь, что в XML объявлении указана правильная кодировка: encoding=»utf-8″
  • В заголовке Content-Type также укажите charset=utf-8
  • Используйте HTML entities для специальных символов (&lt;, &gt;, &amp;)

Оцените статью

5 5 (22 оценки)
Хочу стать тестировщиком!
Специально для вас мы собрали отдельную подборку лучших онлайн-курсов по QA-тестированию на рынке и сравнили их по цене, продолжительности и отзывам студентов.
Все курсы Python