第4章 白盒测试及其用例的设计

合集下载

第4章白盒测试及其实例设计

第4章白盒测试及其实例设计
第4章白盒测试及其实例设计
测试用例
Test Case 1 Test Case 2 Test Case 3 Test Case 4
表4-9 测试用例组9
输入
i
str
num1
期望输出 num2
5
‘T’
0
0
4
‘T’
1
0
4
‘A’
0
0
4
‘F’
0
1
score
执行路径
100
路径1
100
路径2
100
路径3
实例设计
3.设计测试用例 根据上面环形复杂度的计算结果,源程序的基本路径集合中有4条独立路径: 路径1:7->18 路径2:7->9->10->16->7->18 路径3:7->9->11->15->16->7->18 路径4:7->9->11->13->14->15->16->7->18 根据上述4条独立路径,设计了测试用例组9,如表4-9所示。测试用例组9 中的4个测试用例作为程序输入数据,能够遍历这4条独立路径。对于源程序 中的循环体,测试用例组9中的输入数据使其执行零次或一次。
序时,程序中每个判断条件的真值分支和假值分支至少被执行一遍。在保证完 成要求的情况下,测试用例的数目越少越好。
判断覆盖又称为分支覆盖。 以下是针对公共程序段设计的两个测试用例: Test Case 1:x=2000,y=600,z=6000 Test Case 3:x=50,y=600,z=2000
判断/条件覆盖 判断/条件覆盖是指设计若干个测试用例,执行被测试程序时,程序中 每个判断条件的真假值分支至少被执行一遍,并且每个判断条件的内 部判断式的真假值分支也要被执行一遍。 测试用例组6: Test Case 1:x=2000, y=600, z=2000 Test Case 6:x=2000, y=200, z=6000 Test Case 7:x=2000, y=600, z=2000 Test Case 8:x=50, y=200, z=2000

第四章-白盒测试及其用例的设计汇总

第四章-白盒测试及其用例的设计汇总

锦 城
错误:
学 院
➢ 穷举路径测试无法检查出程序本身是否违反了设计规 软
范,即程序是否是一个错误的程序。
件 测
➢ 穷举路径测试不可能查出程序因为遗漏路径而出错。 试
➢ 穷举路径测试发现不了一些与数据相关的错误。
• 采用白盒测试方法必须遵循以下几条原
则: 四
➢保证一个模块中的所有独立路径至少被测试
川 大
➢ 给定控制流图G的环形复杂度—V(G),也可定义为
V(G) = P+1
其中,P是控制流图G中判定节点的数量。
环形复杂度:
5
V(G) = E-N+2 => V(G) = 10-8+2=4
or
V(G) = P+1 => V(G) = 3+1=4
7
8
9
导出独立路径集:
路径1:5-15 (iRecordNum=0)
• 图矩阵是一个方形矩阵,其维数等于控制流图
四 川
的节点数。矩阵中的每列和每行都对应于标识
大 学
的节点,矩阵元素对应于节点间的边。
锦 城
• 通常,控制流图中的结点用数字标识,边则用
学 院
字母标识。如果在控制流图中从第 i 个结点到第 软
j 个结点有一个标识为 x 的边相连接,则在对应
件 测
图矩阵的第 i 行第 j 列有一个非空的元素 x 。
11
13
路径2:5-7-8-14-5-15
(iRecordNum≥0,iType=0)
14
路径3:5-7-9-11-14-5-15
15
(iRecordNum≥0,iType=1)
路径4:5-7-9-13-14-5-15

第4章 软件工程课件白盒测试用例设计方法(高等教学)

