第三章-白盒测试(一)

上传人:小** 文档编号:44855627 上传时间:2018-06-14 格式:PPT 页数:70 大小:1.49MB
返回 下载 相关 举报
第三章-白盒测试(一)_第1页
第1页 / 共70页
第三章-白盒测试(一)_第2页
第2页 / 共70页
第三章-白盒测试(一)_第3页
第3页 / 共70页
第三章-白盒测试(一)_第4页
第4页 / 共70页
第三章-白盒测试(一)_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《第三章-白盒测试(一)》由会员分享,可在线阅读,更多相关《第三章-白盒测试(一)(70页珍藏版)》请在金锄头文库上搜索。

1、1第3章 白盒测试目录l白盒测试基本概念l 控制流分析l 数据流分析l其他白盒分析方法3白盒测试概念白盒测试(White Box Testing , Glass Box Testing)又称为结构测试、逻辑驱动测试或基于程序的测试 。一般用来分析程序的内部结构。应用程序应用程序白盒测试通过检查软件内部的逻辑结构,对软 件中的逻辑路径进行覆盖测试;在程序不同地 方设立检查点,检查程序的状态,以确定实际 运行状态与预期状态是否一致。4l测试人员把被测程序当作一个透明盒子。5白盒测试的特点:l依据软件设计说明书进行测试;l对程序内部细节的严密检验;l针对特定条件设计测试用例;l对软件的逻辑路径进行覆

2、盖测试。6白盒测试的实施过程:1.测试计划阶段: 2.测试设计阶段: 依据程序设计说明书,按照一定规范化的 方法进行软件结构划分和设计测试用例。 3.测试执行阶段: 4.测试总结阶段:7白盒测试方法l静态测试方法:代码检查法、静态结构分 析法、静态质量度量法l动态测试方法:逻辑覆盖法、基本路径测 试法、Z路径覆盖l域测试、程序变异。逻辑覆盖法l基于覆盖的测试技术:白盒测试要求对被测程序的结构特性(程 序结构)做到一定程度的覆盖,并以软件 中的某类成分是否都已经得到测试为准则 来判断软件测试的充分性。9程序流程分析l程序结构分析是白盒测试的主要依据。l控制流分析l数据流分析10控制流分析程序流程

3、图:程序流程图是一种 程序控制结构的图形 表示方式。在程序流 程图上的处理框内常 常标明了处理要求或 条件。11控制流图: 为了更加突出控 制流的结构,需 要对程序流程图 做些简化,这种 简化了的流程图 称为控制流图。 12控制流图控制流图中的符号:节点:以标有编号的圆圈 表示,代表程序流程图中矩 形框所表示的处理、菱形表 示的分支及多选择结构点。控制流线:以带箭头的直 线或弧表示,与程序流程图 中的数据流线是一致的,表 明了控制的顺序。控制流线 通常标有名字,如图中所标 的a、b、c等。13控制流图矩阵: 为便于表示和处理控制流图,可以把控制流图 表示成矩阵的形式,称为控制流图矩阵。控制流矩

4、阵:nxn,n为控制流图中节点数量。14控制流图矩阵15例5-2 程序中的判断句是多个条件语句组合的情况。画出程序 的控制流图。 10 Class test1 11 12 Public me() 13 Int t1; 14 IF ( a10 or b=20) 15 THEN 16 17 T1 = a b ; 18 19 ELSE 20 21T1 = a + b;23 system.out.println(“退出”) ; 24 如何画控制流图1. n 在选择或多分支结构中,分支的汇聚处应有 一个汇聚结点。172. 选择的行号的代码都是出现了选择分支,循 环操作,判断等, 顺序执行的语句可以合并

5、。这也是画控制流图的一般规则。 18问题?n 如果判断中的条件表达式是由一个或多个逻辑 运算符 (OR, AND, NAND, NOR) 连接的复合条件 表达式,则需要改为一系列只有单条件的嵌套的 判断。 例如:1 if a or b2 x3 else4 y对应的逻辑为:20数据流分析什么是数据流分析? 数据流分析最初是随着编译系统要生成有效的目 标码而出现的,这类方法主要用于代码优化。数据流分析方法在确认系统中也得到成功的运 用,用以查找如引用未定义变量等程序错误,以 及用来查找对未曾使用的变量再次赋值等数据流 异常的情况。在程序测试中,找出引用未定义变 量等类型错误是很重要的。因为这 常常

