单元测试中的白盒测试设计

        白盒测试主要是检查程序的内部结构、逻辑、循环和路径。白盒测试的常用用例设计方法有逻辑覆盖和基本路径测试。

         根据覆盖测试的目标不同,逻辑覆盖又可分为语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖及路径覆盖。

  1. 一个程序模块的例子

图1 一个程序模块的例图

从图中可知,该程序模块有4条不同的路径、4个可执行语句。这4条路径可分别表示为:

L1(a→c→e)简化为ace;

L2(a→b→d)简化为abd;

L3(a→b→e)简化为abe;

L4(a→c→d)简化为acd;

4条路径应该满足的逻辑表达式分别为:

记M={(A>1)and(B=0)},N={(A=2)or(X>1)}

L1(a→c→e)= M and N

L2(a→b→d)= /M and /N

L3(a→b→e)= /M and N

L4(a→c→d)= M and /N

其中,“/M”表示M的反,“/N”表示N的反,或者将4条路径应该满足的逻辑表达式写为:

L1(a→c→e)= {(A>1)and(B=0)} and {(A=2)or(X/A>1)} ;

L2(a→b→d)= { \overline{(A>1)and(B=0)}} and { \overline{(A=2)or(X>1)}} ;

L3(a→b→e)= { \overline{(A>1)and(B=0)}}and {(A=2)or(X>1)} ;

L4(a→c→d)= {(A>1)and(B=0)} and \overline{(A=2)or(X/A>1)};

其中,由符号“and”连接起来的语句是为了遍历这条路径各个输入变量应取值的范围,而由“or”划分了几组可选的取值。根据上面导出的逻辑表达式,就可以用来设计测试用例。

  1. 语句覆盖

语句覆盖就是设计若干个测试用例,运行所测程序,使得每一条可执行语句至少执行一次。对上面的例子,所有的可执行语句都在路径L1上,所以选择路径L1来设计测试用例,就要覆盖所有的可执行语句。

           测试用例设计的格式如下:

           [输入的(A,B,X),输出的(A,B,X)]为覆盖路径:L1(a→c→e)= M and N,{(A>1)and(B=0)} and {(A=2)or(X/A>1)}。可设计出满足语句覆盖的测试用例是:

[(2,0,4),(2,0,3)],覆盖ace[L1]。

从每个执行语句都得到执行这一点来看,语句覆盖的方法似乎能能够比较全面地检验每个可执行语句,但实际上并非如此。

           语句覆盖的不足之处是:假如该程序段中的两个逻辑运算有问题,例如,第一个判断中的逻辑运算符“&&”写成了“||”,或者第二个判断中的逻辑运算符“||”错写成了“&&”,利用上面的测试用例,仍然可覆盖所有4个可执行语句,这说明虽然做到了语句覆盖测试,但可能发现不了判断时逻辑运算中出现的错误。语句覆盖是最弱的逻辑覆盖准则。

  1. 判断覆盖

判断覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的取TRUE分支和取FALSE分支至少经历一次。判断覆盖又称为分支覆盖。

根据定义,可分别选择路径L1和L2或者路径L3和L4设计测试用例。

如果选择路径L1和L2,则可得到满足要求的测试用例:

[(2,0,4),(2,0,3)],覆盖ace[L1]

[(1,1,1),(1,1,1)],覆盖abd[L2]

如果选择路径L3和L4,则可设计另一组测试用例:

[(2,1,1),(2,1,2)],覆盖abe[L3]

[(3,0,3),(3,0,1)],覆盖acd[L4]

可见,测试用例的选择不唯一。

判断覆盖的不足之处是:假如第二个判断中的条件X>1被错写成了X<1,利用上面的两组测试用例仍能得到同样的结果。

  1. 条件覆盖

条件覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。因此,首先要对所有的条件加以标记。

对第一个判断:

  1. 条件A>1取TRUE时为T1,取FALSE时为F1;
  2. 条件B=0取TRUE时为T2,取FALSE时为F2;

对第二个判断:

  1. 条件A=2取TRUE时为T3,取FALSE时为F3;
  2. 条件X>1取TRUE时为T4,取FALSE时为F4。

根据这8个条件取值,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值