第4章 软件工程课件白盒测试用例设计方法(高等教学)
行业学习
控制流图
说明 控制流图是由节点和边组成的有向图 1. 节点代表了代码或程序流程图中矩形框中所表示的处理, 菱形表示的判断处理以及判断处理流程相交的汇合点, 在图中用标有编号的圆圈表示 2. 边表明了控制的顺序,在图中用有向箭头表示。
行业学习
控制流图
三种逻辑结构的控制流图
顺序
条件
行业学习
87
88
89-90
92
99-100
93
94
95
96
97-98
102
行业学习
基本路径和测试用例(1)
81-86
87
88
89-90
92
99-100
93
基本路径和测试用例 1. 81-86->87->88->92->93 >95->97-98->102 相应的测试用例: 测试输入 = (68,68,56) 预期结果 = 这是一个等腰三角形!
行业学习
环复杂度
环复杂度 闭合区域的数目 = 5 二值判定节点个数 + 1 =4+1=5 边的数目-节点的数目 + 2 = 16-13+2=5
行业学习
基本路径
实用的定义
一条路径是基本路径如果:
1. 是一条从起始节点到终止节点的路径.
2. 至少包含一条其它基本路径没有包含的边. (至 少引入一个新处理语句或一个新判断的程序通 路.)
常用的白盒测试技术 基本路径测试 分支-条件测试 循环测试
行业学习
说明 一般情况,仅使用一种测试用例设计方法很难获得被 测对象所需的测试用例。在实际测试中,最终的测试 用例通常都是多种设计技术相结合的结果。 在使用白盒测试方法之前进行代码评审是一个非常好 的工程实践

白盒测试技术

白盒测试技术
结束 33
实现判定/条件覆盖途径
• 实现判定/条件覆盖的途径:
– 修正的判定/条件覆盖 – 条件组合覆盖 – 基于严格程序图的路径覆盖
34
4.2.6 条件组合覆盖
1.定义 2.测试用例设计 3.测试分析
35
1.定义
• 条件组合覆盖定义
– 测试用例的设计应满足每个判定节点中, 所有简单判定条件的各种可能取值的组合 应至少执行一次。
29
4.2.5 判定/条件覆盖
1.定义 2.测试用例设计 3.测试分析
30
1.定义
• 判定/条件覆盖定义
– 测试用例的设计应满足判定节点的取真和取假分 支至少执行一次,且每个简单判定条件的取真和 取假情况也应至少执行一次。
• 判定/条件覆盖率
– 判定/条件覆盖率 = 条件操作数值或判定结果值至 少被评价一次的数量 / (条件操作数值总数 + 判 定结果总数)
T p4 x=x+c
print a,b,c,x
结束
13
案例代码的基本描述
• 案例:执行路径
– L13:p1p3 – L14:p1p4 – L23:p2p3 – L24:p2p4
开始
F a>1 AND b<2 T p2 p1
x=c+1
F a==3 OR x>3 p3
T p4 x=x+c
print a,b,c,x 结束
24
4.2.4 条件覆盖
1.定义 2.测试用例设计 3.测试分析
25
1.定义
• 条件覆盖定义
– 设计测试用例时应保证程序中每个复合判 定表达式中,每个简单判定条件的取真和 取假情况至少执行一次。

白盒测试的测试用例设计如何制定有效的测试计划

白盒测试的测试用例设计如何制定有效的测试计划

白盒测试的测试用例设计如何制定有效的测试计划白盒测试是软件测试中的一种重要测试方法,它主要通过分析软件内部的结构和代码,设计测试用例来验证软件的正确性和完整性。

而制定有效的测试计划是确保白盒测试能够高效、全面地进行的关键步骤。

本文将介绍白盒测试的测试用例设计原则,并提供一种有效的测试计划制定方法。

一、白盒测试的测试用例设计原则1. 代码覆盖率原则:白盒测试的目的之一是检查软件内部的代码是否正确执行。

因此,在设计测试用例时,应尽量覆盖所有代码路径和分支,并测试所有的边界条件,确保软件的每一行代码都得到验证。

2. 条件覆盖原则:软件中的条件语句通常包含不同的判断条件,例如if语句中的true/false分支。

在设计测试用例时,必须确保每种条件的不同取值都能得到验证,以保证代码在不同情况下的正确性。

