白盒测试逻辑覆盖

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
每一个程序模块的入口和出口点都要考虑至少要被调用 一次, 一次,每个程序的判定到所有可能的结果值要至少转换 一次; 一次; 程序的判定被分解为通过逻辑操作符(&&,||)连接的逻辑 程序的判定被分解为通过逻辑操作符 连接的逻辑 条件,每个条件对于判定的结果值是独立的。 条件,每个条件对于判定的结果值是独立的。
除了双值判定语句外,还有多值判定语 句,如case语句,因此判定覆盖更一 般的含义是:使得每一个判定获得每一 种可能的结果至少一次。
6 2 1 3 5 8 9 7 10
4
构造测试用例如下可实现判定覆盖标准
a=T,b=T,c=T; a=F,b=F,c=F;
不仅满足了判定覆盖还满足了语句覆盖, 因此比语句覆盖稍强。但,仍然无法发 现程序段中存在的逻辑判定错误。
穷举路径仍然存在遗憾
穷举路径测试法无法检查出程序本身 是否违反了设计规范, 是否违反了设计规范,即程序是否是 一个错误的程序; 一个错误的程序; 穷举路径测试不可能查出程序因为遗 漏路径而出错; 漏路径而出错; 穷举路径测试发现不了一些与数据相 关的错误; 关的错误;
白盒测试原则
保证一个模块中的所有独立路径至少 被测试一次; 被测试一次; 所有逻辑值均需测试真( 所有逻辑值均需测试真(True)和假 ) (False)两种情况; )两种情况; 检查程序的内部数据结构, 检查程序的内部数据结构,保证其结 构的有效性; 构的有效性; 在取值上、下边界, 在取值上、下边界,即可操作范围内 运行所有循环. 运行所有循环
原理:如果语句中有错误,仅靠观察不 执行可能发现不了 在测试时,首先设计若干个测试用例, 然后运行被测程序,使程序中的每个可 执行语句至少执行一次 若干个 -> 尽量少 语句覆盖、程序段覆盖、程序块覆盖
语句覆盖率
语句覆盖率
已执行的可执行语句占程序中可执行语 句总数的百分比
复杂的程序不可能达到语句的完全覆盖 语句覆盖率越高越好
白盒测试方法(续)
程序结构分析; 程序结构分析; 逻辑覆盖; 逻辑覆盖; 基本路径测试; 基本路径测试; 白盒测试根据程序的控制结构设计导出测试用例, 白盒测试根据程序的控制结构设计导出测试用例, 主要用于软件程序的验证。 主要用于软件程序的验证。 需要全面了解程序内部的逻辑结构, 需要全面了解程序内部的逻辑结构,对所有逻辑 路径进行测试,是一种穷举路径的测试方法。 路径进行测试,是一种穷举路径的测试方法。
4、判定/条件覆盖(CDC)
含义:设计足够的测试用例,使得判定 中每个条件的所有可能(真/假)至少出现 一次,并且每个判定本身的判定结果 (真/假)也至少出现一次。
测试用例如下:
a=T,b=T,c=T a=F,b=F,c=F
但,若把逻辑运算符“&&”错写成“||” 或第二个运算符“||”错写成“&&”,该用 例仍然无法发现上述逻辑错误
语句覆盖测试用例
达到语句覆盖100% 的测试用例 A=1 B=1 C=1 未达到语句覆盖 100%的测试用例 A=0 B=1 C=3
语句覆盖的优点
检查所有语句 结构简单的代码的测试效果较好 容易实现自动测试 代码覆盖率高 如果是程序块覆盖,则不涉及程序块中 的源代码
语句覆盖不能检查出的错误
逻辑运算(&&、||)错误 判定的第一个运算符“&&”错写成“||”, 或第二个运算符“||”错写成“&&”,这时 使用上述的测试用例仍然可以达到 100%的语句覆盖。
3、条件覆盖(Condition Coverage)
在设计程序中,一个判定语句是由多个 条件组合而成的复合判定,判定 (a)&&(b||c)包含了三个条件:a,b和c。 为了更彻底的实现逻辑覆盖,可以采用 条件覆盖。 条件覆盖的含义是:构造一组测试用例, 使得每一判定语句中每个逻辑条件的可 能值至少满足一次。
白盒测试方法(续)
白盒测试主要是检查程序的内部结构、逻辑、 白盒测试主要是检查程序的内部结构 、 逻辑 、 循环和路径。常用测试用例设计方法有: 循环和路径。常用测试用例设计方法有:
逻辑覆盖法(逻辑驱动测试) 逻辑覆盖法(逻辑驱动测试) 基本路径测试方法
覆盖测试
主要是测试覆盖率, 主要是测试覆盖率,以程序内在逻辑结 构为基础的测试。包括以下6种类型 种类型: 构为基础的测试。包括以下 种类型:
6、修正条件判定覆盖(MCDC)
修正条件判定覆盖是由欧美的航空/航天制造厂商和使 修正条件判定覆盖是由欧美的航空 航天制造厂商和使 用单位联合制定的“ 用单位联合制定的“航空运输和装备系统软件认证标 目前在国外的国防、航空航天领域应用广泛。 准”,目前在国外的国防、航空航天领域应用广泛。 有资料表明,波音777整体设计费用的 整体设计费用的25%都花在了软 有资料表明,波音 整体设计费用的 都花在了软 件的MC/DC测试上。 测试上。 件的 测试上 含义: 含义:需要足够的测试用例来确定各个条件能够影响 到包含的判定的结果,即要求满足两个条件: 到包含的判定的结果,即要求满足两个条件:
语句覆盖不能检查出的错误
循环语句错误
循环次数错误 跳出循环条件错误
语句覆盖不能检查出的错误
循环语句例子
for(i=0;i<10;i++) { statement; } While(x>3) { statement; }
for(i=0;i<=10;i++) { statement; } While(x>3&&x<7) { statement; }
假设此时开发工作已结束,程序 假设此时开发工作已结束, 送交到测试组, 送交到测试组,没有人知道代码中有 除的错误。 一个潜在的被 0 除的错误。若测试组 采用的测试用例的执行路径没有同时 经过x=0和y=5/x进行测试 进行测试, 经过x=0和y=5/x进行测试,显然测试 工作似乎非常完善, 工作似乎非常完善,测试用例覆盖了 所有执行语句,也没有被 0 除的错误 所有执行语句, 发生。 发生。
测试用例如下:
a=F,b=T,c=F a=T,b=F,c=T
仔细分析可发现,该用例在满足条件覆盖的 同时把判定的两个分支也覆盖了,这样是否 能说达到了条件覆盖也就必然实现了判定覆 盖呢?
a=F,b=T,c=T a=T,b=F,c=F
上述用例满足条件覆盖的但并未满足判定覆 盖,为解决这一矛盾,需要多条件和分支兼 顾
语句覆盖 判定覆盖 条件覆盖 判定-条件覆盖 判定 条件覆盖 条件组合覆盖 修正-判定条件覆盖 修正 判定条件覆盖
逻辑覆盖法
int function1(int a,int b,int c) {
int x; x=0; if(a&&(b||c))
x=1;
return x;
}
1、语句覆盖(Statement Coverage)
语句覆盖率的问题
能达到很高的语句覆盖率 语句覆盖率看似很高,却有严重缺陷
if(x!=1) { statements; ……; } else { statement; }
测试用例
}99句 x = 2
语句覆盖率99%
}1句
wenku.baidu.com
50%的分支没有达到
2、判定覆盖(Decision Coverage)
比语句覆盖稍强的覆盖标准是判定覆盖。 判定覆盖的含义是:设计足够多的测试 用例,使程序中的每个判定至少都获得 一次“真值”或“假值”。
白盒测试方法
为什么要进行白盒测试? 为什么要进行白盒测试? 如果所有软件错误的根源都可以追溯到某个唯一原因, 如果所有软件错误的根源都可以追溯到某个唯一原因,那么问 题就简单了。然而,事实上一个bug 常常是由多个因素共同导致的, 常常是由多个因素共同导致的, 题就简单了。然而,事实上一个 如下图所示。 如下图所示。
白盒测试方法
逻辑覆盖法
测试用例
测试用例由测试输入数据以及与之对应的输 出结果组成。 出结果组成。 测试用例设计的好坏直接决定了测试的效果 和结果。 和结果。所以说在软件测试活动中最关键的 步骤就是设计有效的测试用例。 步骤就是设计有效的测试用例。 测试用例可以针对黑盒测试设计用例, 测试用例可以针对黑盒测试设计用例,也可 以针对白盒测试设计用例, 以针对白盒测试设计用例,我们今天开始讲 针对白盒测试的用例设计方法。 针对白盒测试的用例设计方法。
序号 1 2 3 4 5 6 7 8
a T T T T F F F F
b T T F F T T F F
c T F T F T F T F
a&&(b||c) T T T F F F F F
a 5 6 7
b
c
4 4 2 3
1 2 3
通过上表可以看出,布尔变量a可以通 过用例1和5达到MCDC的要求(用例2 和6或用例3和7也可以满足相应要求), 变量b可以通过用例2和4达到MCDC的 要求,变量c可以通过用例3和4达到 MCDC的要求,因此使用用例集 {1,2,3,4,5}即可满足MCDC的要求。显 然,这不是唯一的用例组合。
5、组合条件覆盖(MCC)
含义:设计足够的测试用例,使得每个 判定中条件的各种可能组合都至少出现 一次。 显然满足组合条件覆盖的测试用例是一 定满足判定覆盖、条件覆盖和判定/条 件覆盖的。
判定语句中3个逻辑条件,每个逻辑条件有 2种可能取值,共23=8种可能组合。
序号 1 2 3 4 5 6 7 8 a T T T T F F F F b T T F F T T F F c T F T F T F T F a&&(b||c) T T T F F F F F
相关文档
最新文档