第4讲_白盒测试及其用例的设计(xidian_)课件.ppt

上传人:飞****2 文档编号:69960761 上传时间:2023-01-13 格式:PPT 页数:99 大小:714KB
返回 下载 相关 举报
第4讲_白盒测试及其用例的设计(xidian_)课件.ppt_第1页
第1页 / 共99页
第4讲_白盒测试及其用例的设计(xidian_)课件.ppt_第2页
第2页 / 共99页
点击查看更多>>
资源描述

《第4讲_白盒测试及其用例的设计(xidian_)课件.ppt》由会员分享,可在线阅读,更多相关《第4讲_白盒测试及其用例的设计(xidian_)课件.ppt(99页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第4讲讲 白盒测试及其用例的设计白盒测试及其用例的设计4.1 白盒测试的基本概念和方法4.2 测试人员的图论4.3 覆盖测试4.4 测试覆盖准则4.5 最少测试用例数计算1 4.1 白盒测试的基本概念白盒测试的基本概念n白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。2白盒测试的基本概念和方法白盒测试的基本概念和方法(续)(续)n为什么要进行白盒测试?如果所有软件错误的根源都可以追溯到某个唯一原因,那么问题就简单了。然而,事实上一个bug 常常是由多个因素共同导致的,如下图所示。Return 假设此时开发工

2、作已结束,程序假设此时开发工作已结束,程序送交到测试组,没有人知道代码中有送交到测试组,没有人知道代码中有一个潜在的被一个潜在的被 0 0 除的错误。若测试组除的错误。若测试组采用的测试用例的执行路径没有同时采用的测试用例的执行路径没有同时经过经过x=0 x=0和和y=5/xy=5/x进行测试,显然测试进行测试,显然测试工作似乎非常完善,测试用例覆盖了工作似乎非常完善,测试用例覆盖了所有执行语句,也没有被所有执行语句,也没有被 0 0 除的错误除的错误发生。发生。X=0!3白盒测试的基本概念和方法白盒测试的基本概念和方法(续)(续)n采用白盒测试方法必须遵循以下几条原则,以达到测试的目的:保证

3、一个模块中的所有独立路径至少被测试一次。所有逻辑值均需测试真(true)和假(false)两种情况。检查程序的内部数据结构,保证其结构的有效性。在上下边界及可操作范围内运行所有循环。n白盒测试主要的测试用例设计方法有:逻辑覆盖法(逻辑驱动测试)基本路径测试方法44.2 测测试试人人员员的的图图论论一、图(又叫线性图)是一种由两个集合定义的抽象数学结构,即一个节点集合和一个构成节点之间连接的边的集合。(1)图的定义:G=(V,E)V=n1,n2,nm,E=e1,e2,ep其中每条边ek=ni,nj是一个无序对偶,ni,nj V 对于测试:我们通常把节点看做是程序语句,边表示控制流。5图2-1 有

4、7个节点和7条边的图V=n1,n2,n3,n4,n5,n6,n7E=e1,e2,e3,e4,e5,e6,e7 =(n1,n2),(n2,n3),(n1,n5),(n4,n5),(n2,n4),(n3,n4),(n4,n6)n n通常把节点看做是程序语句通常把节点看做是程序语句n n边表示控制流或定义边表示控制流或定义/使用关系使用关系n1n5n2n3n4n6n7e1e2e3e4e5e6e7nodesedge n3,n44.2 测测试试人人员员的的图图论论(1 1)图(又叫线性图)图(又叫线性图)64.2 测测试试人人员员的的图图论论(2)节点的度定义:节点的度是以该节点作为端点的边的条数。我们

5、把节点n的度记做deg(n)。如果节点表示对象,边表示消息,则节点(对象)的度表示适合该对象的集成测试范围。74.2 测测试试人人员员的的图图论论(2)节点的度n1n5n2n3n4n6n7e1e2e3e4e5e6e7deg(n1)=2deg(n2)=3deg(n3)=2deg(n4)=4deg(n5)=2deg(n6)=1deg(n7)=084.2 测测试试人人员员的的图图论论(3)路径路径的定义:路径是一系列的边,对于序列中的任何相邻边都拥有相同的端点(节点)。路径可以描述为一系列的边,也可以描述为一系列的节点。一般更常见的是节点序列。94.2 测测试试人人员员的的图图论论(3)路径)路径n

