Что такое схема XML и как она проверяет корректность документа
Что проверяют
Умеете ли вы использовать схему как оракул: она даёт готовый источник и позитивных, и негативных проверок, а заодно очерчивает границу того, что таким способом проверить нельзя. Знание синтаксиса XSD тут вторично, важнее, что вы с ним делаете в тестах.
Как отвечать
Коротко про механику: схема задаёт допустимые элементы и атрибуты, их порядок и кратность, типы значений и ограничения (перечень, шаблон, границы). Валидатор сверяет документ со схемой и возвращает список нарушений с указанием места. Документ, который просто синтаксически цел, ещё не валиден, валидным он становится только после проверки схемой.
В тестах это выглядит так. Валидация включается прямо в автотест: xmllint --schema в командной строке, SchemaFactory и Validator в Java, lxml.etree.XMLSchema в Python.
Негативные сценарии выводятся из схемы механически: убрать обязательный элемент, переставить порядок в последовательности, нарушить тип, превысить кратность, подставить значение вне перечня, выйти за границы диапазона и длины. Позитивные берутся из граничных значений тех же ограничений.
Проверять надо обе стороны контракта: что валидный документ принимается, а невалидный отклоняется с внятным кодом ошибки, а не проглатывается молча и не роняет сервис внутренней ошибкой.
Где спотыкаются
Тестируют только счастливый путь. Схема ценна ровно тем, что из неё механически строятся отказы, а сервис, который молча принял документ с пропущенным обязательным полем, ломается уже у потребителя данных.
Считают прохождение схемы достаточным критерием. Суммы, ссылки на существующие сущности, согласованность дат схема не проверяет, и эти проверки пишутся отдельно.
Сравнивают XML как строку. Порядок атрибутов, префиксы пространств имён и незначащие пробелы меняются, не меняя смысла, поэтому эталон сравнивают структурно, иначе тесты падают на ровном месте и им перестают верить.