白盒测试技术

案例实战—基础案例

  1. 对于如图1所示的程序流程图,分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖准则设计测试用例,并写出每个测试用例的输入、预期输出和执行路径。假设x、y和z均为整数。
    白盒测试技术_第1张图片
    表1-1 实现语句覆盖的测试用例
编号 x y z 预期输出 执行路径
T1 3 1 1 3 ace

表1-2 实现判定覆盖的测试用例

编号 x y z 预期输出 执行路径
T1 3 1 1 3 ace
T2 1 2 1 1 abd

表1-3 实现条件覆盖的测试用例

编号 x y z 预期输出 执行路径
T1 3 1 1 3 ace
T2 1 2 1 1 abd

表1-4 实现判定/条件覆盖的测试用例

编号 x y z 预期输出 执行路径
T1 3 1 1 3 ace
T2 1 2 1 1 abd

表1-5 实现条件组合覆盖的测试用例

编号 x y z 预期输出 执行路径
T1 3 1 1 3 ace
T2 3 2 1 2 abe
T3 1 1 2 3 abe
T4 1 2 1 1 abd

表1-6 实现路径覆盖的测试用例

编号 x y z 预期输出 执行路径
T1 3 1 1 3 ace
T2 3 2 1 2 abe
T3 2 1 0 0 acd
T4 1 2 1 1 abd

2. 试用基本路径覆盖法为“阶梯电费计算办法”设计测试用例。
阶梯电费收费标准中将每户每月用电量划分为以下三档:
① 200度及以下,每度0.55元;
② 201-400度之间,每度0.60元;
③ 400以上,每度0.85元;电费缴纳总金额不超过500.00元。
要求如下:
(1) 根据程序代码画出程序控制流程图。
(2) 利用三种方法计算程序环路的复杂性。
(3) 确定独立路径的集合。
(4) 使用基本路径测试法设计测试用例,其中包括测试用例的输入、期望输出及执行的路径。

public double Calculate(int quantity){
1   double cost;
2   if(quantity<=200)
3       cost=quantity*0.55;
4   else {
5       if(quantity<=400)
6          cost=110.00+(quantity-200)*0.60;
7       else {
8          cost=230.00+(quantity-400)*0.85;
9       if(cost>500) 
10          cost=500;
11      }
12  }
13  return cost;
14 }

参考答案:
(1) 画出程序控制流程图。
根据程序代码生成的控制流程图如图2-1所示。
白盒测试技术_第2张图片
(2) 利用三种方法计算程序环路的复杂性。
①V(G)=区域数=4
②V(G)=E−N+2=12-10+2=4
③V(G)=P+1=3+1=4
(3)确定独立路径的集合。
① P1:2-3-13
② P2:2-5-6-12-13
③ P3:2-5-8-9-11-12-13
④ P4:2-5-8-9-10-11-12-13
(4)使用基本路径测试法设计测试用例如表2-1所示,其中包括测试用例的输入、期望输出及执行的路径。
表2-1 电量计算的测试用例

测试用例编号 电量 预期输出 覆盖路径号
T1 200 110.00 P1
T2 400 230.00 P2
T3 500 315.00 P3
T4 900 500.00 P4

(二)案例实战—直角三角形问题
试用逻辑覆盖法和基本路径测试法为三角形问题中的直角三角形设计测试用例。假定三边边长a、b和c均为正整数,满足以下规则:
① 当三边中任意两边边长之和小于等于第三边,则输出“非三角形”;
② 当其中两边边长的平方和等于第三边的平方,则输出“直角三角形”;
③ 当任意两边边长的平方和都不等于第三边的平方,则输出“一般三角形”。
④ 当三边中任意一边边长小于1,则给出“输入无效”的提示信息。
要求如下:
① 根据程序代码绘制程序流程图,并设计测试用例分别实现语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
② 根据程序代码或程序流程图,绘制程序控制流程图,分析环路复杂性,确定独立路径集合,并设计测试用例实现基本路径覆盖。
③ 运行待测程序,将设计的测试用例通过界面实现输入,记录实际输出,并给出测试结果。测试结果可通过点击下拉箭头,打开下拉列表进行选择。如果预期输出与实际输出相匹配,则测试结果为Passed,否则,测试结果为Failed。
④ 通过应用实例,简单总结归纳逻辑覆盖、基本路径测试等白盒测试技术在测试用例设计和测试执行方面的优缺点及适用情况。
参考答案:
(1) 逻辑覆盖法
① 编写代码

public static String judgeTriangle(int a,int b,int c){
1     if(a>=1&&a<=100&&b>=1&&b<=100&&c>=1&&c<=100){
2        if(a+b>c&&b+c>a&&a+c>b){      
3          if(a*a+b*b==c*c||b*b+c*c==a*a||a*a+c*c==b*b)
4                  return "直角三角形";
5              else 
6                      return "一般三角形";
7          }
8          else
9              return "非三角形";
10     }
11     else
12          return "输入无效";
13  }

② 分析程序逻辑结构,绘制如图3-1所示的程序流程图。
直角三角形问题中包含3个判定结点和12个条件。
D1包括C1:a>=1、C2:a<=100、C3:b>=1、C4:b<=100、C5:c>=1和C6:c<=100六个条件。
D2包括C7:a+b>c、C8:b+c>a、C9:a+c>b三个条件。
D3包括C10:a*a+b*b==c*c、C11:b*b+c*c==a*a和C12:a*a+c*c==b*b三个条件。
直角三角形问题包含以下四条执行路径:
路径1:P1→P2→P3
路径2:P1→P2→P4
路径3:P1→P5
路径4:P6
白盒测试技术_第3张图片
图3-1 直角三角形问题程序流程图
③ 语句覆盖要求设计的测试用例使得每一条可执行语句至少执行一次,直角三角形问题符合语句覆盖的测试用例如表3-1所示。
表3-1 实现语句覆盖的测试用例