6、1n5n2n3n4n6n7e1e2e3e4e5e6e7104.2 测测试试人人员员的的图图论论(4)连接性定义:节点ni和nj是连接的,当且仅当它们都在同一条路径上。“连接性”是一种图的节点集合上的等价关系。它有三个特性:n自反性:每个节点都在到其本身长度为“0”的路径上n对称性:如果(ni,nj)在一条路径上,则(nj,ni)也在同一条 路径上 n传递性:if(ni,nj)path and(nj,nw)path,then(ni,nw)path114.2 测测试试人人员员的的图图论论(5)组件定义:图的组件是相连节点的最大集合。n1n5n2n3n4n6n7e1e2e3e4e5e6e7n1,n2

7、,n3,n4,n5,n6,n7124.2 测测试试人人员员的的图图论论(6)压缩图压缩图是为测试人员建立的一个简化机制。定义:给定图G=(V,E),其压缩图是用压缩节点替代每个组件后构成的图。性质:给定图的压缩图是唯一的。对于测试的意义:组件是相对独立的,因此可以单独测试。134.2 测测试试人人员员的的图图论论(6)压缩图 n1n5n2n3n4n6n7e1e2e3e4e5e6e7S1=n1,n2,n3,n4,n5,n6S2=n7144.2 测测试试人人员员的的图图论论(7)圈数(圈复杂度)定义:图G的圈数V(G)=e-n+2p,其中:e是G中的边数n是G中的节点数p是G中的组件数(区域数)V

8、(G)的值给出了组成基本集的独立路径上界,也就是覆盖所有基本路径所需的测试用例上界。15计算圈复杂度计算圈复杂度n其他圈复杂度计算办法:1.流图中区域的数量对应于环型的复杂性;2.给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;3.给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。164.2 测测试试人人员员的的图图论论圈数(圈复杂度)例:n1n5n2n3n4n6n7e1e2e3e4e5e6e7圈数:V(G)=7 7+2 X2=4174.2 测测试试人人员员的的图图论论二、有向图(控制流图)有向图对一般图稍微做

