607
社区成员
原文出自《构建之法》第 2 章 2.1.2 —— 好的单元测试标准
问:如果用随机数以增加测试的真实性,好么?
答:一般情况下不好,如果某个随机数导致程序出错,但是下一次运行又不能重复这一错误,则于事无补。我们还是要用随机数等办法「增加测试的真实性」,但不是在单元测试中。单元测试不能解决所有问题,不必期望它会发现所有的缺陷。
在结对编程中,我和队友使用了包含随机数的单元测试用例。正如我在学期开始分析的那样,随机数是由随机数种子seed生成的,我们可以在每次单元测试开始时,记录生成随机数的种子seed。当某个数据导致程序出错时,我们只需要通过追踪seed即可复原完整的输入。
此外,在学期开始时我还有如下观点:
我认为随机最大的问题不在于不可复现,而在于其输出也是随机的。对于预先给定的几个单元测试输入,我们可以根据模块的功能定义,分别手工构造其相应的输出。但对于随机的输入数据,我们只能通过另一个程序来模拟运行的情况并给出理论上正确的输出。但这样一来,如何确保模拟程序本身是绝对正确的呢?我认为这才是在单元测试中使用随机数的最大问题。
在结对编程中,我的待测试程序本身使用了状压DP、剪枝等多种优化。因此我另外实现了一个朴素的DP方法,来保证对拍测试的正确性。
————————————————
版权声明:本文为CSDN博主「wangxiaoge2001」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wangxiaoge2001/article/details/131262974
在结对编程中,我和队友使用了包含随机数的单元测试用例。正如我在学期开始分析的那样,随机数是由随机数种子seed生成的,我们可以在每次单元测试开始时,记录生成随机数的种子seed。当某个数据导致程序出错时,我们只需要通过追踪seed即可复原完整的输入。
好主意!