6、是常见程序错误的表现形式, 如错拼名字、名字混淆或是丢失了 语句。 21两个概念:l变量定义:如果程序中某一语句执行时能 够改变某个变量V的值,则称V是被该语句 定义的。l变量引用:如果程序中某一语句的执行引 用了内存中变量V的值,则说该语句引用变 量V。 22数据流分析例如: 1.语句X:Y十Z 定义了X,引用了Y和Z; 2.语句if YZ then goto exit 引用了Y和Z。3. 输入语句READ X 定义了X。 4. 输出语句WRITE X引用了X。 23数据流分析错误异常程序中有两个错误:语句2使用了变量W,而在此之前并未对其定义。语句5、6使用变量V,这在第一次执行循环时也未

7、对其定义过 。程序中还包含两个异常:语句6对Z的定义从未使用过。语句8对W的定义也从未使用过。 24控制流测试基本概念一、基本概念 有向图 路径 完整路径 简单路径 基本路径 子路径 回路 无回路路径 连接 覆盖25有向图:有向图G=(V,E),V是顶点的集合,E是 有向边的集合。e=(T(e),H(e)E是一对有 序的邻接节点,T(e)是尾,H(e)是头。如果H( e)=T(e),则e和e是临界边。H(e)是T(e)的 后继节点,T(e)是H(e)的前驱节点,indegree( n)和outdegree(n)分别是节点n的入度和出度。e6e1e2e3e4e5e7路径覆盖关系举例 尾节点头节点

8、26路径:如果P=e1e2eq,且满足T(ei+1)=H(ei ),则P为路径,q为路径长度。 注意:路径中前一个边的下标未必小于后一个e6e1e2e3e4e5e727完整路径:P是一条路径,且满足e1=e0 ,eq=ek,则P称为完整路径。 其中e0是程序的源节点,ek是程序的汇 节点28简单路径:路径上所有的节点都是不同的, 称为简单路径。e6e1e2e3e4e5e729基本路径:任意有向边都在路径中最多出现 一次的路径。e6e1e2e3e4e5e730子路径:路径A=eueu+1et是 B=e1e2eq的子路径,如果满足1=u =t =q。e6e1e2e3e4e5e731回路:路径P=e

9、ueu+1eq满足T(eu )=H(eq),称为回路。除第一个和 最后一个节点外,其它节点都不同的 回路称为简单回路。e6e1e2e3e4e5e732连接:若A=eueu+1et, B=evev+1eq为两条路径,如果H( et)=T(ev)且 eueu+1etevev+1eq为路径,则成 A连接B,记为A*B。e6e1e2e3e4e5e733覆盖:如果路径B中包含的有向边均在 路径A中出现,则称路径A覆盖路径B 。A=e1e2e3e4e5e6e7, B=e2e3e4注意:无回路时,覆盖就是子路径,有回路时, 情况未必如此。如:若B=e5e3e4,A覆盖B,但B 不是A的子路径。e6e1e2e

10、3e4e5e734l语句覆盖准则l分支覆盖准则l谓词测试l原子谓词覆盖准则l分支谓词覆盖准则l复合谓词覆盖准则l路径覆盖准则二、控制流覆盖准则35白盒测试的覆盖标准:白盒测试中一个重要的问题是,测试 进行到什么程度就达到了要求,可以 结束测试了。也就是说需要给出白盒 测试的覆盖标准。一种可能的白盒测 试的覆盖标准是: 语句覆盖率要求达到100%。 分支覆盖率要求达到85%。361.语句覆盖准则在测试中,要求程序中的每条语句都得 到运行。在控制流图中,要求所有的语句都被运 行的充分必要条件是覆盖图中的所有 节点。 充分准则如P52定义3.12所示。例3-237语句覆盖举例:程序例子: IF(A1

11、)AND(BO)THENXXA IF(A2)OR(X1)THENxx+38语句覆盖举例:如果选用的测试用例是:A2B0 CASElX3 则程序按路径ace执行。这样该程序段的4个语句均得到 执行,从而作到了语句覆盖。39语句覆盖举例:如果选用的测试用例是:A2B1 CASE2X3 则程序按路径abe执行。此时该程序段只执行了其中的3个 语句,x=x/A未执行,所以未达到 语句覆盖。40语句覆盖准则的优缺点:【优点】 :可以很直观地从源代码得到测试用例,无须细分 每条判定表达式。 【缺点】 :由于这种测试方法仅仅针对程序逻辑中显式存在 的语句,但对于隐藏的条件是无法测试的。如在多分支的 逻辑运算

12、中无法全面的考虑。语句覆盖是最弱的逻辑覆盖 。41要求在测试中,每个分支都至少获得一次“ 真”和一次“假”。在控制流图中,分支 表现为图中的一条有向边。 充分准则如P53 定义3.13所示。例3-32.分支覆盖准则(判定覆盖)42分支覆盖举例:如果我们仍以上述程序段为例, 若选用的两组测试用例是:CASEl: CASE3A2 A1 B0 B0X3 X1 则可分别执行路径ace和abd。从而使两个判断的4个分支c、 e和b、d分别得到覆盖。43分支覆盖举例:若选用另外两组测试用例:CASE4: CASE5A3 A2 B0 B1X3 X1 则可分别执行路径acd和abe。同样使两个判断的4个分支c

13、 、e和b、d分别得到覆盖。44w 上述两组测试用例不仅满足了分支(判定) 覆盖,同时还做到了语句覆盖。 w 但是,在此程序段中的第2个判断条件x1如 果错写成x1,使用上述测试用例CASE5,照 样能按原路径执行,而不影响结果。 w 所以,分支(判定)覆盖只能作到分支(判 定)覆盖仍无法确定判断内部条件的错误。45分支覆盖优缺点:l【优点】:分支(判定)覆盖具有比语句覆盖更 强的测试能力。同样分支(判定)覆盖也具有和 语句覆盖一样的简单性,无须细分每个判定就可 以得到测试用例。l【缺点】:往往大部分的分支(判定)语句是由 多个逻辑条件组合而成,若仅仅判断其整个最终 结果,而忽略每个条件的取值

14、情况,必然会遗漏 部分测试路径。判定覆盖仍是弱的逻辑覆盖。463.谓词测试一个分支的条件是由谓词组成的。单个谓词称为原 子谓词。 (1)原子谓词覆盖准则(条件覆盖)要求每个复合谓词所包含的每一个原子谓词都至 少获得一次“真”和一次“假”。即要使每个判 断中每个条件的可能取值至少满足一次。 定义如P53 定义3.14所示 例3-447原子谓词覆盖举例:如果选用的测试用例是:A2B0 CASElX3 则程序按路径ace执行。这样该程序段的4个语句均得到 执行,从而作到了语句覆盖。48原子谓词覆盖举例:49原子谓词覆盖举例:从上表可以看出,3个测试用例把4个条件的 8种情况都作了覆盖,即做到了原子谓

15、词覆 盖。50原子谓词覆盖举例:从上表可以看出,这两个测试用例只覆盖了4个分支 中的两个b和e,而没有覆盖c和d,说明覆盖了原子谓 词(条件)的测试用例不一定覆盖了分支。原子谓词覆盖未必会覆盖分支51原子谓词覆盖优缺点:【优点】:增加了对条件判定情况的测试,增加了 测试路径。 【缺点】:原子谓词(条件)覆盖不一定包含分支 (判定)覆盖。原子谓词(条件)覆盖只能保证 每个条件至少有一次为真,而不考虑所有的判定 结果。52(2)分支-谓词覆盖准则(判定-条件覆盖)要求不仅每个复合谓词所包含的每一个原子 谓词都至少获得一次“真”和一次“假” ,而且每个复合谓词本身也至少获得一次 “真”和一次“假”。

16、即使得判断中每个 条件的所有可能至少出现一次,并且每个 判断本身的判定结果也至少出现一次。 P54定义3.15 例3-553分支-谓词覆盖举例:对于上例,两个判断中各包含两个条件,4个 条件在两个判断中可能有8种组合:54分支-谓词覆盖举例:这2个测试用例虽然满足了分支-谓词(判定-条件)覆 盖要求,但仅覆盖了程序段中4条路径(ace,abd, abe,acd)中的2条(ace,abd),漏掉了路径abe,acd 。 55分支-谓词覆盖优缺点:【优点】 :能同时满足判定、条件两种覆盖标准。 【缺点】 :分支-谓词(判定/条件)覆盖准则的缺点是未考 虑条件的组合情况。从表面来看,它测试了所有条件的取 值。但实际并不是这样。因为一些条件往往掩盖了另一些 条件。对于条

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号