3. 数据流覆盖原则:数据流是软件内部信息的流动路径,包括输入、输出、临时变量等。

测试用例应该覆盖各个数据流的不同取值,并测试数据在不同路径下的处理情况,以确保数据的正确传递和处理。

4. 边界值原则:边界值是指各种数据取值范围的临界点,通常是导致错误的关键点。

在设计测试用例时,需要测试边界值的正确处理情况,比如输入的最大值、最小值、极大值和极小值等,以验证软件在边界情况下的稳定性和准确性。

二、制定有效的测试计划1. 确定测试目标:在制定测试计划时,首先需要明确测试的目标和范围。

例如,测试的是整个软件系统还是部分模块,测试的重点是什么等。

只有明确了测试目标,才能有针对性地制定测试计划。

2. 分析需求和设计文档:仔细阅读软件的需求文档和设计文档,深入了解软件的功能和设计方案。

根据文档中的信息和要求,确定需要覆盖的测试点和测试用例。

3. 制定测试策略:根据测试目标和需求分析结果,制定相应的测试策略。

测试策略包括测试的级别、测试的方法、测试的工具等。

例如,可以选择结构化测试、基于路径的测试或基于需求的测试等不同的测试方法。

白盒测试及其用例的设计

白盒测试及其用例的设计

但当判断条件较为复杂时,它未必能发现每个条件的错误:
((x>3)&&(z<10))为真和为假各取一次(但并不管是怎么取到的)
2. 判定覆盖(也称为分支覆盖):设计若干个测试用例,运 行所测程序,使程序中每个判断的取真分支和取假分支各 至少执行一次; 判定覆盖是把程序中每个分支都覆盖到;
if (x>=0) y=x;
白盒法需要了解程序的内部结构和详细的处 理过程,它按照程序内部逻辑测试程序,检 验程序中每条通路是否按预定要求正确工作。
对于白盒测试,即使每条路径都测试了,程序仍 可能有错。再如由于疏忽漏写了路径,白盒测试也发 现不了。
所以,白盒法不能使测试达到彻底。为了用有限 的测试发现更多的错误,需精心设计测试用例。黑盒 法、白盒法是设计测试用例的基本策略,每一种方法 对应着多种设计测试用例的技术,每种技术可达到一 定的软件质量标准要求。
6. 路径覆盖:设计足够多的测试用例,运行所测程序,要覆盖 程序中所有可能的路径 它是最强的覆盖准则,但只有在程序中有多个复杂分支时, 才能看出和之前几种覆盖的区别
void DoWork(int x,int y,int z)
{
int k=0,j=0;
if((x>3)&&(z<10))
{
k=x*y-1; //语句块1
x4y5z5abdx2y5z5ace上面的两个测试用例虽然能够满足分支覆盖的要求但是也不能实现对判断条件的检查效果如果把第二个条件y5错误地写成y5上面的测试用例同样满足了分支覆盖即查不出写错了这个事实使程序中每个判断的取真分支和取假分支至少执行一次条件覆盖就是设计若干个测试用例运行被测试对象使得程序中每个判断的每个条件的所有可能取值至少执行一次

白盒测试及用例设计

白盒测试及用例设计

白盒测试白盒测试(White-box Testing,又称逻辑驱动测试,结构测试)是把测试对象看作一个打开的盒子。

利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。

白盒测试又称为结构测试和逻辑驱动测试。

白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。

其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。

语句覆盖每条语句至少执行一次。

判定覆盖每个判定的每个分支至少执行一次。

条件覆盖每个判定的每个条件应取到各种可能的值。

判定/条件覆盖同时满足判定覆盖条件覆盖。

条件组合覆盖每个判定中各条件的每一种组合至少出现一次。

路径覆盖使程序中每一条可能的路径至少执行一次。

白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。

"白盒"法是穷举路径测试。

在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。

贯穿程序的独立路径数是天文数字。

但即使每条路径都测试了仍然可能有错误。

第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。

第二,穷举路径测试不可能查出程序中因遗漏路径而出错。

第三,穷举路径测试可能发现不了一些与数据相关的错误。

白盒测试六种覆盖方法摘要:白盒测试作为测试人员常用的一种测试方法,越来越受到测试工程师的重视。

白盒测试并不是简单的按照代码设计用例,而是需要根据不同的测试需求,结合不同的测试对象,使用适合的方法进行测试。

白盒测试及测试案例设计已经看.pptx

白盒测试及测试案例设计已经看.pptx

第23页/共60页
条件覆盖(续)
• 说明:虽然前面的一组测试用例同时达到了条件覆盖和
判定覆盖,但是,并不是说满足条件覆盖就一定能满足
判定覆盖。如果设计了下表中的这组测试用例,则虽然
满足了条件覆盖,但只是覆盖了程序中第一个判定的取
假分支c 和第二个判定的取真分支d,不满足判定覆盖
的要求。
测试用例
执行路径 覆盖条件 覆盖分支
4.2.1 控制流图 4.2.2 环形复杂度 4.2.3 图矩阵
Return
第5页/共60页
4.2.1 控制流图
• 控制流图(可简称流图)是对程序流程图进行简化后得 到的,它可以更加突出的表示程序控制流的结构。
• 控制流图中包括两种图形符号:节点和控制流线。
➢节点由带标号的圆圈表示,可代表一个或多个语句、一 个处理框序列和一个条件判定框(假设不包含复合条 件)。
Return
第12页/共60页
4.3.1 测试覆盖率
• 测试覆盖率:用于确定测试所执行到的覆盖项的百分比。 其中的覆盖项是指作为测试基础的一个入口或属性,比 如语句、分支、条件等。
• 测试覆盖率可以表示出测试的充分性,在测试分析报告 中可以作为量化指标的依据,测试覆盖率越高效果越好。 但覆盖率不是目标,只是一种手段。
➢控制流线由带箭头的弧或线表示,可称为边。它代表程
序中的控制流。
常见结构的控制流图
• 对于复合条件,则可将其分解为多个单个条件,并映射 成控制流图。
第6页/共60页
4.2.2 环形复杂度
• 环形复杂度也称为圈复杂度,它是一种为程序逻辑复杂 度提供定量尺度的软件度量。
• 环形复杂度的应用——可以将环形复杂度用于基本路 径方法,它可以提供:程序基本集的独立路径数量;确 保所有语句至少执行一次的测试数量的上界。

第4章 白盒测试及其用例的设计PPT课件

第4章 白盒测试及其用例的设计PPT课件

A Free sample background from
第四章 白盒测试及其用例的设计
判定覆盖
• 要实现DoWork函数的判定覆盖,需要设计两个测试用例。
➢ 测试用例的输入为:{x=4、y=5、z=5};{x=2、y=5、z=5}
➢ 程序执行的路径分别是:abd;ace
• 分析:
上述两个测试用例不仅满足了判定覆盖,同时还做到语 句覆盖。从这点看似乎判定覆盖比语句覆盖更强一些,但 仍然无法确定判定内部条件的错误。例如把第二个判定中 的条件y>5错误写为y<5,使用上述测试用例,照样能按原 路径执行而不影响结果。因此,需要有更强的逻辑覆盖准 则去检验判定内的条件。
第四章 白盒测试及其用例的设计
条件覆盖(续)
• 根据条件覆盖的基本思想,要使上述4个条件可能产生的 8种情况至少满足一次,设计测试用例如下:
测试用例 执行路径 覆盖条件 覆盖分支
x=4、y=6、z=5
abd
T1、T2、 T3、T4
bd
x=2、y=5、 z=15 ace
-T1、-T2、 -T3、-T4
假设此时开发工作已结束,程序 送交到测试组,没有人知道代码中有 一个潜在的被 0 除的错误。若测试组 采用的测试用例的执行路径没有同时 经过x=0和y=5/x进行测试,显然测试 工作似乎非常完善,测试用例覆盖了 所有执行语句,也没有被 0 除的错误 发生。
Return
A Free sample background from
A Free sample background from
第四章 白盒测试及其用例的设计
判定覆盖(续)
• 说明:以上仅考虑了两出口的判断,我们还应把判定覆盖 准则扩充到多出口判断(如Case语句)的情况。因此,判 定覆盖更为广泛的含义应该是使得每一个判定获得每一种 可能的结果至少一次。

白盒测试及用例的设计

白盒测试及用例的设计
为了提高决策覆盖率,可以增加更多的测试用例或优化现有的 测试用例。
条件覆盖率
详细描述
为了提高条件覆盖率,可以增加 更多的测试用例或优化现有的测 试用例。
04
总结词
高条件覆盖率意味着测试用例对 程序中的条件进行了全面的测试, 但并不能保证所有可能的条件结 果都已覆盖。
01 03
总结词
条件覆盖率是衡量测试用例覆盖 程序中条件语句(如if、while等) 中的条件的程度的指标。
TestNG是Java语言的测试框架,具有灵活的测试用例 管理功能。
详细描述
TestNG支持多种测试类型,如单元测试、集成测试和 端到端测试。它提供了丰富的断言方法和数据驱动测试 ,有助于提高测试效率和代码覆盖率。
案例三:使用Selenium进行白盒测试
总结词
Selenium是一个用于Web应用程序 的自动化测试框架。
边界值分析法
总结词
边界值分析法是一种白盒测试用例设计方法 ,它关注输入域的边界值,通过测试边界值 和附近的值来验证软件的健壮性。
详细描述
边界值分析法主要针对输入域的边界值进行 测试,因为这些值在软件中往往容易出现问 题。通过测试边界值和附近的值,可以有效 地发现软件在处理异常情况时的缺陷和错误 。这种方法有助于提高测试的覆盖率,确保
详细描述
Selenium支持多种浏览器和操作系统, 能够模拟用户操作,如点击、输入等。 通过编写测试脚本,可以实现对Web 应用程序的全面白盒测试,确保功能 和用户体验的正确性。
感谢您的观看
THANKS
缺陷跟踪与修复
缺陷管理
对发现的问题进行跟踪管理,确保问题得到及时修复。
缺陷验证
对修复的问题进行验证,确保问题已被正确修复。

第4章 白盒测试及其用例的设计(2)

第4章 白盒测试及其用例的设计(2)
开始
循环体
N
循环条件
Y
结束
A Free sample background from
Slide 12
#include <stdio.h> 程序功能: 程序功能: void main() 定义两个整型变量i,sum,输入i,当 定义两个整型变量i,sum,输入i,当 { i值小于等于10时,作循环 ; 值小于等于10时,作循环 Int i=0; Int sum=0; sum的值每次加i,i自身加1 sum的值每次加i,i自身加1,最 while(i<=10) 后输出显示sum的值。 后输出显示sum的值。 { 可测试下表中列出的几项 sum=sum+i ; 测试项 预期结果 i++ ; 循环变量的初值 0 } 循环变量的最大值 10 i++ printf(“%d\n”,sum); 循环变量的增量 ; 何时退出循环 当循环变量i超过最大值10时退出循环 }
A Free sample background from
Slide 9
代码覆盖的局限性
只考虑代码的测试,未将重点放在测试程序的功能 实现上 手工生成测试数据很繁琐 未考虑输入数据的取值范围和边界值 未考虑循环的处理方法 解决: 使用黑盒方法弥补不足。 在做白盒测试时,某些规模非常小的函数就不必设 计测试用例进行逻辑覆盖,只需阅读程序代码,进 行代码走查就可以。
A Free sample background from
Slide 4
基本路径测试方法
基本路径测试方法包括以下4 基本路径测试方法包括以下4个步骤: (1)画出程序的控制流图。 )画出程序的控制流图 控制流图。 (2)计算程序的环形复杂度,导出程序基本路 )计算程序的环形复杂度 环形复杂度,导出程序基本路 径集中的独立路径 径集中的独立路径条数,这是确定程序中每个 独立路径条数,这是确定程序中每个 可执行语句至少执行一次所必须的测试用例数 目的上界。 基本路径集,确定程序的独立路径。 (3)导出基本路径集,确定程序的独立路径。 )导出基本路径集 (4)设计测试用例的输入数据和预期输出。 )设计测试用例 测试用例的输入数据和预期输出。