9、了改进:边有了方向的含义。(1)有向图的定义:D=(V,E)V=n1,n2,nm,E=e1,e2,ep其中每条边ek=是一个有序对偶,ni,nj V在有向边ek=中,ni是开始节点,nj是终止节点。184.2 测测试试人人员员的的图图论论二、有向图(控制流图)n1n5n2n3n4n6n7e1e2e3e4e5e6e7V=n1,n2,n3,n4,n5,n6,n7E=e1,e2,e3,e4,e5,e6,e7 =,有序对偶194.2 测测试试人人员员的的图图论论二、有向图(二、有向图(二、有向图(二、有向图(控制流图)(2)内度和外度定义:有向图中节点的内度,是将该节点作为终止节点的不同边的条数,记做

10、indeg(n)。有向图中节点的外度,是将该节点作为开始节点的不同边的条数,记做outdeg(n)。定义关联:deng(n)=indeg(n)+outdeg(n)204.2 测测试试人人员员的的图图论论二、有向图(框图)二、有向图(框图)二、有向图(框图)二、有向图(框图)(2)内度和外度n1n5n2n3n4n6n7e1e2e3e4e5e6e7indeg(n1)=0indeg(n2)=2indeg(n3)=1indeg(n4)=2indeg(n5)=1indeg(n6)=1indeg(n7)=0outdeg(n1)=1outdeg(n2)=2outdeg(n3)=1outdeg(n4)=2ou

11、tdeg(n5)=1outdeg(n6)=0outdeg(n7)=0214.2 测测试试人人员员的的图图论论(3)节点的类型节点的类型定义:内度为定义:内度为0的节点是的节点是源节点源节点 外度为外度为0的节点是的节点是汇节点汇节点 内度不为内度不为0,并且外度不为,并且外度不为0的节点是的节点是传递节点传递节点 内度为内度为0且外度为且外度为0的节点的节点是是孤立节点孤立节点。二、有向图(框图)二、有向图(框图)二、有向图(框图)二、有向图(框图)224.2 测测试试人人员员的的图图论论(3)节点的类型节点的类型二、有向图(框图)二、有向图(框图)二、有向图(框图)二、有向图(框图)n1n5

12、n2n3n4n6n7e1e2e3e4e5e6e7Source Nodes:n1Sink Nodes:n6Transfer Nodes:n2,n3,n4,n5Isolated Nodes:n7234.2 测测 试试 人人 员员 的的 图图 论论(3)路径和半路径路径和半路径定义:定义:(有向)(有向)路经路经是一系列的边,使得对于该序列中是一系列的边,使得对于该序列中的所有相邻边对偶的所有相邻边对偶ei,ej来说,第一条边的终止节点是第二来说,第一条边的终止节点是第二条边的初始节点。条边的初始节点。环路环路是在同一个节点上开始和结束的有向路经。是在同一个节点上开始和结束的有向路经。(有向)有向)

13、半路经半路经是一系列的边,使得对于该序列中至少是一系列的边,使得对于该序列中至少有一个相邻边对偶有一个相邻边对偶ei,ej来说,第一条边的初始节点也是第来说,第一条边的初始节点也是第二条边的初始节点。或第一条边的终止节点也是第二条二条边的初始节点。或第一条边的终止节点也是第二条边的终止节点。边的终止节点。二、有向图(控制流图)二、有向图(控制流图)二、有向图(控制流图)二、有向图(控制流图)244.2 测测试试人人员员的的图图论论(3)路径和半路径路径和半路径二、有向图(框图)二、有向图(框图)二、有向图(框图)二、有向图(框图)Path:n1 n2 n3Cycle:n2 n4 n5 n2Se

14、mi Path:Between n1 and n5Semi Path:Between n2 and n4总结:说在两个节点之间存在一条路径,也就是在有向图中从该路径的开始节点出发只有一条可以到达该终点的路径。说在两个节点之间存在有半路径,也就是在有向图中从该节点出发有两条以上的路径可以到达终点,或者从某一节点出发可以有两条以上的路径到达这两个节点。Semi Path:Between n5 and n6n1n5n2n3n4n6n7e1e2e3e4e5e6e7254.2 测测试试人人员员的的图图论论(4)可到达性矩阵可到达性矩阵当采用有向图对应程序建模时,我们比较关心的问题是当采用有向图对应程序建

15、模时,我们比较关心的问题是到达某个特定节点的路径问题。通过有向图的可到达性到达某个特定节点的路径问题。通过有向图的可到达性矩阵可以提供这种能力。矩阵可以提供这种能力。定义:有定义:有M个节点的有向图个节点的有向图D=(V,E)的可达性矩阵是)的可达性矩阵是一个一个mm的矩阵的矩阵R=(r(i,j),其中),其中r(i,j)是)是1,当且仅当从节点当且仅当从节点i到节点到节点j有一条路径,否则该元素为有一条路径,否则该元素为0。二、有向图(框图)二、有向图(框图)二、有向图(框图)二、有向图(框图)264.2 测测试试人人员员的的图图论论(4)可到达性矩阵可到达性矩阵二、有向图(控制流图)二、有

16、向图(控制流图)二、有向图(控制流图)二、有向图(控制流图)n1n5n2n3n4n6n7e1e2e3e4e5e6e7274.2 测测试试人人员员的的图图论论(5)n-连接性连接性定义:有向图的两个节点定义:有向图的两个节点ni和和nj是:是:0-连接:当且仅当连接:当且仅当ni和和nj之间没有路径。之间没有路径。1-连接:当且仅当连接:当且仅当ni和和nj之间有一条半路径。但没有路径之间有一条半路径。但没有路径 2-连接:当且仅当连接:当且仅当ni和和nj之间有一条路径。之间有一条路径。3-连接:当且仅当连接:当且仅当ni到到nj之间有一条半路径;之间有一条半路径;且且nj到到ni 之间有一条

17、路径。之间有一条路径。二、有向图(控制流图)二、有向图(控制流图)二、有向图(控制流图)二、有向图(控制流图)284.2 测测试试人人员员的的图图论论(5)n-连接性连接性二、有向图(控制流图)二、有向图(控制流图)二、有向图(控制流图)二、有向图(控制流图)n1n5n2n3n4n6n7e1e2e4e3e5思考:图中各节点的连接性n1-和n7:n5-和n6:n1-和n6:n5-和n6:e6294.2 测测试试人人员员的的图图论论(6)强组件和压缩图强组件和压缩图定义:有向图的强组件是定义:有向图的强组件是3-连接节点的最大集合。连接节点的最大集合。强组件使我们能够通过清除循环和孤立节点来简化有

