13

有没有一种健全的方法来对随机过程进行单元测试?例如,假设您已经为特定系统模型编写了模拟器。模拟器根据 rngs 的种子随机工作,因此无法预测系统的状态,如果可以,则每次测试都应在尝试测试类的任何方法之前将系统置于特定状态。有一个更好的方法吗?

4

5 回答 5

7

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

于 2010-07-25T10:46:15.233 回答
4

这是一篇很好的博客文章,涵盖了这个主题。基本上,您需要将受控随机性注入到被测对象中。

于 2010-07-25T10:07:44.893 回答
1

也许你可以使用 JUnitTheories来解决这个问题。

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

于 2010-07-25T10:11:23.623 回答
0

如果您的模型是随机的,那么您可以将输出视为随机生成的样本。然后,在您的单元测试功能中,您可以使用置信区间执行某种假设测试。如果测试输出在置信范围内,则测试成功。但是,将有可能产生假阳性/假阴性。

于 2021-07-01T20:32:39.313 回答
0

您需要找到系统的 Q0 和 p00。p00 是预测状态,而 qo 是计算状态。预测状态可以导致找到循环系统,它是最小值,比如系统中的 k。

于 2021-02-13T15:12:40.033 回答