В случае вещей, которые сложно протестировать с использованием традиционных методов в стиле xUnit, таких как различные конвертеры, XSLT и т. Д. Я часто использую технику, основанную на сравнении выходных данных.Тестовая программа выдает некоторые результаты при первом запуске.Я удостоверяюсь, что это правильно, и сохраняю его для последующего использования.При следующих запусках программа сравнивает новый вывод с ранее сохраненным выводом и показывает любые различия.После этого я могу либо исправить программу, чтобы снова сопоставить выходные данные, либо (, и это важно! ). Я могу принять изменения, чтобы обновленные данные использовались для сравнения.
OfКонечно, есть и другие аспекты, такие как использование различной предварительной обработки для сравнения и сравнения, например, сравнение XML с использованием канонического представления, сначала анализируется JSON, s-выражения читаются с использованием считывателя lisp и т. д., в то время как представление с довольно печатным изображением используется для сравнения.,Сравнение может быть повторно выполнено с использованием некоторых указанных преобразований, таких как удаление частей вывода.
Я использую такие методы как для python, где программа драйвера вызывает приложение WSGI с использованием запросов, определенных в тестовом сценарии, так и для некоторого общегоПрограммы на Лиспе, в том числе конвертер из случайного / неработающего HTML в собственный XML-формат и система управления линейным ускорителем, в которой алгоритмы управления выдают выходные данные на основе s-expr, выполняя их с использованием имитаторов устройств, которые также производят некоторые выходные данные.
ПроблемаЯ не знаю, как точно назвать такую технику.Я знаю, что он используется в других местах, и даже есть тестовая среда под названием izh-test , которая использует нечто подобное.Но я никогда не слышал о каком-либо конкретном названии для него, включая часть «принять изменения»Тестирование на основе данных?Похоже, не совсем.Есть предложения?