18、向图,得到一个压缩强组件使我们能够通过清除循环和孤立节点来简化有向图,得到一个压缩图(不含环路的)也叫有向无环图(图(不含环路的)也叫有向无环图(DAG),从而解决一个测试问题。),从而解决一个测试问题。二、有向图(控制流图)二、有向图(控制流图)二、有向图(控制流图)二、有向图(控制流图)n1n5n2n3n4n6n7e1e2e4e3e5e6n1n2n3S1S2e1e2e3压缩图304.2 测测试试人人员员的的图图论论三、用于测试的图(1)程序图(2)有限状态机(3)Petri网314.2 测测试试人人员员的的图图论论三、用于测试的图(1)程序图(控制流图)定义:给定一个采用命令式程序设计语言

19、编写的程序,其程序图是一种有向图,其中:节点是语句或语句的一部分,边表示控制流(从节点i到节点j有一条边,当且仅当节点j对应的语句可以立即在节点i对应的语句之后执行)。32结构化程序设计构造的有向图4.2 测测试试人人员员的的图图论论33程序流程图程序流程图例:有下面的C函数,画出程序流程图。void Sort(int iRecordNum,int iType)1.2.int x=0;3.int y=0;4.while(iRecordNum-0)5.6.if(0=iType)7.x=y+2;break;8.else9.if(1=iType)10.x=y+10;11.else12.x=y+20;

20、13.14.34程序流程图程序流程图n程序流程图和控制流图的对应关系:35控制流图控制流图n在将程序流程图简化成控制流图时,应注意:在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。如下页图所示36控制流图控制流图1762,38910114,5 76 231 8 4 511 910节点边区域区域:由边和节点封闭起来的区域计算区域:不要忘记区域外的部分待测试程序用流图表示的待测试程序37控制流图控制流图如果判断中的条件表达式是由一个或多个逻辑运算符(OR,AND)连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判

21、断。例如:1 if a or b 2 x 3 else 4 y对应的逻辑为:38练习一练习一n根据左图给出的程序流程图,完成以下要求:(1)画出相应的控制流图。(2)计算圈复杂度。39练习一答案练习一答案开始X=/X/AIf(B=5)If(A2)X=X+1结束FFFFTTTT12345678圈复杂度=540开始 i=1,n1=n2=0,sum=0Score i-1 AND n20 AND scorei0average=sum/n1average=1 返回FFFTTT12和345和6789101112练习二:画出下图的程序流图,计算圈复杂度。414.2 测测试试人人员员的的图图论论三、用于测试的

22、图(2)有限状态机有限状态机是需求规格说明的一种表示方法。定义:有限状态机是一种有向图,其中状态是节点,转移是边。源状态和吸收状态是初始节点和终止节点,路径被建模为通路。大多数有限状态机表示方法都要为边(转移)增加信息,以指示转移的原因和作为转移的结果要发生的行为。434.2 测测试试人人员员的的图图论论 错 卡 .显示屏幕s1,并退回卡空闲等待第一次PIN输入尝试等待第二次PIN输入尝试等待第三次PIN输入尝试等待事务选择 合 法 卡 ,显示屏幕s2 不正确的PIN .显示屏幕s3 不正确的PIN .显示屏幕s4 正确的PIN .显示屏幕s5 不正确的PIN .显示屏幕s1显示屏幕s1 正确

23、的PIN .显示屏幕s5 正确的PIN .显示屏幕s5用于PIN尝试的有限状态机444.2 测测试试人人员员的的图图论论三、用于测试的图(3)Petri网(选)Petri网Carl Adam Petri于1963年完成的博士论文题目。现在已被接受为原型和涉及并发及分布处理应用程序的模型。定义:Petri网是一种特殊形式的双向有向图,表示为(P,T,In,Out),其中P和T是不相交的节点的集合,P被叫做“地点”,T被叫做“转移”,In和Out是边的集合,InPXT,Out TXP。下面是一个Petri网示例。454.2 测测试试人人员员的的图图论论(3 3)PetriPetri网网P=p1,p

