Как написать модульные тесты для библиотеки шума Perlin?

В настоящее время я работаю с существующей реализацией шума Perlin, которая поставляется вместе с кучей кода, который я пытаюсь очистить. Код, о котором идет речь, подвергается строгой проверке, и я хотел бы убедиться, что каждый из его компонентов проходит надлежащее тестирование на наличие каких-либо скрытых ошибок.

Тем не менее, я не уверен, как бы я мог проверить правильность реализации шума Перлина в этом случае. Я приветствую все предложения.

1 ответ

Решение

Это сложная проблема, и, вероятно, нет единственного лучшего решения.

Для некоторых свойств изображений вы можете выполнять автоматические тесты с использованием методов Computer Vision. То есть, если предполагается, что ваш выходной шум Perlin может быть мозаичным, фильтр обнаружения краев мог бы обнаружить проблемы. У меня также были хорошие результаты при использовании фильтров БПФ, когда я работал над классификатором изображений для текстур зерна на основе перлин-шума. По моему опыту, реализация таких тестов может занять больше времени, чем создание тестируемого кода. Чтобы свести к минимуму это, я бы придерживался библиотек, таких как OpenCV, Octave и т. Д. Кроме того, этот подход зависит от наличия хорошего вывода для построения ваших тестов.

С определенной точки зрения, шум Перлина является генератором случайных чисел. С этой целью вы можете использовать наборы тестов RNG, такие как набор статистических тестов NIST или тесты Diehard. Этот подход зависит от наличия хорошего вывода для построения ваших тестов.

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

Другие вопросы по тегам