具体来说,我有一个方法可以从列表中选择 n 个项目,并使其中 a% 满足一个条件,b% 满足另一个条件等等。一个简化的例子是选择 5 个项目,其中 50% 具有给定属性 'true' 的值,而 50% 具有值 'false';在这种情况下,该方法会有 50% 的概率返回 2 个 true / 3 个 false,另外 50% 的概率返回 3 个 true / 2 个 false。
从统计学上讲,这意味着在 100 次运行中,我应该得到大约 250 个 true 和 250 个 false,但由于随机性,240/260 是完全可能的。
最好的单元测试方法是什么?我假设即使在技术上 300/200 是可能的,如果发生这种情况,它也应该不通过测试。是否存在一般可接受的容差范围,如果有,如何确定这个容差范围?
编辑:在我正在处理的代码中,我不能使用伪随机数生成器或强制平衡随机数分布的机制,因为选出的列表是在不同的机器上生成的。我需要能够证明,随着时间的推移,每个条件匹配的项目的平均数量将趋向于所需的百分比。