白盒测试及其用例设计

白盒测试及其用例设计

优先测试关键业务
逻辑
针对核心功能和业务流程,设计 有针对性的测试用例,提高关键 代码的覆盖率。
自动化测试工具
利用自动化测试工具进行白盒测 试,可以快速执行大量测试用例, 提高代码覆盖率。
如何处理复杂的业务逻辑?
分解复杂逻辑
将复杂的业务逻辑拆分成多个小逻辑,针对每个 小逻辑设计独立的测试用例,降低测试难度。
确定测试目标与范围
1
明确测试的目的和目标,确定测试的范围和重点。
2
了解被测系统的需求和功能,确定测试的关注点。
3
确定测试所需的资源、时间和人力,制定相应的 计划。
分析被测系统与代码
对被测系统进行详细分析,了解其架构、模块 和关键功能。
熟悉被测系统的代码结构、逻辑和实现方式。
识别潜在的缺陷和风险点,为设计测试用例提 供依据。
详细描述
判定表设计法是一种基于条件判断的测试用 例设计方法。它通过列出所有可能的输入条 件和相应的输出结果,构建判定表,然后根 据判定表设计测试用例,以覆盖所有可能的
输入条件和输出结果。
决策树设计法
总结词
通过构建决策树来设计测试用例的方法。
详细描述
决策树设计法是一种基于条件判断的测试用例设计方法。它通过构建决策树来表示软件 中各种条件判断的逻辑关系,然后根据决策树设计测试用例,以覆盖所有可能的判断逻
分析测试覆盖率和质量,评估被测系统的质量水 平。
提供改进建议和优化方案,为开发团队提供反馈 和建议。
05
白盒测试工具与技术
Junit
Junit是一个Java语言的单元测 试框架,用于编写和执行测试 用例,验证代码的正确性和可
靠性。
它支持测试驱动开发(TDD), 允许开发者先编写测试用例,再 编写实现代码,从而保证代码质
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章 白盒测试及其用例的设计
A Free sample background from
Slide 10
计算环形复杂度的方法

