Что такое WSDL (Web Services Description Language)?

«Что такое WSDL (Web Services Description Language)?» — вопрос из категории API тестирование, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

WSDL (Web Services Description Language) — это XML-документ, который описывает контракт SOAP-веб-сервиса. Он служит формальной спецификацией, определяющей, как взаимодействовать с сервисом.

Что описывает WSDL:

  • Типы данных (types): Сложные структуры данных, используемые в запросах и ответах (определяются с помощью XML Schema - XSD).
  • Операции (operations): Конкретные действия, которые можно выполнить (например, getUser, createOrder).
  • Сообщения (messages): Структура входящих и исходящих сообщений для каждой операции.
  • Порты (ports) и привязки (bindings): Технические детали: протокол (SOAP/HTTP, SOAP/JMS) и адрес конечной точки (endpoint).

Пример фрагмента WSDL, описывающего операцию getUser:

<wsdl:definitions targetNamespace="http://example.com/user">
  <wsdl:types>
    <xsd:schema>
      <xsd:element name="getUserRequest">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="userId" type="xsd:integer"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>
  </wsdl:types>

  <wsdl:message name="getUserInput">
    <wsdl:part name="parameters" element="tns:getUserRequest"/>
  </wsdl:message>

  <wsdl:portType name="UserServicePortType">
    <wsdl:operation name="getUser">
      <wsdl:input message="tns:getUserInput"/>
    </wsdl:operation>
  </wsdl:portType>
</wsdl:definitions>

Применение в QA и автоматизации:

  1. Понимание контракта: WSDL — главный источник истины для тестировщика. По нему можно понять, какие запросы допустимы и какие ответы ожидать.
  2. Генерация запросов: Инструменты вроде SoapUI, Postman (для SOAP) или библиотеки (zeep для Python, JAX-WS для Java) могут импортировать WSDL и автоматически создавать шаблоны запросов.
  3. Валидация ответов: Автоматические проверки могут валидировать структуру и типы данных в ответах сервера на соответствие XSD-схеме из WSDL.