5.白盒测试技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
50/149
(2)分支(判定)覆盖
什么是分支覆盖? 分支覆盖是指按程序中的分支 (判定)条件设计若干测试用例, 通过运行被测程序进行测试 ,使 得程序中每个分支(判定)的真分 支和假分支的情况至少遍历一次。
51/149
举例
仍以上述程序段为例,若选用的 两组测试用例是: CASEl: CASE3: A=2 A=1 B=0 B=0 X=3 X=1 则可分别执行路径ace和abd。 从而使两个判断的4个分支c、 e和b、d分别得到覆盖。
举例:变量定义和引用
语句1: X:=Y十Z ;定义了X,引用了Y和Z; 语句2: if Y>Z then goto exit ;引用了Y和Z。 语句3: READ X 语句4: WRITE X
30/149
;定义了X。
;引用了X。
举例:变量交叉引用表
31/149
数据流分析
发现有两个引用错误: ①语句2引用了变量W,而在此之前并末对其定义。 ②语句5、6引用变量V,但在第一次执行循环时也 未对其定义过,变量V在语句7定义 。
已定义、未定义、私有/公有说明、变量类型和使用情况。
15/149
2)子程序引用表
在表中列出各个子程序、宏和函数的属性: 已定义、未定义、类型; 已引用、未引用、引用次数; 输入参数个数、类型、顺序;
输出参数个数、类型、顺序。
16/149
3)等价表
在表中列出在等价语句
或等值语句中出现的全部变 量和标号。
为了检测引用异常,需要检查程序的每一 条路经。可以采用深度优先算法遍历程序 流程中的每一条路径。 使用变量交叉引用表,表中包含已被定义,
但未被引用的一些变量。
23/149
3)表达式分析
对表达式进行分析,发现表达式中的错误: • 不正确使用括号造成的错误; • 数组下标越界造成的错误; • 除数为零造成的错误; • 对负数开平方;
56/149
举例
57/149
举例
测试用例 CASE 6 CASE 7 CASE 8 A B X 所走路径 ace abd abe 覆盖条件 T1,T2,T3,T4 ~T1,T2,~T3,~T4 T1,~T2,T3,~T4
2 0 3 1 0 1 2 1 1
从上表可以看出,这三个测试用例把4个条件 的8种情况都作了覆盖, 4个分支也都进行了覆盖。
强化对源程序中数据类型的检查。 根据上下文,对源程序中数据单位
的进行一致性检验。
分析程序中的变量类型或单位错误。
21/149
2)引用分析
目的:通过引用分析,发现程序中的引 用异常。 什么是引用异常? 如果沿着程序的控制路径,变量在定义 以后未被引用,这就发生了引用异常。
22/149
如何分析引用异常?
(4)数据流分析
数据流分析是随着编译系统要生成有效的 目标代码而出现的,主要用于代码优化。 数据流分析方法,可以用于查找如引用未 定义变量等程序错误,以及查找对未曾引
用的变量再次赋值等数据流异常的情况。
27/149
数据流分析重要性
在程序测试中,找出数据定义和引 用错误是很重要的。因为,这是一些
• 对浮点数计算的误差进行检查。
24/149
(3)接口一致性分析
接口一致性分析的目的: 检查模块之间接口的一致性和模
块与外部数据库之间接口的一致性。
25/149
接口一致性分析
• 检查形式参数与实际参数在类型、数
量、维数、顺序、使用上的一致性;
• 检查全局变量和公共数据区在使用上
的一致性。
26/149
(1)生成引用表 (2)程序错误分析
(3)接口一致性分析
( 4 )数据流分析
11/149
(1)生成引用表
引用表类型 生成引用表的目的