24、2,p3,p4T=t1,t2,t3In=,Out=,464.3 基于结构的测试基于结构的测试覆盖测试覆盖测试4.3.1 测试覆盖率4.3.2 逻辑覆盖法Return474.3.1 测试覆盖率测试覆盖率n测试覆盖率:用于确定测试所执行到的覆盖项的百分比。测试覆盖率可以表示出测试的充分性,在测试分析报告中可以作为量化指标的依据,测试覆盖率越高效果越好。测试覆盖率包括功能点覆盖率和结构覆盖率:功能点覆盖率大致用于表示软件已经实现的功能与软件需要实现的功能之间的比例关系。结构覆盖率包括语句覆盖率、分支覆盖率、循环覆盖率、路径覆盖率等等。484.3.2 逻辑覆盖法逻辑覆盖法白盒测试中的逻辑覆盖方法有以下

25、6种:1.语句覆盖2.判定覆盖3.条件覆盖4.判定条件覆盖5.条件组合覆盖6.路径覆盖494.3.2 逻辑覆盖法逻辑覆盖法语句覆盖:选择足够多的测试用例,使得程序中的每个可执行语句至少执行一次。定义:假设GP是程序P的控制流图,T是程序P的一个测试数据集,LT 为与T相对应的GP 中的路径集合,NG 是GP中所有节点的集合,NODE(LT)是LT中覆盖的节点集合,则:当且仅当NODE(LT)=NG 时,称测试数据集T是语句覆盖充分的。语句覆盖测试覆盖率=NODE(LT)/NGX100%语句覆盖测试是最基本的覆盖测试技术。504.3.2 逻辑覆盖法逻辑覆盖法判定(分支)覆盖:通过执行足够的测试用

26、例,使得程序中的每个判定至少都获得一次“真”值和“假”值,也就是使程序中的每个取“真”分支和取“假”分支至少经历一次,也称为“分支覆盖”。定义:假设GP是程序P的控制流图,T是程序P的一个测试数据集,LT 为与T相对应的GP 中的路径集合,EG 是GP中所有有向边的集合,EDGE(LT)是LT中覆盖的有向边的集合,则:当且仅当EDGE(LT)=EG 时,称测试数据集T是分支覆盖充分的。分支覆盖测试覆盖率=EDGE(LT)/EG X100%514.3.2 逻辑覆盖法逻辑覆盖法条件覆盖:设计足够多的测试用例,使得程序中每个判定包含的每个条件的取真取假值都至少满足一次。定义:假设GP是程序P的控制流

