如何保证基于财产的测试中的角落案例

时间:2017-12-25 14:41:31

标签: testing scalacheck property-based-testing

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

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

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

更具体地说,我可以使用ScalaCheck来测试我的除法功能:

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

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

2 个答案:

答案 0 :(得分:1)

特殊情况通常是他们自己的属性。如果您尝试编写一个涵盖passenger_app_env的单个案例,那么您的所有属性将最终进行一次大而复杂的测试。但您可以将参数空间拆分为多个块,例如:

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

并单独检查。

答案 1 :(得分:1)

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

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