![]() |
1
21
一年后,我现在想我对这个问题有了答案: 不! 特别是,单元测试对于回归测试总是必要和有用的,在回归测试中,一个测试被附加到一个bug报告中,并保存在代码库中,以防止该bug再回来。 但是,我怀疑任何单元测试都可以替换为一个随机生成输入的测试。即使在命令式代码的情况下,__input_157;也是您需要执行的命令式语句的顺序。当然,创建随机数据生成器是否值得,以及是否可以使随机数据生成器具有正确的分布是另一个问题。单元测试只是一种退化情况,在这种情况下,随机生成器总是给出相同的结果。 |
![]() |
2
9
你提出的是一个非常好的观点——当只适用于函数式编程时。你说了一种用命令式代码来完成这一切的方法,但是你也提到了为什么不这样做——这并不特别容易。 我认为这就是它不能取代单元测试的原因:它不太适合命令式代码。 |
![]() |
3
0
您在原始文章中所写的内容提醒了我这个问题,这是一个关于循环不变量是什么来证明循环正确的开放性问题… 不管怎样,我不确定你在正式的规范中读了多少,但是你正在沿着这条思路前进。大卫·格里斯的这本书是这方面的经典之作,我仍然没有很好地掌握这个概念,无法在日常编程中快速使用它。对正式规范的通常反应是,它是困难和复杂的,并且只有当您在安全关键系统上工作时才值得努力。但我认为有一些类似于QuickCheck公开的封底技术可以使用。 |
![]() |
4
0
可疑的我只听说过(没有用过)这种测试,但我看到了两个潜在的问题。我很想对每一个都发表评论。 误导性结果我听说过这样的测试:
很高兴知道这些对于广泛的输入都是正确的。 但如果函数只返回其输入,这两个测试都将通过。
在我看来,你想核实一下,例如,
测试复杂性完全描述输入和输出之间关系的不变测试可能比函数本身更复杂。如果它很复杂,可能有问题,但您没有测试。
相比之下,一个好的单元测试太简单了,不可能把读者搞砸或误解。只有输入错误才能在“expect”中创建错误
|