Что такое SOAP?

«Что такое SOAP?» — вопрос из категории API тестирование, который задают на 38% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SOAP (Simple Object Access Protocol) — это протокол на основе XML для обмена структурированными сообщениями в веб-сервисах. С точки зрения тестировщика, SOAP API имеют строгую спецификацию, описываемую в WSDL (Web Services Description Language)-файле, что облегчает создание автоматизированных тестов.

Ключевые особенности для тестирования:

  • Строгая структура: Сообщение состоит из конверта (Envelope), заголовка (Header, опционально) и тела (Body). Тесты должны валидировать корректность этой структуры.
  • Независимость от транспорта: Хотя чаще всего работает поверх HTTP(S), может использоваться SMTP, JMS и др. Тестировщику нужно понимать транспортный уровень.
  • Встроенная безопасность и транзакции: Поддерживает стандарты WS-* (WS-Security, WS-AtomicTransaction), что добавляет сложности при тестировании негативных сценариев и проверке безопасности.

Пример SOAP-запроса и ответа (для теста):

<!-- SOAP Request -->
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetUserDetails xmlns="http://testcompany.com/ws">
      <userId>12345</userId>
    </GetUserDetails>
  </soap:Body>
</soap:Envelope>

<!-- SOAP Response -->
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetUserDetailsResponse xmlns="http://testcompany.com/ws">
      <User>
        <Name>John Doe</Name>
        <Email>john.doe@example.com</Email>
      </User>
    </GetUserDetailsResponse>
  </soap:Body>
</soap:Envelope>

Как тестировать SOAP API:

  1. Изучить WSDL: Это контракт API. Инструменты вроде SoapUI или Postman могут импортировать WSDL и сгенерировать каркасы запросов для всех операций.
  2. Тестирование позитивных/негативных сценариев: Проверка ответов на валидные и невалидные данные (неверный формат userId, отсутствующие обязательные поля).
  3. Валидация схемы (XSD): Проверять, что структура XML ответа соответствует ожидаемой схеме.
  4. Проверка кодов состояния HTTP: Несмотря на то, что логика ошибок часто описана в теле SOAP-ответа (элемент Fault), также важно проверять HTTP-коды (например, 500 Internal Server Error при сбое).
  5. Инструменты: SoapUI (специализированный), Postman (поддержка SOAP), RestAssured с библиотеками для XML (в Java), Python + Zeep или requests.