![]() |
1
1
试试这个:
|
![]() |
2
2
您不能在随机生成的输入数据中测试它。假设你有一组100个有效的输入信号,它在第五个信号上失效,没关系。有人改变了算法,它从5号开始通过,到17号失败。在1%的情况下它仍然失败,但它仍然正确吗? 如何从这里继续并不明显-这取决于算法的作用。也许您可以将一些部分提取到单个责任组件中,并单独测试它们? 但也许这是一个遗留的算法,你需要尽可能多地用规范来覆盖它?如果是的话-我会用速度换保险范围:
生成1000个信号,并保存那些
假设10个
比方说(人工检查之后)只有8个是真的负的,剩下的2个应该是真的,但返回的是假的——这些可能是错误。以后再保存。 你对1000个样品的覆盖率满意吗?磨合需要多长时间?你能把这次的一些样品换成10000个样品吗?100万?这是你的选择。 在某种程度上,添加更多的样本是没有意义的。现在,您已经粗略地覆盖了整个算法,并且可以开始一些基本的重构,比如 extract method 或 name magic constants 并提取逻辑组件(在本答案第2段中提到)。X样本测试是临时的,它们可以确保(尽可能多地使用非无限样本大小)整个算法的行为不会改变,同时您可以凿除您更好理解的部分。 |
![]() |
Animesh Arya · 关联模型的Rspec 2 年前 |
![]() |
MLZ · RSpec请求中存根方法调用的正确方法 7 年前 |
![]() |
Brendan Jones · 为什么我的控制器要求重复嵌套参数散列? 7 年前 |
![]() |
Peter Penzov · 带参数的用户let 7 年前 |
![]() |
janosrusiczki · 设计视图规格 7 年前 |