【发布时间】:2018-06-01 14:58:26
【问题描述】:
我有一个 C++ 应用程序,它基于某种算法为某些操作选择 5 个实体之一。
我正在编写一个单元测试以确保所有 5 个都有相同的概率被选中。我正在运行 1000 次测试并获得结果,每个人都被选择了多少次。这是结果示例 202、192、224、195、187
如果计数接近 200,添加检查是否正确?
我正在使用 boost 测试库。
【问题讨论】:
-
为您认为“接近 200”设置一个边界。结果减去200,得到绝对值,看看是否在边界内。
-
@DeiDei 所以假设 10% 然后 200 - 20
-
更通用的解决方案是实际测量方差:en.wikipedia.org/wiki/Variance
-
这是一道统计题,而不是编程题。考虑改为在 math.stackexchange.com 上询问。
-
如果某个结果出现的概率不等于 1,那么也有一个非零概率它不会出现。因此,即使算法按要求运行,您设计的任何单元测试有时也会失败。与其使用分布的单元测试,不如进行分析以确定导致算法表现出所需统计行为的输入条件集,并确认算法仅提供此类输入。然后,单元测试可能是确认算法始终提供合适输入的一种选择。
标签: c++ unit-testing boost