【问题标题】:Unit testing for stochastic processes?随机过程的单元测试?
【发布时间】:2011-03-20 17:11:54
【问题描述】:

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

【问题讨论】:

    标签: unit-testing simulation stochastic-process


    【解决方案1】:

    这是涵盖此主题的nice blog post。基本上你需要将一个受控随机性注入到被测对象中。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 听起来很有趣,但该链接似乎已弃用。
      【解决方案3】:

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

      【讨论】:

      • 固定种子方法的一个弱点可能是,如果您更改正在测试的算法,使其对随机生成器执行更多调用(或更少调用),那么您还必须修复再次进行单元测试以适应这种变化。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-19
          • 1970-01-01
          • 1970-01-01
          • 2021-09-25
          相关资源
          最近更新 更多