测试用例是按一定的顺序执行的与测试目标相关的测试活动的描述,是确定“怎样”测试。测试用例被看作是有效发现软件缺陷的最小测试执行单元,也被视为软件的测试规格说明书。在测试工作中,测试用例的设计是非常重要的,是测试执行的正确性、有效性的基础。如何有效地设计测试用例,一直是测试人员所关注的问题;设计好测试用例,也是保证测试工作的最关键的因素之一。
设计测试用例,也分为白盒设计方法和黑盒设计方法。白盒设计方法又分为逻辑覆盖法和基本路径覆盖法,或者分为语句覆盖、判定覆盖、条件覆盖方法,而黑盒设计方法分为等价类划分法、边界值划分法、错误推测法、因果图法等。在实际测试用例设计过程中,不仅根据需要、场合单独使用这些方法,常常综合运用多个方法,使测试用例的设计更为有效。
1.判定-条件覆盖方法
判定-条件覆盖方法就是将两种白盒设计方法“判定覆盖”和“条件覆盖”结合起来的一种设计方法,它所设计的测试用例是判定覆盖的设计的测试用例和条件覆盖设计的设计的测试用例的交集,即设计足够精巧的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果也至少执行一次。
举个例子,源程序是:
Dim a,b as Integer Dim c as Double If(a > 0 and b > 0)Then c = c/ a End If If(a>1 or c>1)Then c=c+1 End If c=b+c |
则用两个测试用例(如表1)来覆盖了两个判定“P1=(a > 0 and b > 0)”和“P2 =(a>1 or c>1)”和四个条件“C1= a > 0”、“C2= b > 0”、“C3= a>1”和“C4= c>1”。
表1判定-条件覆盖的测试用例
测试用例 | 具体取值条件 | 取值条件 | 判定条件 |
输入:a=2,b=1,c=6 输出:a=2,b=1,c=5 | a>0,b>0,a>1,c>1 | C1, C2, C3, C4 = True | P1, P2= True |
输入:a=-1,b=-2,c=-3 输出:a=-1,b=-2,c=-5 | a<=0,b<=0,a<=1,c<=1 | C1, C2, C3, C4 = False | P1, P2= False |
2.条件组合覆盖
条件组合覆盖的基本思想是:设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次,条件覆盖是简单地要求每个条件出现“真”与“假”两种结果,而条件组合覆盖是让这些结果的所有可能组合都至少出现一次。
按照条件组合覆盖的基本思想,针对8种组合条件,来设计所有能覆盖这些组合的设计用例,如表2所示。即使我们用四个测试用例覆盖了所有8种组合条件,但还不能保证所有的路径被执行,如这个例子少了一种路径,即P1= True, P2= false。
表2条件组合覆盖的测试用例
测试用例 | 覆盖条件 | 覆盖组合 |
输入:a=2,b=1,c=6 输出:a=2,b=1,c=5 | ① C1=True, C2=True,⑤ C3=True,C4=True | P1=True, P2=True |
输入:a=2,b=-1,c=-2 输出:a=2,b=-1,c=-3 | ② C1=True, C2=false,⑥ C3=True,C4=false | P1=false, P2=True |
输入:a=-1,b=2,c=3 输出:a=-1,b=2,c=6 | ③ C1=false, C2=True,⑦ C3=false,C4=True | P1=false, P2=True |
输入:a=-1,b=-2,c=-3 输出:a=-1,b=-2,c=-5 | ④ C1=false, C2=false,⑧ C3=false,C4=false | P1=false, P2=false |