Должен ли я тестировать XML-схему? - PullRequest
5 голосов
/ 21 января 2010

Я нахожусь на самых ранних стадиях написания XML-схемы для корпоративного приложения моей работы. Проверяемый XML представляет приложение - аналогично Winforms - формы, таблицы, меню и т. Д., Но без макета.

Основной целью XSD является не столько проверка XML, сколько добавление возможности обнаружения во время разработки в файл XML, чтобы можно было получить IntelliSense для доступных элементов и атрибутов.

Когда я пишу схему, я обнаружил, что выполняю элементы TDD и проверяю документ на соответствие схеме, изменяя либо элементы / атрибуты в документе, либо схему, чтобы сделать проверку невозможной, чтобы убедиться, что я пишу схему правильно.

Это подводит меня к вопросу о том, должен ли я выполнять модульное тестирование схемы, просто чтобы добавить к нему несколько вариантов XML-кода и убедиться, что он ведет себя так, как должен.

Это, безусловно, имело бы смысл для меня, поскольку мой XSD-фу ужасен, и я хочу быть еще более уверенным, что XSD, который сам по себе является спецификацией, является правильным.

Ответы [ 3 ]

3 голосов
/ 21 января 2010

Полагаю, нет причин не проводить модульное тестирование XML-схемы. Если это код (который он есть), то TDD предпочтет его протестировать.

Другой вопрос, как это сделать? Простой подход заключается в создании двух групп образцов XML-файлов, одна из которых содержит все файлы, которые не являются допустимыми в соответствии с вашим дизайном, а другая - файлы, которые являются действительными. Затем просто проанализируйте каждую группу с помощью вашего xml-анализатора и подтвердите результаты.

Но реальная проблема заключается в создании примеров XML-файлов. Особенно если вы одновременно разрабатываете свой дизайн.

2 голосов
/ 21 января 2010

Как правило, мне очень трудно тестировать схемы XSD:

  • Для XSD часто ключевым является моделирование вашего домена, часто у меня не было проблем с самими конструкциями XSD, но я проанализировалдомен неверный.
  • Сгенерированная модель основана не на самом XSD, а на конфигурации привязки (например, JAXB для Java).В итоге вы слишком много тестируете.
  • Такие тесты, в зависимости от множества вещей, часто ломаются, особенно когда вы реорганизуете XSD.

В конце концов, чтобы улучшить качество XSD, я предпочитаю:

  • Получать ранние обзоры XSD (от коллег или QA).Когда на них смотрят реальные люди (как экземпляры XSD, так и экземпляры XML), обнаруживаются недостатки, которые никогда не будут обнаружены при автоматическом тестировании.
  • Выполните интеграционное тестирование сгенерированных экземпляров XML.Эти интеграционные тесты могут быть автоматизированы.
2 голосов
/ 21 января 2010

Если вы плохо разбираетесь в XSD, то я рекомендую вам построить XSD с использованием TDD. То есть создайте провальный модульный тест, включающий проверку некоторого XML, который вы хотите иметь, и XSD, который не позволит его проверить. Затем обновите XSD, чтобы разрешить этот XML для проверки. Затем выполните рефакторинг теста и XSD, повторяя тесты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...