0

最近,在阅读有关基于属性的测试的想法时,我感到非常兴奋。

但我有 1 个问题,我仍然无法在任何地方找到答案:

基于属性的测试如何确保每次都测试极端情况?

更具体地说,假设我正在使用ScalaCheck来测试我的除法功能:

def divide(a: Int, b: Int): Int

由于测试用例将随机生成,我如何确定 ScalaCheck 每次都会检查用例b = 0

4

2 回答 2

2

特殊情况通常是它们自己的属性。如果您尝试编写一个涵盖 的案例b = any integer,那么您的所有属性都将在一个大而复杂的测试中结束。但是您可以将参数空间拆分为多个块,例如:

  • b = 正整数
  • b = 负整数
  • b = 0

并分别检查。

于 2017-12-25T15:14:23.323 回答
2

一些 PBT 工具总是会在生成随机情况之前注入极端情况。

例如,jqwik(用于 Java)会在任何随机值之前尝试 0、1、-1、Integer.MIN...VALUE 和 Integer.MAX...VALUE。

于 2018-03-16T05:38:37.247 回答