LINUX.ORG.RU

Про тестирование


1

1

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

Суть в том, что библиотека делает в основном некие вычисления (математические), правильность которых нужно проверить. Моё видение тестов такое: если там вдруг после некоторого коммита резко станет неправильно работать некоторая функция, и программа будет падать - на это начихать с точки зрения тестирования. Главное, не пропускать «тихие» ошибки, когда функция вроде как отработала, но вернула неверный результат.

И я накатал такие тесты: построить дерево и проверить, правильно ли оно построено. Потом ещё в для каждого алгоритма поиска делается проверка с простейшим алгоритмом перебора (сложности O(n)) и сравнением результатов.

В основном это тесты, проверяющие некоторые математические свойства этих деревьев. А как делают настоящие программисты? Что именно тестируют? Ещё что-то слыхал про инструменты автоматического юнит тестирования. Это как?

И вопрос не совсем по теме: Ещё есть некие бинарные операции, хотелось бы проверить некоторые их свойства (ассоциативность, например). Для этого придется проверять на равенство 2 предположительно равных floting point значения, полученных разными способами. Как правильно это сделать?


В основном это тесты, проверяющие некоторые математические свойства этих деревьев. А как делают настоящие программисты? Что именно тестируют? Ещё что-то слыхал про инструменты автоматического юнит тестирования. Это как?

И вопрос не совсем по теме: Ещё есть некие бинарные операции, хотелось бы проверить некоторые их свойства (ассоциативность, например). Для этого придется проверять на равенство 2 предположительно равных floting point значения, полученных разными способами. Как правильно это сделать?

Есть (оригинальная) библиотека QuickCheck для Haskell, реализация которой есть и для кучи других языков. Смысл её такой: есть некоторое свойство, истинность которого ты хочешь проверить. Ты пишешь функцию (метод), которая проверяет это свойство для некоторых входных данных. Библиотека берёт на себя работу по генерации набора входных данных, которые используются при проверке свойства. Для составных типов данных (к примеру, твоих деревьев), естественно, нужно написать отдельные генераторы.

theNamelessOne ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.