涉及随机数的单元测试算法

时间:2012-10-13 21:40:55

标签: unit-testing testing random tdd fractals

我正在写一些关于分形和随机地形生成的代码。具体来说,我现在使用的是Diamond-Square算法。对于那些不知道的人,它基本上获得了四个值的平均值,并且每一步都添加一个随机数。我将如何测试结果?我应该使用已知种子并手动计算平均值加上随机值,或者是什么?相反,我应该使用随机数计算代码中的结果吗?或者还有另一种方式吗?此外,一些关于逆向过程的想法(a.k.a.TDD,代码前的写入测试)将非常感激。)

2 个答案:

答案 0 :(得分:8)

您可以使用模拟框架来模拟随机数生成。这样就可以从结果中删除随机性,并且能够使用一组静态的预定义测试用例来测试代码。

在所有情况下,您不会测试随机数生成,而是测试您正在进行的计算。如果你有一个错误,你真的需要知道用于重现故障的随机数。

答案 1 :(得分:1)

只需为某些迭代选择种子和数字(也就是在实际使用它之前调用该PRNG的次数),并在主代码和单元中使用这些相同的数据(种子和迭代)试验。这些数据可以在配置文件中,可以由主代码和单元测试访问。