环形复杂度以图论为基础,为我们提供了非常有用的软件 度量。可用如下三种方法之一来计算环形复杂度: 控制流图中区域的数量对应于环形复杂度。 给定控制流图G的环形复杂度—V(G),定义为 V(G) = E-N+2 其中,E是控制流图中边的数量,N是控制流图中的节点 数量。 给定控制流图G的环形复杂度—V(G),也可定义为 V(G) = P+1 其中,P是控制流图G中判定节点的数量。


第四章 白盒测试及其用例的设计
A Free sample background from
Slide 16
逻辑覆盖法(续)

判定/条件覆盖:设计足够多的测试用例,使得程序中每个 判定包含的每个条件的所有情况(真/假)至少出现一次, 并且每个判定本身的判定结果(真/假)也至少出现一次。 ——满足判定/条件覆盖的测试用例一定同时满足判定覆盖 和条件覆盖。
第四章 白盒测试及其用例的设计
A Free sample background from
Slide 21
判定覆盖

要实现DoWork函数的判定覆盖,需要设计两个测试用例。 测试用例的输入为:{x=4、y=5、z=5};{x=2、y=5、z=5} 程序执行的路径分别是:abd;ace 分析: 上述两个测试用例不仅满足了判定覆盖,同时还做到 语句覆盖。从这点看似乎判定覆盖比语句覆盖更强一些, 但仍然无法确定判定内部条件的错误。例如把第二个判定 中的条件y>5错误写为y<5,使用上述测试用例,照样能按 原路径执行而不影响结果。因此,需要有更强的逻辑覆盖 准则去检验判定内的条件。
A Free sample background from
Slide 20
语句覆盖

