Fly*_*179 26 statistics unit-testing probability
具体来说,我有一个方法从列表中选择n个项目,其中%的符合一个标准,b%符合第二个,依此类推.一个简单的例子是选择5个项目,其中50%具有值为'true'的给定属性,50%'false'; 该方法有50%的时间返回2真/ 3假,另外50%,3真/ 2假.
从统计学上讲,这意味着超过100次运行,我应该得到大约250真/ 250假,但由于随机性,240/260是完全可能的.
对此进行单元测试的最佳方法是什么?我假设即使技术上300/200是可能的,如果发生这种情况,它应该可能无法通过测试.对于这样的案例,是否存在普遍接受的容忍度?如果是这样,您如何确定这是什么?
编辑:在我正在处理的代码中,我没有使用伪随机数生成器或强制它随时间平衡的机制,因为挑选出的列表是在不同的生成机器.我需要能够证明,随着时间的推移,符合每个标准的平均项目数将趋向于所需的百分比.
Ste*_*ger 22
随机和统计数据在单元测试中不受青睐.单元测试应始终返回相同的结果.总是.不是大多数.
您可以做的是尝试删除正在测试的逻辑的随机生成器.然后,您可以模拟随机生成器并返回预定义的值.
其他想法:
您可以考虑更改实现以使其更易于测试.尽量减少随机值.例如,您可以只获取一个随机值来确定与平均分布的偏差.这很容易测试.如果随机值为零,则应获得平均预期的精确分布.如果该值例如是1.0,则您会错过某个已定义因子的平均值,例如10%.您也可以实现一些高斯分布等.我知道这不是这里的主题,但如果您可以随意实现它,请考虑可测试性.
归档时间: |
|
查看次数: |
2709 次 |
最近记录: |