软件测试技术(第三版) 课件 第4章 白盒测试方法.pptx
;白盒测试(white-box,oropen-box,clear-boxtesting):
Usethestructureoftheprogramtotest.
——Structuraltesting
此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。;;图的定义
一组结点N,N非空
一组初始结点N0,N0非空
一组终止结点Nf,Nf非空
一组边E,每条边从一个结点到了一个结点,(ni,nj),i是前驱,j为后继;;控制流图是退化的程序流程图,图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。
控制流图中的基本元素:
节点
边
在控制流图中用圆“○”表示节点,一个圆代表一条或多条语句。
控制流图中的箭头线称为边,代表控制流。;基本控制流图;;复合逻辑下的控制流图
改复合条件的判定为一系列单个条件的嵌套的判定;定义:有m个节点的控制流图矩阵,是一个m×m矩阵:A=(a(i,j)),其中a(i,j)是1,当且仅当从节点i到节点j有一条弧,否则该元素为0。;逻辑覆盖方法
基路径测试
循环测试
数据流测试(定义-使用覆盖)
域测试
。。。
;;逻辑覆盖测试(Logicalcoverage)
逻辑覆盖主要考察使用测试数据运行被测程序时对程序逻辑的覆盖程度。通常希望选择最少的测试用例来满足所需的覆盖标准。
主要的覆盖标准
语句覆盖
判定覆盖
条件覆盖
判定-条件覆盖
条件组合覆盖
路径覆盖;例子程序;⑴语句覆盖(Statementcoverage):选择足够的测试用例,使得运行这些测试用例时,被测程序的每个可执行语句都至少执行一次。
;;;⑵判定覆盖(Branchcoverage):(也称分支覆盖)是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定的所有可能结果都至少执行一次(即判定的每个分支至少经过一次)。
;;;⑶条件覆盖(Conditioncoverage):选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定中的每个条件的所有可能结果都至少出现一次。
;;⑷判定/条件覆盖:选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定的所有可能结果都至少执行一次,并且,每个判定中的每个条件的所有可能结果都至少出现一次。
;(A1)AND(B==0);(5)条件组合覆盖:指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定中条件结果的所有可能组合都至少出现一次。
;;⑹路径覆盖(Pathcoverage):选择足够的测试用例,使得运行这些测试用例时,被测程序的每条可能执行到的路径都至少经过一次(如果程序中包含环路,则要求每条环路至少经过一次)。
;;;基本路径测试
基本路径测试是TomMcCabe提出的一种白盒测试技术,这种方法首先根据程序或设计图画出控制流图,并计算其区域数,然后确定一组独立的程序执行路径(称为基本路径),最后为每一条基本路径设计一个测试用例。;程序的环路复杂性即McCabe复杂性度量,简单的定义为控制流图的区域数。
程序环路复杂性又叫圈复杂度。
圈复杂度:是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目。;圈复杂度
程序图的圈复杂度计算方法(三种):
V(G)=e–n+2p;
e:边数,n:节点数,p:连接区域数
当p=1时,V(G)=e–n+2;
V(G)=P+1;P是图G中判定节点的数量
程序图中区域的数量对应于环路的复杂性
;;独立路径:包括一组以前没有处理的语句或条件的一条路径。
选择独立路径时必须包含一条在定义之前不曾用到的边。(每一条新的路径至少包含一条新的边)
控制流图中所有独立路径的集合就构成了基本路径集。
;;通过分析程序控制流图的环路的复杂性,导出基本路径集合,从而设计测试用例,保证这些路径至少通过一次。
基本路径测试步骤:
1.导出程序的控制流图;
2.计算控制流图的环路复杂度V(G);
3.确定只包含独立路径的基本路径集;
4.设计测试用例;
;示例;第一步:画出控制流图;;第四步:导出测试用例;;;循环分为4种不同类型:简单循环、串接循环、嵌套循环和非结构循环。
;(1)简单循环
按照下列规则设计测试用例:
①零次循环:从循环入口到出口
②一次循环:检查循环初始值
③二次循环:检查多次循环
④m次循环:检查多次循环
⑤最大次数循环
⑥比最大次数多