软件工程——测试用例设计(白盒技术)

白盒技术:白盒测试是结构测试,所以一般都是以程序的内部逻辑结构为基础来设计测试用例。

一. 逻辑覆盖

追求程序内部的逻辑结构覆盖程序, 当程序中有循环时, 覆盖每条路径是不可能的,要设计覆盖程序较高的或覆盖最具代表性的路径的测试用例。下面分别介绍常用的几种覆盖技术:
  1. 语句覆盖
  为了发现程序中的错误,程序中的每条语句都要执行一次。语句覆盖指使用足够多的测试用例,使被测试程序中每个语句至少执行一次。
  在这里插入图片描述
对于给出的程序流程图,如果选择的测试数据可移植性路径1-2-4,就可以保证程序流程图中的四个语句至少执行一次,根据条件,选择a=2,b=0,x=3作为测试数据,就能达到语句覆盖的测试标准。

存在问题:
语句覆盖虽然全面检验了每个语句,但只测试了逻辑表达式为“True”的情况,如果将第一个逻辑表达式中的 “AND” 错写成 “OR”、第二个逻辑表达式 “x>1” 错写成 “x<1”,仍用刚才的数据进行测试,同样可以测试每条语句,但是不能发现错误。 语句覆盖是比较弱的覆盖标准。

2. 判定覆盖
判定覆盖设计出足够多的测试用例,使得被测程序中每个判定表达式都执行一次“True”和一次“False”的运行,从而使程序的每一个分支至少都通过一次。

从上面的图例中,只要测试用例能通过路径1-2-4、1-3-5或者1-2-5、1-3-4,就可以使每个分支都执行一次,为此,我们选择两组数据:a=3, b=0, x=1(通过路径125),a=2, b=1, x=2(通过路径134)。对于多分支(嵌套IF、CASE)的判定,判定覆盖同样要使得每一个判定表达式获得每种可能的值来测试。

只要执行了判定覆盖测试,则语句覆盖肯定也测试了。因为如果通过了各个分支,则各个语句也执行了。但该测试仍不能检查出所有的判定条件的错误,上述数据只覆盖了全部路径的一半,如果将第二个判定表达式中的“x>1”错写成“x<1”,仍查不出错误。

3. 条件覆盖
条件覆盖测试将使得判定表达式中每个条件的各种可能的值都至少出现一次。在上述程序中有四个条件:a>1, b=0, a=2, x>1。

条件覆盖测试要求选择足够的数据,
使得第一个判定表达式有下述各种结果出现:a>1, b=0, a≤1, b≠0,
并使第二个判定表达式出现如下的结果:a=2, x>1, a≠2, x≤1
才能达到条件覆盖的标准。

选择以下两组测试数据,就可满足上述要求:
a=2, b=0, x=3(满足a>1, b=0, a=2, x>1,通过路径124)
a=1, b=1, x=1(满足a≤1, b≠0, a≠2, x≤1,通过路径135)
以上两组测试覆盖了判断表达式的所有可能,还覆盖了所有判断的取“真”分支和“假”分支。在此测试数据下,条件覆盖比判断覆盖好。

4. 判定/条件覆盖
该覆盖标准指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。

对于上述程序,选择以下两组测试用例:
a=2, b=0, x=3
a=1, b=1, x=1
该组测试数据不仅能满足判定条件覆盖要求,也满足条件覆盖的测试要求。

从表面上看,判定/条件覆盖似乎测试了所有条件的取值,但因为在条件组合中的某些条件的真假会屏蔽其他条件的结果,判定/条件覆盖还有不完善的方面。例如在含有“与”运算的判定表达式中,第一个条件为“假”,则这个表达式中的后面几个条件的值均不起作用;而在含有“或”运算的表达式中,第一个条件为“真”,后边其他条件也不起作用,此时如果后边其他条件写错就不能测试出来。

5. 条件组合覆盖
条件组合覆盖是比较强的覆盖标准,顾名思义,按此标准设计的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次。
上述程序中,两个判定表达式共有4个条件,因此有8种组合:
① a>1, b=0 ② a>1, b≠0
③ a≤1, b=0 ④ a≤1, b≠0
⑤ a=2, x>1 ⑥ a=2, x≤1
⑦ a≠2, x>1 ⑧ a≠2, x≤1

下面4组测试用例就可以满足条件组合覆盖标准:
a=0, b=0, x=2 覆盖条件组合①和⑤,通过路径124
a=2, b=1, x=1 覆盖条件组合②和⑥,通过路径134
a=1, b=0, x=2 覆盖条件组合③和⑦,通过路径134
a=1, b=1, x=1 覆盖条件组合④和⑧,通过路径135

显然,满足条件组合覆盖的测试一定满足“判定覆盖”、“条件覆盖”和“判定/条件覆盖”,因为每个判定表达式、每个条件都不止一次地取到过“真”、“假”值。但是,该组测试数据没有能通过125这条路径,不能测试出这条路径中存在的错误。

5. 路径覆盖
因为存在选择语句,因此从输入到输出有多条路径。路径覆盖就是要求设计足够多的测试数据,可以覆盖被测程序中所有可能的路径。

该程序中,共有4条路径,选择以下测试用例,就可以覆盖程序中的4条路径:
a=2, b=0, x=2 覆盖路径124,覆盖条件组合①和⑤
a=2, b=1, x=1 覆盖路径134,覆盖条件组合②和⑥
a=1, b=1, x=1 覆盖路径135,覆盖条件组合④和⑧
a=3, b=0, x=1 覆盖路径125,覆盖条件组合①和⑧
可以看出满足路径覆盖却未满足条件组合覆盖。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值