Boudary重视具体的例子

时间:2016-01-14 17:03:25

标签: unit-testing testing

假设我们有以下等价分区:

|invalid partition A| valid partion B | invalid partition C
...................1|2              10|11................ 

我们看到有效部分B是[2..10](包括2和10)。为了测试B分离,让我们进行7.好吧,现在让我们测试边界值。我们看到边界是2和10.在一些书中,他们说除了2和10之外,还需要额外的点+ - 西格玛。

所以问题是,我们必须采用多少个值来测试有效的分区B三个(2,7,10)或五个(2,2.01,7,9.99,9)< /强>

1 个答案:

答案 0 :(得分:1)

边界值分析的定义各不相同,但它们都同意以下最小测试值集(对于双方都关闭的分区):一个测试用例最小,一个用于分区的最大值。然后,对于所有有效的相邻分区也是如此。令人惊讶的是,对于无效分区,仅需要测试与有效分区相邻的极值。扩展你的例子:

|invalid part. A| valid part. B | valid part. C |invalid part. D|
|1.............9|10           19|20           29|30...........39|

对于这种情况,各种定义同意需要测试值9,10,19,20,29,30。也就是说,对于B,对于一个典型的&#39;是否甚至没有达成共识。应测试像15这样的值。

从我的观点来看,重要的问题是你想要找到什么样的错误。也就是说,如果您无法想到其他测试会带来额外错误的情况,那么额外的测试就没用了。

从这个角度来看,对边界的测试可以帮助识别关于运算符&lt;,&gt;,&lt; =,&gt; =,==的错误,从而识别出一个错误。如果您的要求需要&#39;&lt;&#39;运算符(例如if (x < 10) then y := 0 else y := 1),然后单独测试9和10将帮助您检测是否错误地使用了运算符&gt;,&lt; =,&gt; =或==之一。或者,您可以检测比较中是否使用了不同于10的值。

实际上,更具挑战性的是识别所有分区。如果代码示例类似于if (x * x < 10) then y := 0 else y := 1,那么突然间x会有更多的分区,即范围[-3 ... 3],x的范围,其中x * x不会溢出,范围其中x * x将溢出。当必须考虑附加参数时,它变得更复杂,如(x + y <10)。