В чем разница между WSDL и XSD
Что проверяют
Работали ли вы с SOAP-интеграциями. Вопрос из мира enterprise, и там он проверяет, умеете ли вы читать контракт службы, а не только дёргать её через готовый клиент.
Как отвечать
XSD описывает данные: какие элементы и атрибуты допустимы в XML-документе, какого они типа, обязательны ли, сколько раз могут повторяться, какие есть ограничения по длине и формату. По XSD документ проверяется на соответствие.
WSDL описывает службу: какие операции она предоставляет, какие сообщения принимает и возвращает, по какому протоколу и по какому адресу к ней обращаться. Типы данных внутри WSDL описаны как раз через XSD, обычно в разделе types или подключены отдельным файлом.
Проще всего сказать так: XSD это словарь и грамматика сообщений, WSDL это инструкция, куда и в каком порядке их слать.
Что из этого следует для тестировщика:
- по WSDL генерируется клиент (например, в SoapUI), и оттуда сразу видны все операции с примерами запросов;
- по XSD проверяется корректность запроса и ответа, и первое, что стоит делать при разборе дефекта, это прогнать сообщение через валидацию по схеме;
- негативные проверки строятся прямо из XSD: обязательные поля, границы длин, перечисления допустимых значений, форматы дат;
- изменение XSD это изменение контракта, и именно там ищут причину, когда интеграция сломалась после релиза у смежников.
Полезно добавить современную параллель: в мире REST ту же пару ролей играет OpenAPI, где описание операций и схемы данных лежат в одном документе.
Где спотыкаются
Считают WSDL и XSD взаимозаменяемыми.
Не проверяют сообщение по схеме и долго ищут причину отказа, который сервер уже объяснил кодом ошибки валидации.
Забывают про пространства имён: тот же по виду XML не проходит проверку, потому что элемент объявлен в другом пространстве.