实现testArrayLength函数全分支覆盖需多少测试用例?是否仅需3个?
测试用例分支覆盖分析
待分析代码
def testArrayLength(array):# array passed through length = len(array); # get number of chars in the container if(length > 20): return 1 if(length > 1): return 0 if(length == 0): return -1
问题
实现该函数的100%分支覆盖需要多少个测试用例?是否最少需要3个测试用例即可达到100%分支覆盖?
解答
要实现100%分支覆盖,最少需要4个测试用例,3个测试用例无法达到完全覆盖。原因如下:
分支覆盖要求每个if判定的真、假分支都被执行到,我们需要覆盖以下所有分支场景:
- 第一个
if判定(length > 20):- 真分支:返回1
- 假分支:进入后续判定
- 第二个
if判定(length > 1):- 真分支:返回0
- 假分支:进入后续判定
- 第三个
if判定(length == 0):- 真分支:返回-1
- 假分支:无返回值(函数返回
None)
对应的4个测试用例分别为:
- 用例1:传入长度为21的数组(如
[1]*21),触发第一个if真分支,返回1,覆盖第一个if的真分支 - 用例2:传入长度为5的数组(如
[1,2,3,4,5]),触发第一个if假分支、第二个if真分支,返回0,覆盖第一个if假分支、第二个if真分支 - 用例3:传入空数组
[],触发第一个if假分支、第二个if假分支、第三个if真分支,返回-1,覆盖第二个if假分支、第三个if真分支 - 用例4:传入长度为1的数组(如
[1]),触发三个if的假分支,函数返回None,覆盖第三个if的假分支
如果只用3个测试用例,必然会遗漏第三个if的假分支,无法达到100%分支覆盖。
内容的提问来源于stack exchange,提问作者Robo Jumble
相关产品推荐
相关产品推荐