27、图,T是程序P的一个测试数据集,ATOM(P)是P中所有条件的集合,ATOMRUN(T)是对应T运行过程中条件为真和为假的个数,则:对于ATOM(P)中任意一个元素,T中一定存在一个测试数据使其在运行时为真为假至少各一次,这时就称测试数据集T是条件覆盖充分的。条件覆盖测试覆盖率=ATOMRUN(T)/(2X ATOM(P)X100%52逻辑覆盖法逻辑覆盖法(续)(续)判定/条件覆盖:设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且让每个判定本身的判定结果(真/假)也至少出现一次。定义:假设GP是程序P的控制流图,T是程序P的一个测试数据集,BRATO

28、M(P)是P中所有判断和条件的集合,BRATOMRUN(T)是对应T运行过程中判断和条件为真和为假的个数,则:对于BRATOM(P)中任意一个元素,T中一定存在一个测试数据使其在运行时为真为假至少各一次,这时就称测试数据集T是判定/条件覆盖充分的。判定/条件覆盖测试覆盖率 =BRATOMRUN(T)/(2X BRATOM(P)X100%53逻辑覆盖法逻辑覆盖法(续)(续)组合覆盖:通过执行足够的测试用例,使得程序中每个判定的所有可能的条件取值组合都至少出现一次。定义:假设GP是程序P的控制流图,T是程序P的一个测试数据集,设COMATOM(P)是P中所有条件组合的集合,COMATOMRUN(T

29、)是对应测试集T而言,运行过程中满足条件组合取真取假的个数,则:组合覆盖试覆盖率 =COMATOMRUN(T)/(2X COMATOM(P)X100%54逻辑覆盖法逻辑覆盖法(续)(续)路径覆盖:设计足够多的测试用例,要求覆盖程序中所有可能的路径。定义:假设GP是程序P的控制流图,T是程序P的一个测试数据集,LT 为与T相对应的GP 中的路径集合,EP(GP)是GP中所有路径的集合,则:路径覆盖测试覆盖率=LT/EP(GP)X100%当且仅当LT=EP(GP)时,称测试数据集T是路 径覆盖充分的。55逻辑覆盖法逻辑覆盖法例例X3&z5执行语句块执行语句块3FFTTabdce白盒测试例:void

30、 DoWork(int x,int y,int z)int k=0,j=0;if(x3)&(z5)j=x*y+10;/语句块2 j=j%3;/语句块3561.语句覆盖语句覆盖n要实现DoWork函数的语句覆盖,只需设计一个测试用例就可以覆盖程序中的所有可执行语句。测试用例输入为:x=4、y=5、z=5 程序执行的路径是:abdn分析:语句覆盖可以保证程序中的每个语句都得到执行,但发现不了判定中逻辑运算的错误,即它并不是一种充分的检验方法。例如在第一个判定(x3)&(z5错误写为y3)&(z3 取真值记为T1,取假值记为-T1 条件z5):条件x=4 取真值记为T3,取假值记为-T3 条件y5

31、取真值记为T4,取假值记为-T4条件覆盖的思想就是让测试用例能覆盖T1、-T1、T2、-T2、T3、-T3、T4、-T4643.条件覆盖条件覆盖(续)(续)n对DoWork函数的条件覆盖测试用例设计如下:测试用例 执行路径 覆盖条件覆盖分支x=2、y=6、z=5 acd-T1、T2、-T3、T4 cdx=4、y=5、z=15 acdT1、-T2、T3、-T4 cd分析:上述设计的这组测试用例,虽然满足了条件覆盖,但只是覆盖了程序中第一个判定的取假分支c 和第二个判定的取真分支d,不能满足判定覆盖的要求。654.判定判定/条件覆盖条件覆盖n判定/条件覆盖实际上是将判定覆盖和条件覆盖结合起来的一种

32、方法,即:设计足够的测试用例,使得判定中每个条件的所有可能取值至少满足一次,同时每个判定的可能结果也至少出现一次。n根据判定/条件覆盖的基本思想,只需设计以下两个测试用例便可以覆盖4个条件的8种取值以及4个判定分支。测试用例 执行路径 覆盖条件覆盖分支x=4、y=6、z=5 abdT1、T2、T3、T4 bdx=2、y=5、z=15ace-T1、-T2、-T3、-T4 ce66判定判定/条件覆盖条件覆盖(续)(续)n分析:从表面上看,判定/条件覆盖测试了各个判定中的所有条件的取值,但实际上,编译器在检查含有多个条件的逻辑表达式时,某些情况下的某些条件将会被其它条件所掩盖。因此,判定/条件覆盖也

33、不一定能够完全检查出逻辑表达式中的错误。例如:对于第一个判定(x3)&(z3和z3为假,则编译器将不再检查z5)来说,若条件x=4满足,就认为该判定为真,这时将不会再检查y5,那么同样也无法发现这个条件中的错误。67组合覆盖组合覆盖n组合覆盖的目的是要使设计的测试用例能覆盖每一个判定的所有可能的条件取值组合。n对DoWork函数中的各个判定的条件取值组合加以标记:1、x3,z3,z=10 记做T1-T2,第一个判定的取假分支 3、x=3,z10 记做-T1 T2,第一个判定的取假分支 4、x=10 记做-T1-T2,第一个判定的取假分支 5、x=4,y5 记做T3 T4,第二个判定的取真分支

34、6、x=4,y5 记做-T3 T4,第二个判定的取真分支 8、x!=4,y 0)5 6 If(iType=0)7break;8 else9 If(iType=1)10 x=x+10;11 else12 y=y+20;13 14 78基本路径测试方法基本路径测试方法(续)(续)n画出控制流图:如右图所示n计算环形复杂度:V(G)=e-n+2p 10(条边)-8(个节点)+2X1=4n导出独立路径(用语句编号表示)路径1:4691213414 路径2:4691013414 路径3:46714 路径4:41446791012131479基本路径测试方法基本路径测试方法(续)(续)输入数据预期输出测试

35、用例1irecordnum=0itype=0 x=0y=0测试用例2irecordnum=1itype=0 x=0y=0测试用例3irecordnum=1itype=1x=10y=0测试用例4irecordnum=1itype=2x=0y=20n设计测试用例(试写出其他测试用例)80习习 题题1、使用基本路径测试方法,为以下程序段设计测试用例。void Do(int X,int A,int B)1 if(A1)&(B=0)2 X=X/A;3 if(A=2)|(X1)4 X=X+1;5 2、在三角形问题中,要求输入三个边长:a,b,c。当三边不可能构成三角形时提示错误,可构成三角形时计算三角形的

36、周长。若是等腰三角形打印“等腰三角形”,若是等边三角形,则打印“等边三角形”。画出相应的程序流程图,并采用基本路径测试方法为该程序设计测试用例。第2题,编写完整程序,设计测试用例。81循环测试方法循环测试方法n从本质上说,循环测试的目的就是检查循环结构的有效性。n通常,循环可以划分为简单循环、嵌套循环、串接循环和 非结构循环4类。(1)测试简单循环。设其循环的最大次数为n,可采用以下测试集:跳过整个循环;只循环一次;只循环两次;循环 m 次,其中m3&Z=3&Z10)按照我们前面设计的测试用例(x的值取2或4)来看,逻辑覆盖对这样的小问题都无能为力。分析出现这一情况的原因在于:错误区域仅仅在x

37、=3这个点上,即仅当x的值取3时,测试才能发现错误。面对这类情况,我们应该从中吸取的教训是测试工作要有重点,要多针对容易发生问题的地方设计测试用例。86测试覆盖准则测试覆盖准则(续)(续)nESTCA(Error Sensitive Test Cases Analysis):错误敏感用例分析准则在容易发生问题的地方设计测试用例,即重视程序中谓词(条件判断)的取值。这是一种经验型的覆盖准则,规则本身针对了程序编写人员容易发生的错误,围绕着发生错误的频繁区域设计测试用例,从而提高了发现错误的命中率。具体规则如下:规则1 对于A rel B型(rel可以是)的分支谓词,应适当的选择A与B的值,使得测

38、试执行到该分支语句时,AB的情况分别出现一次。这是为了检测逻辑符号写错的情况,如将“AB”。87测试覆盖准则测试覆盖准则(续)(续)nESTCA(Error Sensitive Test Cases Analysis):规则2 对于A rel C型(rel可以是或,A是变量,C是常量)的分支谓词:当rel为时,应适当的选择A的值,使A=C+M。这是为了检测“差1”之类的错误,如“A1”错写成“A0”。规则3 对外部输入变量赋值,使其在每一个测试用例中均有不同的值与符号,并与同一组测试用例中其他变量的值与符号不同。这是为了检测程序语句中的错误,如应该引用某一变量而错成引用另一个常量。88测试覆盖

39、准则测试覆盖准则(续)(续)nLCSAJ(Linear Code Sequence and Jump):线性代码序列与跳转覆盖准则。在程序中,一个LCSAJ是一组顺序执行的代码,以控制跳转为其结束点。它的定义如下:(1)它起始于程序的入口或一个控制流可跳达的点。(2)它结束于程序的出口或一个控制流跳转的点。如果有几个LCSAJ首尾相接,且第一个LCSAJ起点为程序起点,最后一个LCSAJ终点为程序终点,这样的LCSAJ串就组成了程序的一条路径(LCSAJ路径)。一条LCSAJ程序路径可能是由2个、3个或多个LCSAJ组成的。89测试覆盖准则测试覆盖准则(续)(续)n基于LCSAJ与路径的关系,

40、Woodward提出了分层LCSAJ覆盖准则。它是一个分层的覆盖准则,可以概括的描述为:第一层 语句覆盖。第二层 分支覆盖。第三层 LCSAJ覆盖,即程序中的每一个LCSAJ都至少在测试中经历过一次。第四层 两两LCSAJ覆盖,即程序中的每两个相连的LCSAJ组合起来在测试中都要经历一次。第n+2层 每n个首尾相连的LCSAJ组合在测试中都要经历一次。n在实施测试时,若要实现上述的层次LCSAJ覆盖,需要产生被测程序的所有LCSAJ。90测试覆盖准则测试覆盖准则(续)(续)n例:找出前面DoWork函数的所有LCSAJ和LCSAJ路径。LCSAJ(5个):(1)int k=0,j=0;if(x

41、3)&(z5)(3)if(x=4)|(y5)(4)j=x*y+10;j=j%3 (5)j=j%3LCSAJ路径(4条):(1)-(2)-(4)(1)-(2)-(5)(1)-(3)-(4)(1)-(3)-(5)914.5 最少测试用例数计算最少测试用例数计算n为实现测试的逻辑覆盖,必须设计足够多的测试用例,并使用这些测试用例执行被测程序,实施测试。我们关心的是:对于某个具体的程序来说,至少需要设计多少个测试用例。这里提供一种估算最少测试用例数的方法。n我们知道,结构化程序是由 3 种基本控制结构组成:顺序型(构成串行操作)、选择型(构成分支操作)和重复型(构成循环操作)。n为了把问题化简,避免出

42、现测试用例极多的组合爆炸,把构成循环操作的重复型结构用选择结构代替。这样,任一循环便改造成进入循环体或不进入循环体的分支操作了。92最少测试用例数计算最少测试用例数计算(续)(续)nN-S图的概念:是一种无线的流程图,又称盒图,1973年由美国学者I.Nassi和B.Shneiderman提出n用N-S图表示程序的4种基本控制结构:图中图中A A、B B、C C、D D、S S均表示要执行均表示要执行的操作,的操作,P P是可取真假值的谓词,是可取真假值的谓词,Y Y表表真值,真值,N N表假值。表假值。图中的图中的 (c)(c)和和 (d)(d)两种重复型结构代两种重复型结构代表了两种循环。

43、在做了简化循环的假设表了两种循环。在做了简化循环的假设以后,对于一般的程序控制流,我们只以后,对于一般的程序控制流,我们只考虑选择型结构。事实上它已经能体现考虑选择型结构。事实上它已经能体现顺序型和重复型结构了。顺序型和重复型结构了。93最少测试用例数计算最少测试用例数计算(续)(续)显然,要测试这个小程序,需要至少提供4个测试用例才能作到逻辑覆盖,使得ac、ad、bc及bd操作均得到检验。其实,这里的4是图中的第1个分支谓词引出的两个操作,及第2个分支谓词引出的两个操作组合起来而得到的,即:(1+1)(1+1)=4n例如,下图表达了两个顺序执行的分支结构。当两个分支谓词P1和P2取不同值时,

44、将分别执行a或b及c或d操作。94最少测试用例数计算最少测试用例数计算(续)(续)n对于一般的、更为复杂的问题,估算最少测试用例个数的原则也是同样的:如果在N-S图中存在有并列的层次A1、A2,A1和A2的最少测试用例个数分别为a1、a2,则由 A1、A2 两层所组合的 N-S图对应的最少测试用例数为a1a2。如果在N-S图中不存在有并列的层次,则对应的最少测试用例数由并列的操作数决定,即N-S图中除谓词之外的操作框的个数。95最少测试用例数计算最少测试用例数计算(续)(续)n例:如下图所示的两个N-S图,至少需要多少个测试用例完成逻辑覆盖?对于第一个对于第一个N-SN-S图:图:图中并不存在

45、并列的层次,图中并不存在并列的层次,最少测试用例数由并列的操作数最少测试用例数由并列的操作数决定,即为决定,即为1+1+1=31+1+1=3。对于第二个对于第二个N-SN-S图:图:图中也没有包含并列的层次,图中也没有包含并列的层次,最少测试用例数仍由并列的操作最少测试用例数仍由并列的操作数决定,即为数决定,即为1+1+1+1+1=51+1+1+1+1=5。96最少测试用例数计算最少测试用例数计算(续)(续)n例:如下图所示的N-S图,至少需要多少个测试用例完成逻辑覆盖?分析该分析该N-SN-S图:图:图中的图中的23452345和和6767是并列的两层。是并列的两层。其中,其中,234523

46、45层对应的最少测试用层对应的最少测试用例数为例数为1+1+1+1+1=51+1+1+1+1=5,6767层对应层对应的测试用例数为的测试用例数为1+1+1=31+1+1=3,23452345和和6767这两层组合后对应的测试用这两层组合后对应的测试用例数为例数为5 5 3=153=15。最后,由于。最后,由于两层两层组合后的部分是不满足谓词组合后的部分是不满足谓词1 1时时所要做的操作,还要加上满足谓所要做的操作,还要加上满足谓词词1 1要做的操作,因此整个程序要做的操作,因此整个程序所需测试用例数为所需测试用例数为15+1=1615+1=16。97习题习题1、将下图所示的流程图转换为N-S图,并估算至少需要多少个测试用例完成逻辑覆盖?X8 AND Y5X0 OR Y0引用语句1引用语句2NYNYX16 OR Y10引用语句3NY98习题习题2、某程序所画出的N-S图如右图所示的,至少需要多少个测试用例才能对该程序实现逻辑覆盖?99

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

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