第5章 测试技术案例
33
}
34
}
35
return insuranceMoney;
36 }
37 }
38 }
24
保险金案例实践(白盒测试)
对calcSetting()方法的测试
• 代码走读 • 对判断的测试 • 对路径的测试 • 对变量的测试
25
保险金案例实践(白盒测试)
calcSetting()方法的判断节点有五个,可采用逻辑覆盖法 (判断覆盖、条件覆盖等),观察可知判断节点都是围 绕age展开的,因此,可以采取条件覆盖指标来设计测 试用例。
7
if(age<16||age>=80){
8
return SETTINGS[0];
9
}else if(age<25){
10
return SETTINGS[1];
11
}else if(age<35){
12
return SETTINGS[2];
13
}else if(age<45){
14
return SETTINGS[3];
7
if(age<16||age>=80){
8
return SETTINGS[0];
9
}else if(age<25){
10
return SETTINGS[1];
11
}else if(age<35){
12
return SETTINGS[2];
13
}else if(age<45){
14
return SETTINGS[3];
15
}else if(age<60){
16
return SETTINGS[4];
17
}else {
18
return SETTINGS[5];
19
}
20 }
13
12
14
15
16
18
20
28
6
7 9
8 10 12
这是一个仍然需要改进的流图
6 public static int[] calcSetting(int age){
7
if(age<TTINGS[0];
9
}else if(age<25){
10
return SETTINGS[1];
11
}else if(age<35){
12
return SETTINGS[2];
13
}else if(age<45){
14
return SETTINGS[3];
17
保险金案例实践——黑盒测试
基于整体输入域的等价类测试:若就整体输入域来进行等价 类划分时,则将整体输入域由一个年龄和分数构成的二元组 <年龄,分数>,其最大的有效等价类为NF={<年龄,分数 >|16≤年龄<80,且0<分数≤12}。
18
保险金案例实践——黑盒测试
测试小结
包含的功能点很单一,不涉及业务流程,但包含复 杂的输入/输出计算关系,需要针对输入域和输出 域进行关键数据的覆盖测试
7
保险金案例实践——黑盒测试
测试用例设计
边界值测试 基于决策表的测试 基于整体输入域的等价类测试
8
保险金案例实践——黑盒测试
边界值测试 1、边界点
年龄(6个):16, 25, 35, 45, 60, 80; 分数(6个):0, 5, 7, 9, 11, 12
9
保险金案例实践——黑盒测试
10
保险金案例实践——黑盒测试
边界值测试 3、测试用例: 根据单缺陷假设,可得到边界值测试用例的数
量为18×(6-1)+13 ×(6-1)=155个.
11
保险金案例实践——黑盒测试
边界值测试 完整的测试用例
12
保险金案例实践——黑盒测试
下表为年龄的一个测试数据25和分数的一 个测试数据9为例的测试用例设计
6
保险金案例实践——黑盒测试
测试分析 这是针对单个功能函数级别的测试 没有明显的业务流程,直接选择边界值、等价类、决策表方法, 而不宜选择场景测试。 输入条件:投保人的年龄和投保人驾照上的当前分数,且存在 相互关联 输出条件: 保险费 是否吊销驾照 年龄系数 安全驾驶折扣 应选用边界值测试和基于决策表的测试方法来设计测试用例 系统输入与输出很不相似,但输出完全依赖输入计算得到
软件测试技术
第五章 测试技术案例
主要内容
5.1保险金案例实践——黑盒测试 5.2保险金案例实践——白盒测试
2
教学目标
1.理解黑盒测试在保险金案例实践的综合应用 2.理解白盒测试在保险金案例实践的综合应用
3
保险金案例实践——黑盒测试
内容提要 围绕一个案例展开黑盒测试实践,保险金案例是 函数级别的案例 采用多种黑盒测试方法设计测试用例,观察不同 规模的系统对测试方法的运用、测试工作量将产 生怎样的影响 本章不涉及测试的实施,即如何将测试用例转化 为可执行的测试脚本
22
int insuranceMoney=-1;
23
if(score>0&&score<13){
24
int[] setting=calcSetting(age);
25
if(setting!=SETTINGS[0]){
26
int safeDrivingDiscount=0;
27
int ageCoefficient=setting[0];
12
return SETTINGS[2];
13
}else if(age<45){
14
return SETTINGS[3];
15
}else if(age<60){
16
return SETTINGS[4];
17
}else {
18
return SETTINGS[5];
19
}
20 }
21 public static int calcInsurance(int age,int score){
F
FT
F
F
BX-CX-004 40 {10,7,150}
F
F
FF
T
F
BX-CX-005 52 {8,5,200}
F
F
FF
F
T
BX-CX-006 70 {15,7,250}
F
F
FF
F
F
BX-CX-007 80 {0,0,0}
F
T
FF
F
F
27
6
7 8
10
独立路径测试
9
11
6 public static int[] calcSetting(int age){
7 if(age<16||age>=80) 9 else if(age<25) 11 else if(age<35) 13 else if(age<45) 15 else if(age<60) 共6个条件
26
保险金案例实践(白盒测试)
满足条件覆盖的测试用例
输 入
预期输出
4
保险金案例实践——黑盒测试
案例说明:保险金案例主要是为投保人计算其需要购买的车险, 一年度内的保险金计算公式为:
保险金 = 基本保险费率 × 年龄系数 – 安全驾驶折扣
基本保险费率为1000元/年 年龄系数和安全驾驶折扣见表 投保人必须是年满16岁,且不足80岁的人 投保人驾照上的分数初始为12分,每当违反交通规则时,将以整数
边界值测试 2、测试数据
年龄 (18个):15, 16, 17, 24, 25, 26, 34, 35, 36, 44, 45, 46, 59, 60, 61, 79, 80, 81;
分数 (13个):-1, 0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
该案例的测试用例设计以测试数据的选择为主,测 试重点在于如何选择典型数据来测试所有情况下的 计算,难点是如何高效地设计测试用例,达到测试 的完备和无冗余
该案例的测试应尽量考虑以自动化测试为主,可基 于单元测试工具辅助完成测试脚本开发
1199
保险金案例实践(白盒测试)
内容提要
围绕保险金案例和人寿保险金案例是两个相似 的函数级别案例
21
保险金案例实践(白盒测试)
测试分析 代码的实质是面向过程的设计 仍从白盒测试的角度来测试calcSetting()
和calcInsurance()
22
保险金案例实践(白盒测试)
测试工作包括 静态测试。阅读calcSetting()和 calcInsurance()方法的源代码,检查是否存在 明显缺陷,以及结构是否存在修改或优化的必 要 采用适当的覆盖指标(如判断覆盖、路径覆盖等 ),设计测试用例,执行动态白盒测试 选择重要的变量进行静态数据流的检查,补充 必要的测试
P有a的th条1:件6节7点1 )72 9 11 13 15 18 20(经过所
7
1
Path 2:6 71 8 20(在条件节点7执行分支8)
Path 3:6 72 8 20(在条件节点7执行分支8)
Path 4:6 行分支10)
观察代码规模和代码设计的质量对测试的难度 和工作量造成的影响
本章暂不涉及测试的实施,即如何将测试用例 转化为可执行的测试脚本