Работали ли вы с SOAP
Что проверяют
Сталкивались ли вы с интеграциями, где контракт описан заранее и меняется через согласование, а не «мы тут поле добавили». Такое живёт в банках, страховании и госсервисах, и работодателю важно, не испугаетесь ли вы XML. Уточняют: «как построите набор тестов, имея на руках WSDL».
Как отвечать
Дайте суть протокола, а потом практику:
- сообщение:
Envelopeс необязательнымHeaderи обязательнымBody, ошибки вFault; в версии 1.1 этоfaultcodeиfaultstringплюс заголовокSOAPAction, в 1.2 этоCodeиReasonи типapplication/soap+xml; - контракт: WSDL описывает типы через XSD, операции, привязку и адрес, из него генерируются клиенты и заготовки запросов;
- транспорт: один HTTP-эндпоинт и метод POST, операция определяется телом сообщения, а не путём;
- надстройки: WS-Security с подписью и
UsernameToken, WS-Addressing, MTOM для вложений, в российских интеграциях подпись по ГОСТ.
Инструменты называйте предметно. SoapUI и ReadyAPI генерируют запросы из WSDL и поднимают мок-сервис, Postman отправляет сырой XML при вручную выставленных заголовках, curl -d @request.xml годится для быстрой проверки, ответ удобно разбирать через XPath и xmllint. Для автоматизации: zeep в Python, сгенерированный из WSDL клиент в Java, Karate для сценариев.
Отдельно скажите про проверки, которые здесь важнее, чем в REST: валидация ответа по XSD, обработка Fault на бизнес-ошибках, nillable элементы, порядок элементов, кодировка и пространства имён.
С SOAP не работали: так и скажите, добавив, с чего начнёте. Взять WSDL, сгенерировать запросы, проверить ответ по XSD. Изображать опыт бессмысленно: одного вопроса про Fault хватит.
Где спотыкаются
Называют SOAP просто обменом XML и не могут объяснить, зачем нужен WSDL. Именно машиночитаемый контракт отличает его от произвольного XML поверх HTTP.
Считают код 200 признаком успеха. В версии 1.1 ошибка бизнес-логики штатно приезжает с кодом 500 и Fault в теле, а бывает наоборот: код успешный, отказ внутри Body.
Ждут семантики REST: адреса на каждый ресурс, 404 на отсутствующую запись, 201 на создание. Здесь адрес один, а результат операции читается из тела ответа.