要实现DoWork函数的语句覆盖,只需设计一个测试用例 就可以覆盖程序中的所有可执行语句。 测试用例输入为:{ x=4、y=5、z=5 } 程序执行的路径是:abd 分析: 语句覆盖可以保证程序中的每个语句都得到执行,但 发现不了判定中逻辑运算的错误,即它并不是一种充分的 检验方法。例如在第一个判定((x>3)&&(z<10))中把“&&” 错误的写成了“||”,这时仍使用该测试用例,则程序仍会 按照流程图上的路径abd执行。可以说语句覆盖是最弱的 逻辑覆盖准则。


检查程序的内部数据结构,保证其结构的有效性。 在上下边界及可操作范围内运行所有循环。 白盒测试主要是检查程序的内部结构、逻辑、循环和 路径。常用测试用例设计方法有: 逻辑覆盖法(逻辑驱动测试) 基本路径测试方法
第四章 白盒测试及其用例的设计
A Free sample background from
控制流图(可简称流图)是对程序流程图进行简化后得到 的,它可以更加突出的表示程序控制流的结构。 控制流图中包括两种图形符号:节点和控制流线。 节点由带标号的圆圈表示,可代表一个或多个语句、一个 处理框序列和一个条件判定框(假设不包含复合条件)。 控制流线由带箭头的弧或线表示,可称为边。它代表程序 中的控制流。

