实验 2 白盒测试
一、实验目的与要求
1、掌握白盒测试的语句覆盖判定覆盖测试方法的原理及应用
2、掌握条件覆盖、条件组合覆盖的方法,提高应用能力
3、掌握路径法测试
二、实验设备
1、电脑 PC
三、实验原理
白盒测试原理: 已知产品的内部工作过程,可以通过测试证明每种内部操 作是否符合设计规格要求, 所有内部成分是否已经过检查。 它是把测试对象看作 装在一个透明的白盒子里, 也就是完全了解程序的结构和处理过程。 这种方法按 照程序内部的逻辑测试程序, 检验程序中的每条通路是否都能按预定要求正确工 作,其又称为结构测试。
1、语句覆盖
语句覆盖指代码中的所有语句都至少执行一遍, 用于检查测试用例是否有遗 漏,如果检查到没有执行到的语句时要补充测试用例。 无须细分每条判定表达式, 该测试虽然覆盖了可执行语句,但是不能检查判断逻辑是否有问题。
2、判定覆盖
又称判断覆盖、 分支覆盖, 指设计足够的测试用例, 使得程序中每个判断的 取真分支和取假分支至少经历一次,即判断真假取值均曾被满足。
判定覆盖比语句覆盖强, 但是对程序逻辑的覆盖度仍然不高, 比如由多个逻 辑条件组合而成的判定,仅判定整体结果而忽略了每个条件的取值情况。
3、条件覆盖、条件判定覆盖 条件覆盖指程序中每个判断中的每个条件的所有可能的取值至少要执行一 次,但是条件覆盖不能保证判定覆盖, 条件覆盖只能保证每个条件至少有一次为 真,而不考虑所有的判定结果。
条件判定覆盖是条件覆盖和判定覆盖的组合, 指设计足够的测试用例, 使得 判定中每个条件的所有可能的取值至少出现一次, 并且每个判定取到的各种可能 的结果也至少出现一次。 条件判定覆盖弥补了条件和判定覆盖的不足, 但是未考 虑条件的组合情况。
4、条件组合覆盖
又称多条件覆盖, 设计足够的测试用例, 使得判定条件中每一个条件的可能 组合至少出现一次。线性地增加了测试用例的数量。
5、基本路径法
在程序控制流图的基础上, 通过分析控制构造的环路复杂性, 导出基本可执 行的路径集合, 从而设计测试用例的方法。 在基本路径测试中, 设计出的测试用 例要保证在测试中程序的每条可执行语句至少执行一次, 在基本路径法中, 需要 使用程序的控制流图进行可视化表达。
四、实验内容
(一)实验内容
1、语句覆盖和判定覆盖的测试设计 要求:根据如下背景,绘制程序流程图并按两种测试方法设计测试用例。 背景:以保险产品投保为例, 针对保险产品投保业务逻辑代码进行分析, 运 用语句覆盖和判定覆盖法进行测试用例设计。
某个人税收优惠型保险产品 A/B1/B2/C 款承保规则:
1)凡 16 周岁以上且投保时未满法定退休年龄(男性 59岁,女性 54 岁, 后续将随国家相关法规做相应调增) ,使用商业健康保险税收优惠政策的纳税人, 可作为本合同的被保险人。 保险公司根据被保人是否参加公费医疗或基本医疗保 险确定适用条款。
2)被保人为健康体,或者参加医疗保险的,可选择 A款、 B1款或 B2
3)未参加公费医疗的非健康体(有既往症)只能选择 C 款。 以下为个人税收优惠型保险产品承保的部分伪代码实现:
if ((性别 =‘男' and 16<年龄<59or (性别 =‘女' and 16<年龄<54)){ if (被保人健康属性为正常 or 软件测试流程有医疗保险) {
可选择保险种类为 AB1 B2的险种,份数为 1
}else{
可选险种为 C,份数为 1
}
}else{
提示‘不能承保'
}
1)绘制保险产品的承保业务流程图:
2)根据业务场景与流程逻辑判定,运用语句覆盖法进行测试用例的设计 并按如下表格形式填写测试用例。 (根据设计的测试用例加行) 表 1-1 语句覆盖测试用例设计
测试用例名称
测试用例描述
测试路径
3)根据业务场景与流程逻辑判定,运用判定覆盖方法进行测试用例的设 计并按如下表格形式填写测试用例。 (根据设计的测试用例加行)
1-2 判定覆盖测试用例设计
测试用例名称
测试用例描述
测试路径
2、条件覆盖和条件组合覆盖的测试设计
要求:以银行内部转账为例, 针对内部转账业务逻辑代码进行分析并绘制程
序流程图,分别运用条件覆盖、条件组合覆盖方法设计测试用例。
背景:内部转账用于处理发起户口号和接收户口号都是内部账户的系统内资 金转账业务,主要用于财务资金的划拨、 未实现自动清算业务的清算资金的划拨。
1)内部转账发起:发起行发出内部资金交易,并换人复核,满足条件时 需会计主管授权。
2)内部转账接收:内部资金交易接收方根据接受方确认方式,对交易进 行接收经办,满足条件的需复核或授权。
确定接收方的入账流程, “确认方式”分为以下三种:
1)不需接收方确认, 即发起方发起后自动记发起方和接收方的一套账务, 接收方无须再做接收动作,仅限 100 万以内金额方可使用此确认方式。 (2)需接收方确认,即接收方接收时不能更改接收信息,只能依据发起方 输入的信息入账或退回发起方。以目前的处理方式,接收经办 -> 入账(金额 小于 100万);接收经办 +接收授权->入账(金额大于 100万)
3)需接收方经办,即接收方接收时可以更改接收信息,执行入账或退发 起行。以目前处理方式,接收经办 +接收复核 ->入账(金额小于 100 万);接 收经办+接收复核 +接收授权 ->入账(金额大于 100万) 内部转账授权控制表如下表 2-1 所示
2-1 内部转账权限控制
操作
条件
经办
复核
授权
内部转账发起
100 万以下
100 万以上
内部转账接收
确认方式为 2100 万以下
确认方式为 2100 万以上
确认方式为 3100 万以下
确认方式为 3100 万以上
以下为一拿回国内内部转账控制的部分伪代码实现:
If (转账金额 >100 万){ 调用“内部转账发起复核” 调用“内部转账发起授权” If (“确认方式” == 1{ 抛出异常“确认方式不符合业务流程”
} elseif (“确认方式” == 2 { 调用“内部转账接收经办” ; 调用“内部转账接收授权” 接收确认
} elseif (“确认方式” == 3 { 调用“内部转账接收经办” 调用“内部转账接收复核” 调用“内部转账接收授权” 接收确认
} else{ 抛出异常“确认方式不符合业务流程”
}
} elseif 0<转账金额 <100 万) {
If (“确认方式” == 1{ 调用“内部转账接收确认” ; 接收确认
} elseif (“确认方式” == 2 { 调用“内部转账接收经办” 调用“内部转账接收确认” 接收确认
} elseif (“确认方式” == 3 { 调用“内部转账接收经办” 调用“内部转账接收复核” 调用“内部转账接收确认” 接收确认
}else{ 抛出异常“确认方式不符合业务流程”
}
} elseif (转账金额 <0{ 抛出异常“输入金额有误,请重新输入”
}
3、基本路径法的测试设计
1)基本程序如下:
int logicExample(int x,int y)
{
1
int magic=0;
2
if(x>0&&y>0){
3
magic=x+y+10;
4
sign++;
5
}else{
6
magic=x+y-10;
7
m='F';
8
}
9
if(magic<0){
10
magic=0;
11
sign+=2;
12
}else
13
n='F';
14
return magic;
}
2)根据如上程序运用基本路径法,画出程序控制流图
3)根据程序控制流图分析,列出全部路径并指出可达路径及不可达路径
4)根据可达路径设计测试用例(可加行)
测试用例
X
Y
路径
预期结果
二)实验要求
1、完成如上三个题目要求的设计,列出设计过程中要求的表格