Модульное тестирование для случайных процессов? - PullRequest
12 голосов
/ 25 июля 2010

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

Ответы [ 3 ]

7 голосов
/ 25 июля 2010

Два очевидных варианта: убрать случайность (то есть использовать фиксированное, известное начальное число для ваших модульных тестов и продолжить оттуда) или выполнить статистическое тестирование (то есть выполнить один и тот же тестовый случай миллион раз и проверить что среднее значение и дисперсия (и т. д.) соответствуют ожиданиям). Последнее, вероятно, является лучшим тестом вашей системы, но вам придется жить с некоторыми ложными тревогами.

3 голосов
/ 25 июля 2010

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

1 голос
/ 25 июля 2010

Может быть, вы могли бы использовать JUnit Theories, чтобы решить это.

http://blogs.oracle.com/jacobc/entry/junit_theories

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