第四章 白盒测试及其用例的设计
A Free sample background from
Slide 12
习题

根据左图给出的程序流程图, 完成以下要求:
(1)画出相应的控制流图。
(2)计算环形复杂度。
(3)给出相应的图矩阵。 (4)找出程序的独立路径集合。
Return
A Free sample background from
第四章 白盒测试及其用例的设计
Slide 4
白盒测试方法(续)



白盒测试也称结构测试或逻辑驱动测试,是针对被测单元 内部是如何进行工作的测试。它根据程序的控制结构设计 测试用例,主要用于软件或程序验证。 白盒测试法检查程序内部逻辑结构,对所有逻辑路径进行 测试,是一种穷举路径的测试方法。但即使每条路径都测 试过了,仍然可能存在错误。因为: 穷举路径测试无法检查出程序本身是否违反了设计规范, 即程序是否是一个错误的程序。 穷举路径测试不可能查出程序因为遗漏路径而出错。 穷举路径测试发现不了一些与数据相关的错误。
Slide 2
本章教学目标
理论环节

学习理解白盒测试方法的基本概念 学习理解白盒测试的覆盖理论


学习掌握白盒测试的路径表达 学习掌握白盒测试的基本路径测试法
实践环节

通过案例运用学习掌握覆盖问题的解决方法 运用基本路径测试方法进行实际程序测试
第四章 白盒测试及其用例的设计
A Free sample background from
第四章 白盒测试及其用例的设计
A Free sample background from
Slide 5
白盒测试方法(续)

采用白盒测试方法必须遵循以下几条原则,才能达到 测试的目的: 保证一个模块中的所有独立路径至少被测试一次。 所有逻辑值均需测试真 (true) 和假 (false) 两种情况。
第四章 白盒测试及其用例的设计
A Free sample background from
Slide 15
4.3.2 逻辑覆盖法