12/149
引用表类型
变量交叉引用表; 子程序引用表; 循环层次表; 等价表; 常量表; 操作符统计表; 操作数统计表。
13/149
Leabharlann Baidu
3.静态分析的方法
8/149
1.什么是静态分析
静态分析是对被测程序进行代 码和数据分析的一种技术。静态分
析并不要求在计算机上执行所测试
的程序。
9/149
2.静态分析的目的
程序逻辑和编码检查
一致性检查
接口分析
I/O规格说明分析
数据流分析
变量类型检查和模块分析
10/149
3.静态分析的方法
46/149
(1)语句覆盖
语句覆盖是指按照程序流程设计
若干个测试用例,然后运行被测程
序,使程序中的每个可执行语句至
少执行一次。
47/149
举例
程序段: IF((A>1)AND(B=O))THEN X=X/A; IF((A=2)OR(X>1)) THEN X=X++;
该程序段有4个语句,5条路径a,b, c,d,e。
测试用例 CASE 1 CASE 8 CASE 9 CASE 10 A B X ace abe abe abd 所走路径 覆盖条件 ~T1,T2,~T3,T4 T1,~T2,T3,~T4 ~T1,T2,~T3,T4 T1,~T2,T3,~T4
2 0 3 2 1 1 1 0 3 1 1 1
这4个测试用例虽然满足了判定-条件覆盖要求,但仅 覆盖了程序段中4条路径(ace,abd,abe,acd)中的 3条(ace,abd,abe),漏掉了路径acd。
62/149
(5)路径覆盖
什么是路径覆盖? 路径覆盖是指设计足够多的 测试用例,运行程序,要求覆盖
程序中所有可能的执行路径。
63/149
举例
上述程序中的4条路径: • ace记为L1 • abd记为L2 • abe记为L3 • acd记为L4
40/149
(1)程序流程图分析
流程图: 流程图是一种程序控制结 构的图形表示方式。 图符:
(1)处理框(矩形) (2)条件框(菱形) (3)数据流线(有向线)
41/149
(2)程序控制流图分析
控制流图:
为了突出程序中控制 流的结构,需要对流 程图进行简化,这种 简化后的流程图称为 控制流图。
图符:
白盒测试目的
通过检查软件内部的逻辑结构,对 程序的数据定义和引用进行分析,对程
序的逻辑路径进行覆盖测试。
4/149
白盒测试特点
• 依据软件设计说明书进行测试; • 对程序内部细节进行严密检验; • 针对特定条件设计测试用例; • 对逻辑路径进行覆盖测试。
5/149
白盒测试应用范围
白盒测试与黑盒测试分别用于软件测试的不同阶段:
48/149
举例
如果选用的测试用例是: CASE1: A=2 B=0 X=3 则程序按路径ace执行。
这时,该程序段的4个语句均得 到执行,从而作到了语句覆盖。
49/149
举例
如果选用的测试用例是: CASE2: A=2 B=1 X=3 则程序按路径abe执行。
这时,该程序段只执行了其中的3 个语句,X=X/A未执行。所以,未 达到语句覆盖。
59/149
(4)判定-条件覆盖
什么是判定-条件覆盖? 判定—条件覆盖要求设计足够的 测试用例,使得判断中每个条件的所 有可能至少出现一次,并且每个判断 本身的判定结果也至少出现一次。
60/149
(4)判定-条件覆盖
每个判断中包含2个条件,4种组合,所以在两个判断中共有 8种组合:
61/149
(4)判定-条件覆盖
38/149
2.程序结构分析目的
利用流程图语法,对程序控制流进行 分析。 验证结构化编程规则是否得到遵循, 如果确已遵循,便可得到有关程序部 分的语法树。 利用流程图语法,找出程序控制结构 的缺陷。
39/149
3.程序控制流分析
(1)程序流程图分析 (2)程序控制流图分析 (3)生成控制流图矩阵
17/149
4)常量表
在表中列出全部的数字常量
和字符常量,并指出它们在 哪些语句中首先被定义。
18/149
(2)程序错误分析 程序错误分析目的:
用于确定在源程序中是否有
某类错误或危险结构。
19/149
程序错误分析的类型
变量类型和单位分析
引用分析
表达式分析
20/149
1)变量类型和单位分析
• 白盒测试主要用于软件测试过程的早期,如单元测试。
• 黑盒测试主要用于软件测试过程的中后期,包括集成
测试,系统测试,验收测试。
• 也可综合采用黑盒测试与白盒测试技术。
灰盒测试=黑盒测试+白盒测试
白盒测试技术
程序静态分析 程序结构分析 逻辑覆盖 程序插桩 动态测试
5.2程序静态分析
1.什么是静态分析 2.静态分析的目的
常见程序错误的表现形式,如拼错变
量名、变量名混淆或丢失了变量引用 语句等。
28/149
与变量相关的两个概念
变量定义:如果程序中某一语句执 行时能够改变某个变量V的值,则 称变量V是被该语句定义的。 变量引用:如果程序中某一语句的 执行时使用了内存中变量V的值, 则说该语句引用变量V。
29/149
五. 白盒测试技术
5.1概述 5.2程序静态分析 5.3程序结构分析 5.4逻辑覆盖 5.5程序插桩 5.6动态测试 5.7白盒测试实例
1/149
5.1 概述
什么是白盒测试?
白盒测试又称结构测试、逻 辑驱动测试或基于代码的测试。
2/149
白盒测试
输入
输出
被测程序被当做一个透明的盒子, 测试者可以看到程序的内部结构。
54/149
(3)条件覆盖
什么是条件覆盖? 条件覆盖是指通过设计若干测 试用例,执行被测程序以后,要使 每个判定中的每个条件的可能取值 至少满足一次。
55/149
举例
程序段: IF((A>1)AND(B=O))THEN X=X/A IF((A=2)OR(X>1)THEN x=x++
该程序段有两个判断,4个条件。
生成引用表的目的
1.直接从表中查出说明、使用错误

循环层次表 变量交叉引用表
2.为用户提供辅助信息

子程序引用表 等价表 常量表
3.用来做错误预测和程序复杂度的计算

操作符统计表 操作数的统计表
14/149
1)变量交叉引用表
变量交叉引用表也称为变量定义与引用表。 在表中列出所有变量,顺序可以是按出现的 先后顺序,也可以按字典顺序。 标明各个变量的属性:
58/149
举例
测试用例 CASE 8 CASE 9 A B X 所走路径 abe abe 覆盖分支 be be 覆盖条件 T1,~T2,T3,~T4 ~T1,T2,~T3,T4
2 1 1 1 0 3
从上表可以看出,这两个测试用例把4个条件的8 种情况都作了覆盖,但是只覆盖了4个分支中的两个,说 明覆盖了条件的测试用例不一定覆盖了分支。
52/149
举例
若选用另外两组测试用例: CASE4: CASE5: A=3 A=2 B=0 B=1 X=3 X=1 则可分别执行路径acd和abe。 同样使两个判断的4个分支c、 e和b、d分别得到覆盖。
53/149
分支覆盖缺点
CASE4和CASE5 两组测试用例不仅满足了判定
覆盖,同时还做到了语句覆盖。 但是,在此程序段中的第2个判断条件x>1如 果错写成x<1,使用CASE5,照样能按原路径 执行,而不影响结果。 所以,判定覆盖仍无法确定判断内部条件的 错误。
34/149
1.程序结构
好的程序结构是编写良好程序的基本要求。 结构不好的程序会给测试、排错和维护带 来许多不必要的困难。 结构化程序的概念逐渐为人们普遍接受,
要求程序员写出的程序是结构良好的。
35/149
结构化程序-顺序结构
36/149
结构化程序-分支结构
37/149
结构化程序-循环结构
程序中还包含两个异常: ③语句6对Z的定义在该循环中的左边分支中从未引 用过。 ④语句8对W的定义也从未引用过。
32/149
5.3程序结构分析
程序结构分析是白盒测试的主要
手段之一,程序结构分析的目的是
找到程序流程中隐藏的各种错误。
33/149
程序结构分析
1.程序结构
2.程序结构分析目的 3.程序控制流分析
(3)生成控制流图矩阵 为便于表示和处理控制 流图,可以把控制流图表示 成矩阵的形式,称为控制流 图矩阵。
44/149
控制流图矩阵
控制流矩阵:n×n方阵 n为控制流图中节点数量
45/149
5.4 逻辑覆盖
常用的逻辑覆盖方法:
(1)语句覆盖 (2)分支(判定)覆盖 (3)条件覆盖 (4)判定-条件覆盖 (5)路径覆盖
(1)节点(圆圈) (2)控制流线(有向线)
42/149
控制流图符号
①节点:以标有编号的圆圈表 示,代表程序流程图中矩形 框所表示的处理、菱形表示 的分支及多选择结构点。 ②控制流线:以带箭头的直线 或弧线表示,与程序流程图 中的数据流线是一致的,表 明了控制的顺序。控制流线 通常标有名字。
43/149
相关文档
最新文档