版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 第第3章章 白盒测试白盒测试 2 目目录录 l白盒测试基本概念 l 控制流分析 l 数据流分析 l其他白盒分析方法 3 白盒测试概念白盒测试概念 白盒测试白盒测试(White Box Testing , Glass Box Testing) 又称为结构测试、逻辑驱动测试或基于程序的测试。 一般用来分析程序的内部结构。 白盒测试通过检查软件内部的逻辑结构,对软 件中的逻辑路径进行覆盖测试;在程序不同地 方设立检查点,检查程序的状态,以确定实际 运行状态与预期状态是否一致。 4 l测试人员把被测程序当作一个透明盒子。测试人员把被测程序当作一个透明盒子。 5 白盒测试的特点:白盒测试的特点: l
2、依据软件设计说明书进行测试; l对程序内部细节的严密检验; l针对特定条件设计测试用例; l对软件的逻辑路径进行覆盖测试。 6 白盒测试的实施白盒测试的实施过程:过程: 1.测试计划阶段:测试计划阶段: 2.测试设计阶段:测试设计阶段: 依据程序设计说明书,按照一定规范化的依据程序设计说明书,按照一定规范化的 方法进行方法进行软件结构划分软件结构划分和和设计测试用例设计测试用例。 3.测试执行阶段:测试执行阶段: 4.测试总结阶段:测试总结阶段: 7 白盒测试方法白盒测试方法 l静态测试方法:代码检查法、静态结构分 析法、静态质量度量法 l动态测试方法:逻辑覆盖法、基本路径测 试法、Z路径覆盖
3、 l域测试、程序变异。 8 逻辑覆盖法逻辑覆盖法 l基于覆盖的测试技术:基于覆盖的测试技术: 白盒测试要求对被测程序的结构特性(程程 序结构序结构)做到一定程度的覆盖,并以软件 中的某类成分是否都已经得到测试为准则 来判断软件测试的充分性。 9 程序流程分析程序流程分析 l程序结构分析是白盒测试的主要依据。程序结构分析是白盒测试的主要依据。 l控制流分析控制流分析 l数据流分析数据流分析 10 控制流分析控制流分析 程序流程图: 程序流程图是一种 程序控制结构的图形 表示方式。在程序流 程图上的处理框内常 常标明了处理要求或 条件。 11 控制流图: 为了更加突出控 制流的结构,需 要对程序流
4、程图 做些简化,这种 简化了的流程图 称为控制流图。 12 控制流图控制流图 控制流图中的符号:控制流图中的符号: 节点:节点:以标有编号的圆圈 表示,代表程序流程图中矩 形框所表示的处理、菱形表 示的分支及多选择结构点。 控制流线:控制流线:以带箭头的直 线或弧表示,与程序流程图 中的数据流线是一致的,表 明了控制的顺序。控制流线 通常标有名字,如图中所标 的a、b、c等。 13 控制流图矩阵: 为便于表示和处理控制流图,可以把控制流图 表示成矩阵的形式,称为控制流图矩阵。 控制流矩阵:nxn, n为控制流图中节点数量。 14 控制流图矩阵控制流图矩阵 15 例5-2 程序中的判断句是多个条
5、件语句组合的情况。画出程序 的控制流图。 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 T1 = a + b; 23 system.out.println(“退出”) ; 24 16 如何画控制流图如何画控制流图 n 在选择或多分支结构中,分支的汇聚处应有 一个汇聚结点。 17 选择的行号的代码都是出现了选择分支,循 环操作,判断等, 顺序执行的语句可以合并 。 这也是画控制流图的一般规则。 18 19 问题?问题? n 如果判断中的
6、条件表达式是由一个或多个逻辑 运算符 (OR, AND, NAND, NOR) 连接的复合条件 表达式,则需要改为一系列只有单条件的嵌套的 判断。 例如: 1 if a or b 2 x 3 else 4 y 对应的逻辑为: 20 数据流分析数据流分析 什么是数据流分析?什么是数据流分析? 数据流分析最初是随着编译系统要生成有效的目 标码而出现的,这类方法主要用于代码优化。 数据流分析方法在确认系统中也得到成功的运 用,用以查找如引用未定义变量等程序错误,以 及用来查找对未曾使用的变量再次赋值等数据流 异常的情况。 在程序测试中,找出引用未定义变 量等类型错误是很重要的。因为这 常常是常见程序
7、错误的表现形式, 如错拼名字、名字混淆或是丢失了 语句。 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,而在此之前并未对
8、其定义。 语句5、6使用变量V,这在第一次执行循环时也未对其定义过。 程序中还包含两个异常:程序中还包含两个异常: 语句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)和
9、outdegree(n)分别是节点n的入度和出度。 e6 e1 e2 e3 e4 e5 e7 路径覆盖关系举例 尾节点头节点 26 路径:如果P=e1e2eq,且满足T(ei+1)=H (ei),则P为路径,q为路径长度。 注意:路径中前一个边的下标未必小于后一个 e6 e1 e2 e3 e4 e5 e7 27 完整路径:P是一条路径,且满足e1=e0, eq=ek,则P称为完整路径。 其中e0是程序的源节点,ek是程序的汇 节点 28 简单路径:路径上所有的节点都是不同的, 称为简单路径。 e6 e1 e2 e3 e4 e5 e7 29 基本路径:任意有向边都在路径中最多出现 一次的路径。
10、e6 e1 e2 e3 e4 e5 e7 30 子路径:路径A=eueu+1et是 B=e1e2eq的子路径,如果满足1=u =t =q。 e6 e1 e2 e3 e4 e5 e7 31 回路:路径P=eueu+1eq满足T(eu) =H(eq),称为回路。除第一个和最 后一个节点外,其它节点都不同的回 路称为简单回路。 e6 e1 e2 e3 e4 e5 e7 32 连接:若A=eueu+1et, B=evev+1eq为两条路径,如果H (et)=T(ev)且 eueu+1etevev+1eq为路径,则成 A连接B,记为A*B。 e6 e1 e2 e3 e4 e5 e7 33 覆盖:如果路径
11、B中包含的有向边均在 路径A中出现,则称路径A覆盖路径B。 A=e1e2e3e4e5e6e7, B=e2e3e4 注意:无回路时,覆盖就是子路径,有回路时, 情况未必如此。如:若B=e5e3e4,A覆盖B,但B 不是A的子路径。 e6 e1 e2 e3 e4 e5 e7 34 l语句覆盖准则 l分支覆盖准则 l谓词测试 l原子谓词覆盖准则 l分支谓词覆盖准则 l复合谓词覆盖准则 l路径覆盖准则 二、控制流覆盖准则二、控制流覆盖准则 35 白盒测试的覆盖标准: 白盒测试中一个重要的问题是,测试 进行到什么程度就达到了要求,可以 结束测试了。也就是说需要给出白盒 测试的覆盖标准。一种可能的白盒测
12、试的覆盖标准是: 语句覆盖率要求达到100%。 分支覆盖率要求达到85%。 36 1.语句覆盖准则语句覆盖准则 在测试中,要求程序中的每条语句都得 到运行。 在控制流图中,要求所有的语句都被运 行的充分必要条件是覆盖图中的所有 节点。 充分准则如P52定义3.12所示。例3-2 37 语句覆盖举例:语句覆盖举例: 程序例子: IF(A1)AND(BO)THEN XXA IF(A2)OR(X1)THEN xx+ 38 语句覆盖举例:语句覆盖举例: 如果选用的测试用例是: A2 B0 CASEl X3 则程序按路径ace执行。 这样该程序段的4个语句均得到 执行,从而作到了语句覆盖。 39 语句覆
13、盖举例:语句覆盖举例: 如果选用的测试用例是: A2 B1 CASE2 X3 则程序按路径abe执行。 此时该程序段只执行了其中的3个 语句,x=x/A未执行,所以未达到 语句覆盖。 40 语句覆盖准则的优缺点:语句覆盖准则的优缺点: 【优点优点】 :可以很直观地从源代码得到测试用例,无须细分 每条判定表达式。 【缺点缺点】 :由于这种测试方法仅仅针对程序逻辑中显式存在 的语句,但对于隐藏的条件是无法测试的。如在多分支的 逻辑运算中无法全面的考虑。语句覆盖是最弱的逻辑覆盖。 41 要求在测试中,每个分支都至少获得一次 “真”和一次“假”。在控制流图中,分 支表现为图中的一条有向边。 充分准则如
14、P53 定义3.13所示。例3-3 2.分支覆盖准则(判定覆盖)分支覆盖准则(判定覆盖) 42 分支覆盖举例:分支覆盖举例: 如果我们仍以上述程序段为例, 若选用的两组测试用例是: CASEl: CASE3 A2 A1 B0 B0 X3 X1 则可分别执行路径ace和abd。 从而使两个判断的4个分支c、 e和b、d分别得到覆盖。 43 分支覆盖举例:分支覆盖举例: 若选用另外两组测试用例: CASE4: CASE5 A3 A2 B0 B1 X3 X1 则可分别执行路径acd和abe。 同样使两个判断的4个分支c、 e和b、d分别得到覆盖。 44 w 上述两组测试用例不仅满足了分支(判定) 覆
15、盖,同时还做到了语句覆盖。 w 但是,在此程序段中的第2个判断条件x1如 果错写成x1,使用上述测试用例CASE5,照 样能按原路径执行,而不影响结果。 w 所以,分支(判定)覆盖只能作到分支(判 定)覆盖仍无法确定判断内部条件的错误。 45 分支覆盖优缺点:分支覆盖优缺点: l【优点优点】:分支(判定)覆盖具有比语句覆盖更 强的测试能力。同样分支(判定)覆盖也具有和 语句覆盖一样的简单性,无须细分每个判定就可 以得到测试用例。 l【缺点缺点】:往往大部分的分支(判定)语句是由 多个逻辑条件组合而成,若仅仅判断其整个最终 结果,而忽略每个条件的取值情况,必然会遗漏 部分测试路径。判定覆盖仍是弱
16、的逻辑覆盖。 46 3.谓词测试谓词测试 一个分支的条件是由谓词组成的。单个谓词称为原 子谓词。 (1)原子谓词覆盖准则(条件覆盖) 要求每个复合谓词所包含的每一个原子谓词都至 少获得一次“真”和一次“假”。即要使每个判 断中每个条件的可能取值至少满足一次。 定义如P53 定义3.14所示 例3-4 47 原子谓词覆盖举例:原子谓词覆盖举例: 如果选用的测试用例是: A2 B0 CASEl X3 则程序按路径ace执行。 这样该程序段的4个语句均得到 执行,从而作到了语句覆盖。 48 原子谓词覆盖举例:原子谓词覆盖举例: 49 原子谓词覆盖举例:原子谓词覆盖举例: 测试用例A B X所走路径覆
17、盖条件 CASE 62 0 3aceT1,T2,T3,T4 CASE 71 0 1abdT1,T2,T3,T4 CASE 82 1 1abeT1,T2,T3,T4 从上表可以看出,3个测试用例把4个条件的 8种情况都作了覆盖,即做到了原子谓词覆 盖。 50 原子谓词覆盖举例:原子谓词覆盖举例: 测试用例A B X所走路径覆盖分支覆盖条件 CASE 81 0 3abebeT1,T2,T3,T4 CASE 92 1 1abebeT1,T2,T3,T4 从上表可以看出,这两个测试用例只覆盖了4个分支 中的两个b和e,而没有覆盖c和d,说明覆盖了原子谓 词(条件)的测试用例不一定覆盖了分支。 原子谓词
18、覆盖未必会覆盖分支原子谓词覆盖未必会覆盖分支 51 原子谓词覆盖优缺点:原子谓词覆盖优缺点: 【优点优点】:增加了对条件判定情况的测试,增加了 测试路径。 【缺点缺点】:原子谓词(条件)覆盖不一定包含分支 (判定)覆盖。原子谓词(条件)覆盖只能保证 每个条件至少有一次为真,而不考虑所有的判定 结果。 52 (2)分支)分支-谓词覆盖准则(判定谓词覆盖准则(判定-条件覆盖)条件覆盖) 要求不仅每个复合谓词所包含的每一个原子 谓词都至少获得一次“真”和一次“假”, 而且每个复合谓词本身也至少获得一次 “真”和一次“假”。即使得判断中每个 条件的所有可能至少出现一次,并且每个 判断本身的判定结果也至
19、少出现一次。 P54定义3.15 例3-5 53 分支分支-谓词覆盖举例:谓词覆盖举例: 对于上例,两个判断中各包含两个条件,4个 条件在两个判断中可能有8种组合: 54 分支分支-谓词覆盖举例:谓词覆盖举例: 测试用例A B X所走路径覆盖条件 CASE 12 0 3aceT1,T2,T3,T4 CASE 101 1 1abd T1,T2,T3,T4 这2个测试用例虽然满足了分支-谓词(判定-条件)覆 盖要求,但仅覆盖了程序段中4条路径(ace,abd, abe,acd)中的2条(ace,abd),漏掉了路径abe,acd。 55 分支分支-谓词覆盖优缺点:谓词覆盖优缺点: 【优点优点】 :
20、能同时满足判定、条件两种覆盖标准。 【缺点缺点】 :分支-谓词(判定/条件)覆盖准则的缺点是未考 虑条件的组合情况。从表面来看,它测试了所有条件的取 值。但实际并不是这样。因为一些条件往往掩盖了另一些 条件。对于条件表达式(A1)&(B=0)来说,只要(A1) 的测试为真,才需测试(B=0)的值来确定此表达式的值, 但是若(A1)的测试值为假时,不需再测(B=0)的值就可 确定此表达式的值为假,因而B=0没有被检查。同理,对 于(A=2)|(X1)这个表达式来说,只要(A=2)测试结果为 真,不必测试(X1)的结果就可确定表达式的值为真。所 以对于判定/条件覆盖来说,逻辑表达式中的错误不一定
21、能够查得出来。 56 (3)复合谓词覆盖准则(条件组合覆盖)复合谓词覆盖准则(条件组合覆盖) 要求每个谓词(判定)中条件的各种可能组合都至少 出现一次。 P55 定义3.16 例3-6 57 复合谓词覆盖举例:复合谓词覆盖举例: 两个判断中各包含两个条件,4个条件 在两个判断中可能有8种组合: (1) A1,B=0 属第一个判断的取真支; (2) A1,B0 属第一个判断的取假分 支; (3) A1,B=0 属第一个判断的取假支; A1,B0 属第一个判断的取假分支; (5) A2,X1 属第二个判断的取真分 支; (6) A2,X1 属第二个判断的取真分 支; (7) A2,X1 属第二个判
22、断的取真分支; (8) A2,X1 属第二个判断的取假分 支。 58 复合谓词覆盖举例:复合谓词覆盖举例: l下面的四组测试数据可以使上面列出的八种组合每种至 少出现一次: l(1) A=2,B=0,X=4 (针对1,5两种组合,执行路径 ace); lA=2,B=1,X=1 (针对2,6两种组合,执行路径abe); l A=1,B=0,X=2 (针对3,7两种组合,执行路径abe); l(4) A=1,B=1,X=1 (针对4,8两种组合,执行路径 abd)。 59 复合谓词覆盖优缺点:复合谓词覆盖优缺点: l【优点优点】 :复合谓词(条件组合)覆盖准则满足分支 (判定)覆盖、原子谓词(条件
23、)覆盖和分支-谓词(判 定/条件)覆盖准则,是前述几种覆盖标准中最强的。 l【缺点缺点】 :线性地增加了测试用例的数量。 60 逻辑覆盖测试的逻辑覆盖测试的5种标准种标准 发现错误 的能力 标 准含 义 (弱)语句覆盖每条语句至少执行一次 分支(判定)覆盖每一判定的每个分支至少执行一次 原子谓词(条件)覆 盖 每一判定中的每个条件,分别按“真”、 “假”至少各执行一次 分支/谓词覆盖 同时满足分支(判定)覆盖和原子谓词(条件) 覆盖的要求 (强) 复合谓词(条件组合) 覆盖 求出判定中所有条件的各种可能组合 值,每一可能的条件组合至少执行一次 61 覆盖标准程序结构举例 测试用例 应满足的条件 语句覆盖AB=.T. 分支(判定)覆 盖 AB=.T. AB=.F. TF TF 62 覆盖标准程序结构举例 测试用例应 满足的条件 谓词(条件) 覆盖 A=.T. A=.F. B=.T. B=.F. 分支/谓词 (判定/条件) 覆盖 AB=.T. , AB=.F. A=.T. A=.F. B=.T. B=.F. 复合谓词 (条件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物(内蒙古)-【八省联考】河南、山西、陕西、内蒙古、四川、云南、宁夏、青海八省2025年高考综合改革适应性演练联考试题和答案
- 《法国园林》课件
- 小学生一年级30以内加减法100题
- 高考新课标语文模拟试卷系列之63
- 《梅花岭记》课件
- 行政后勤治安防范措施
- 装饰行业采购经验分享
- 饮品店服务员工作心得
- 《温州地区特产》课件
- 装修行业监督装修工程卫生施工
- 2024年河南农业职业学院单招职业适应性测试题库及参考答案
- 期末考试-公共财政概论-章节习题
- AED急救知识课件
- 高中物理课件:Tracker软件在高中物理实验教学中的应用-
- 肩痹(肩袖损伤)中医临床路径及入院标准2020版
- 跟踪审计服务 投标方案(技术方案)
- 广东省汕头市金平区2023-2024学年七年级上学期期末语文试题
- (2024年)电工安全培训(新编)课件
- 2024年度新型纺织纤维
- 培训机构五年发展规划方案
- 《销售主管竞聘》课件
评论
0/150
提交评论