and*_*ykx 31 random unit-testing
我有一个伪随机数生成器(PRNG)类,我想进行单元测试.有两种方法:
我会说第一种方法不是真正的单元测试,因为它不执行发生器的白盒测试,但另一方面它正确地测试了类的责任.第二种方法更像是一个真正的单元测试,侧重于算法,但它没有提供足够的证据来证明该类是否履行其职责.
您更喜欢哪种方法?为什么?
Ste*_*sop 30
获得相同PRNG算法的另一个实现,基于已知种子生成少量冗长的测试用例,并验证您的算法实现是否与其他人的实现相匹配.您测试的数据越多,它的可能性就越大.如果您想要认真,请研究如何对算法进行FIPS验证.
没有必要测试输出是否是随机的,因为其他人对算法的研究比你能够再现的更多.
如果您已经发明了自己的PRNG算法,那么您会遇到一个相当不同的问题,因为除了测试代码之外,您还需要测试新算法.有很多事情要做 - 我认为最重要的是对输出的统计测试,以及其他密码学家的同行评审.但是,基本上,如果你设计的PRNG算法没有足够的知识来知道如何测试它,那么它将是垃圾.
我想最终你会想要两个测试 - 因为你想确保以下两个都成立:
(1)数字分布正确,(2)特定算法按预期工作.
也许第一次测试只能偶尔运行,而第二次测试可能用于检查任何代码更改是否都没有破坏算法.
| 归档时间: | 
 | 
| 查看次数: | 13128 次 | 
| 最近记录: |