编号 a b c 预期输出 实际输出 执行路径
T1 30 40 50 直角三角形 一般三角形 路径1
T2 40 50 60 一般三角形 一般三角形 路径2
T3 20 30 60 非三角形 非三角形 路径3
T4 0 50 50 输入无效 输入无效 路径4

④ 判定覆盖要求设计的测试用例使得程序中每个判断的取真分支和取假分支至少执行一次,由表3-2可知四条路径可以保证满足此要求,直角三角形问题符合判定覆盖的测试用例如表3-3所示。
表3-2 每条路径中判定结点的取值

路径 判定结点1 判定结点2 判定结点3
路径1 T T T
路径2 T T F
路径3 T F -
路径4 F - -

表3-3 实现判定覆盖的测试用例

编号 a b c 预期输出 实际输出 执行路径
T1 30 0 50 直角三角形 一般三角形 路径1
T2 40 50 60 一般三角形 一般三角形 路径2
T3 20 30 60 非三角形 非三角形 路径3
T4 0 50 50 输入无效 输入无效 路径4

⑤ 条件覆盖要求设计的测试用例使得程序中每个判断的每个条件的所有可能取值至少执行一次,表3-4给出了符合条件覆盖的各个逻辑判定条件的取值以及通过的路径,通过分析,七种组合即可满足条件覆盖的要求,但是路径2并未覆盖到。直角三角形问题符合条件覆盖的测试用例如表3-5所示。
表3-4 符合条件覆盖的各个判定条件取值及通过路径
白盒测试技术_第4张图片
表3-5 实现条件覆盖的测试用例
白盒测试技术_第5张图片
⑥ 判定/条件覆盖要求设计的测试用例使得程序中每个判断的每个条件的所有可能取值至少执行一次,并且每个可能的判断结果也至少执行一次。分析表3-4可知,表3-5中满足条件覆盖的八个测试用例,能够覆盖判定结点D1和D2的真假分支,以及D3的真分支。因此,若要设计满足判定/条件覆盖的测试用例,只需在表3-5的基础上,增加一个测试用例,以保证覆盖判定结点D3的假分支即可。直角三角形问题符合判定/条件覆盖的测试用例如表3-6所示。
表3-6 实现判定/条件覆盖的测试用例
白盒测试技术_第6张图片
⑦ 条件组合覆盖要求设计的测试用例使得程序中每个判断的所有可能的条件取值组合至少执行一次。D1判定结点中包含了六个条件,组合为26=64,但a>=1和a<=100、b>=1和b<=100、c>=1和c<=100两两条件不可能同时取假,则合理的组合数目为33=27。仅当D1的三个条件都取真时才考虑其他条件。D2判定结点中包含了三个条件,C4、C5和C6至少有两个为真。仅当D2的三个条件都取真时才考虑其他条件。D3判定结点中包含了三个条件,C7、C8和C9至多有一个为真。表3-7给出了符合条件覆盖的各个逻辑判定条件的取值以及通过的路径。
表3-7 符合条件组合覆盖的各个判定条件取值及通过路径
白盒测试技术_第7张图片
白盒测试技术_第8张图片
直角三角形问题符合条件组合覆盖的测试用例如表3-8所示。
表3-8 实现条件组合覆盖的测试用例
白盒测试技术_第9张图片
⑧ 路径覆盖要求设计的测试用例使得每一条路径至少执行一次,直角三角形问题符合路径覆盖的测试用例如表3-9所示。
表3-9 实现路径覆盖的测试用例

编号 a b c 预期输出 实际输出 执行路径
T1 30 40 50 直角三角形 一般三角形 路径1
T2 40 50 60 一般三角形 一般三角形 路径2
T3 20 30 60 非三角形 非三角形 路径3
T4 0 50 50 输入无效 输入无效 路径4

(2)基本路径测试法
① 根据程序结构,绘制如图3-2所示的程序控制流程图。
白盒测试技术_第10张图片
图3-2 直角三角形问题程序控制流程图
② 利用三种方法计算程序环路的复杂性。
V(G)=区域数=13
V(G)=E−N+2=28-17+2=13
V(G)=P+1=12+1=13
③ 确定独立路径的集合。
P1: 1-21-22
P2: 1-2-21-22
P3: 1-2-3-21-22
P4: 1-2-3-4-21-22
P5: 1-2-3-4-5-21-22
P6: 1-2-3-4-5-6-21-22
P7: 1-2-3-4-5-6-7-18-22
P8: 1-2-3-4-5-6-7-8-18-22
P9: 1-2-3-4-5-6-7-8-9-18-22
P10: 1-2-3-4-5-6-7-8-9-10-13-22
P11: 1-2-3-4-5-6-7-8-9-10-11-13-22
P12: 1-2-3-4-5-6-7-8-9-10-11-12-13-22
P13: 1-2-3-4-5-6-7-8-9-10-11-12-15-22
④ 使用基本路径测试法设计测试用例如表3-10所示,其中包括测试用例的输入、期望输出、实际输出及执行的路径。
表3-10 直角三角形问题基本路径覆盖测试用例
白盒测试技术_第11张图片

你可能感兴趣的:(软件测试)