随机过程的单元测试?

imo*_*hak 12 simulation unit-testing stochastic-process

是否有一种理智的单元测试随机过程的方法?例如,假设您已为特定系统模型编写了模拟器.模拟器基于rng的种子随机工作,因此无法预测系统的状态,并且如果每次测试都可以在系统尝试测试任何类的方法之前将系统置于特定状态.有一个更好的方法吗?

Dre*_*all 7

两个明显的选择是删除随机性(即,使用固定的已知种子进行单元测试并从那里开始),或者进行统计检验(即,运行相同的测试用例一百万次并验证平均值和方差(等)符合预期).后者可能是对您的系统的更好测试,但您将不得不忍受一些误报.

  • 固定种子方法的一个弱点可能是,如果您更改正在测试的算法,以便它对随机生成器执行更多调用(或更少的调用),那么您还必须再次修复单元测试以满足此更改. (4认同)

Dar*_*rov 4

这是一篇涵盖该主题的精彩博客文章。基本上,您需要向被测对象注入受控随机性。