根据覆盖目标的不同,逻辑覆盖又可分为语句覆盖、判定 覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。 语句覆盖:选择足够多的测试用例,使得程序中的每个可 执行语句至少执行一次。 判定覆盖:通过执行足够的测试用例,使得程序中的每个 判定至少都获得一次“真”值和“假”值, 也就是使程序 中的每个取“真”分支和取“假”分支至少均经历一次, 也称为“分支覆盖”。 条件覆盖:设计足够多的测试用例,使得程序中每个判定 包含的每个条件的可能取值(真/假)都至少满足一次。
第四章 白盒测试及其用例的设计
A Free sample background from
Slide 13
4.3 覆盖测试
4.3.1 测试覆盖率
4.3.2 逻辑覆盖法
4.3.3 面向对象的覆盖 4.3.4 测试覆盖准则
Return
A Free sample background from
第四章 白盒测试及其用例的设计
Slide 14
4.3.1 测试覆盖率



测试覆盖率:用于确定测试所执行到的覆盖项的百分比。 其中的覆盖项是指作为测试基础的一个入口或属性,比如 语句、分支、条件等。 测试覆盖率可以表示出测试的充分性,在测试分析报告中 可以作为量化指标的依据,测试覆盖率越高效果越好。但 覆盖率不是目标,只是一种手段。 测试覆盖率包括功能点覆盖率和结构覆盖率: 功能点覆盖率大致用于表示软件已经实现的功能与软件需 要实现的功能之间的比例关系。 结构覆盖率包括语句覆盖率、分支覆盖率、循环覆盖率、 路径覆盖率等等。
Slide 1
第4章 白盒测试及其用例的设计
4.1 白盒测试方法 4.2 白盒测试的基本概念 4.3 覆盖测试 4.4 路径测试 4.5 最少测试用例数计算
第四章 白盒测试及其用例的设计
A Free sample background from

第四章 白盒测试及其用例的设计
A Free sample background from
Slide 11
4.2.3 图矩阵


图矩阵是控制流图的矩阵表示形式。
图矩阵是一个方形矩阵,其维数等于控制流图的节点数。 矩阵中的每列和每行都对应于标识的节点,矩阵元素对应 于节点间的边。 通常,控制流图中的结点用数字标识,边则用字母标识。 如果在控制流图中从第 i 个结点到第 j 个结点有一个标识 为 x 的边相连接,则在对应图矩阵的第 i 行第 j 列有一个 非空的元素 x 。
Slide 3
4.1 白盒测试方法

为什么要进行白盒测试? 如果所有软件错误的根源都可以追溯到某个唯一原因, 那么问题就简单了。然而,事实上一个bug 常常是由多个 因素共同导致的,如下图所示。 假设此时开发工作已结束,程序 送交到测试组,没有人知道代码中有 一个潜在的被 0 除的错误。若测试组 采用的测试用例的执行路径没有同时 经过x=0和y=5/x进行测试,显然测试 工作似乎非常完善,测试用例覆盖了 所有执行语句,也没有被 0 除的错误 发生。
常见结构的控制流图

对于复合条件,则可将其分解为多个单个条件,并映射成 控制流图。
第四章 白盒测试及其用例的设计
A Free sample background from
Slide 9
4.2.2 环形复杂度




环形复杂度也称为圈复杂度,它是一种为程序逻辑复杂度 提供定量尺度的软件度量。 环形复杂度的应用——可以将环形复杂度用于基本路径方 法,它可以提供:程序基本集的独立路径数量;确保所有 语句至少执行一次的测试数量的上界。 独立路径是指程序中至少引入了一个新的处理语句集合或 一个新条件的程序通路。采用流图的术语,即独立路径必 须至少包含一条在本次定义路径之前不曾用过的边。 测试可以被设计为基本路径集的执行过程,但基本路径集 通常并不唯一。


组合覆盖:通过执行足够的测试用例,使得程序中每个判 定的所有可能的条件取值组合都至少出现一次。 ——满足组合覆盖的测试用例一定满足判定覆盖、条件覆 盖和判定/条件覆盖。 路径覆盖:设计足够多的测试用例,要求覆盖程序中所有 可能的路径。
第四章 白盒测试及其用例的设计
A Free sample background from
Slide 6
4.2 白盒测试的基本概念
相关文档
最新文档