路径测试ppt课件_第1页
路径测试ppt课件_第2页
路径测试ppt课件_第3页
路径测试ppt课件_第4页
路径测试ppt课件_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二部分 单元测试,第八章 路径测试,8.1 程序图 8.2 DD路径 8.3 测试覆盖标准 8.4 基路径测试 8.5 原则与注意事项,Path testing,1,第八章 路径测试,结构性测试回顾,白盒测试(White-box testing),(白盒的)实现是已知的,并被用来标识测试用例,程序的结构和处理过程象白盒子一样透明。允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。,2,第八章 路径测试,结构性测试回顾,结构性测试基于被测程序的源代码,它涉及到的是软件设计的细节。 结构性测试方法支持严格定义、数学分析和精确度量 结构性测试力求提高测试覆盖率。,3,第八章 路径测试,结构性测试回顾,结构性测试主要是想对程序模块进行如下检查,对程序模块的所有独立的执行路径至少测试一次,所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次,在循环的边界和运行界限内执行循环体,测试内部数据结构的有效性等,测试方法: 路径测试 数据流测试,4,第八章 路径测试,结构性测试回顾,结构性测试用例标识方法的比较,S:规格说明(预期的),P:程序(观察的),测试用例集合完全局限在已编程实现的行为集合中,5,第八章 路径测试,结构性测试回顾,什么时候测试可以停止?,时间用光,继续测试未产生新的失效,继续测试未发现新的缺陷,无法考虑新的测试用例,回报很小,达到所要求的覆盖,所有缺陷都已经清除,太常见,无法保证,软件可靠性模型支持该选择,若已遵循测试规则和指导方针,则该选择是很好的,否则类似选择1,好的选择,非常好的选择,6,第八章 路径测试,逻辑覆盖,逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术,路径约定:a,b,c,d,e(如下图所示) 判断条件约定: T1:A1 T2:B=0 T3:A=2 T4:X1,7,第八章 路径测试,逻辑覆盖,L1 ( a c e ) = (A1) and (B=0) and (A=2) or (X/A1) = (A1) and (B=0) and (A=2) or (A1) and (B=0) and (X/A1) = (A=2) and (B=0) or (A1) and (B=0) and (X/A1),8,第八章 路径测试,逻辑覆盖,L2 ( a b d ) = not(A1) and (B=0) and not(A=2) or (X1) = not (A1) or not (B=0) and not (A=2) and not (X1) = not (A1) and not (A=2) and not (X1) or not (B=0) and not (A=2) and not (X1),L1 ( a c e ),9,第八章 路径测试,逻辑覆盖,10,L3 ( a b e) = not (A1) and (B=0) and (A=2) or (X1) = not (A1) or not (B=0) and (A=2) or (X1) = not (A1) and (A=2) or not (A1) and (X1) or not (B=0) and (A=2) or not (B=0) and (X1),L1 ( a c e ),L2 ( a b d ),10,第八章 路径测试,逻辑覆盖,L4 ( a c d ) = (A1) and (B=0) and not (A=2) or (X/A1) = (A1) and (B=0) and not (A=2) and not (X/A1),L1 ( a c e ),L2 ( a b d ),L3 ( a b e),11,第八章 路径测试,逻辑覆盖,逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术 根据覆盖测试的目的不同,逻辑覆盖分为:,语句覆盖 判定覆盖 条件覆盖 判定条件覆盖 条件组合覆盖 路径覆盖,测试覆盖准则,12,第八章 路径测试,逻辑覆盖语句覆盖,选择路径 L1,问题:若AND错写为OR,或OR错写为AND,仍可覆盖所有4条语句。 无法发现判断中逻辑运算的错误。,语句覆盖是最弱的逻辑覆盖准则,每一可执行语句至少执行一次。,(A1) or (B=0),(A=2) and (X1),当前测试用例: A=2,B=0,X=4.,13,第八章 路径测试,逻辑覆盖判定覆盖,选择路径L4和L3,,问题:若X1错写为X1,仍可得到同样结果。 不一定能发现判断的条件中存在的错误。,在的基础上,每个判定的真、假分支至少执行一次。,当前测试用例: A=3,B=0,X=3 (满足A1,B=0;A2,X1) A=2,B=1,X=1 (满足A1,B0;A=2,X 1),14,第八章 路径测试,逻辑覆盖条件覆盖,15,在的基础上,每个判定的每个条件的可能取值至少执行一次。,A1,取真值为T1,取假值为,B=0,取真值为T2,取假值为,A=2,取真值为T3,取假值为,X1,取真值为T4,取假值为,T1 and T2,T3 or T4,15,第八章 路径测试,逻辑覆盖条件覆盖,问:条件覆盖 ? 判定覆盖,答: 不一定。,16,第八章 路径测试,逻辑覆盖判定-条件覆盖,不一定能发现逻辑表达式中的错误。,即判定覆盖条件覆盖,即同时考虑条件的组合值及判定结果的检验。,如何彻底检查所有条件的取值?,17,第八章 路径测试,逻辑覆盖条件组合覆盖,全部可能的条件组合为: A1,B=0(T1 T2) A1,B0(T1 T2) A1,B=0(T1,T2) A1,B0(T1 T2) A=2,X1(T3,T4) A=2,X1(T3 T4) A2,X1(T3,T4) A2,X1(T3 T4),问题:没有测试到L4(acd)的情形,每个判定表达式中条件的各种可能组合都至少执行一次。,在条件组合覆盖中: 对某被测程序,若实现了条件组合覆盖,则一定实现了判定覆盖、条件覆盖及判定条件覆盖 。 但条件组合覆盖不一定能覆盖程序中的每条路径。上述4组测试用例就没有覆盖到路径acd。,18,第八章 路径测试,逻辑覆盖路径覆盖,程序中每条可能的路径都至少执行一次。若图中有环,则每个环至少执行一次。,19,第八章 路径测试,逻辑覆盖,逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术 根据覆盖测试的目的不同,逻辑覆盖分为:,语句覆盖 判定覆盖 条件覆盖 判定-条件覆盖 条件组合覆盖 路径覆盖,测试覆盖准则,无论哪种测试覆盖,即使覆盖率达100%,都不能保证找出所有隐藏的缺陷,指的是测试覆盖的标准,20,第八章 路径测试,覆盖率概念,覆盖率是用来度量测试完整性的一个手段。分为逻辑覆盖和功能覆盖两大类。 覆盖率可以通过一个比率公式来表示: 覆盖率=(至少被执行一次的item数)/ item的总数 通过覆盖率数据,可以知道测试的是否充分,测试的弱点在哪些方面,进而指导设计能够增加覆盖率的测试用例。,结构化覆盖率可以作为测试完整性的一个标准; 某些覆盖率很难达到,例如条件覆盖是一个NP-hard问题; 即使达到100%的结构化覆盖率也不能保证程序的正确,21,第八章 路径测试,路径测试,路径测试:从程序入口开始,执行过程中经历各个语句,直至程序出口 是结构性测试最为典型的一种方法 理想情况:实现路径覆盖,问题:对于简单的小程序可实现路径覆盖 对于程序中出现多个判定和多个循环,路径数目将急剧增长,22,第八章 路径测试,路径测试,路径从图的构造中得来 当执行测试用例时,将通过路径,不同执行路径数达520条,所有路径测试完需3170年。,庞大的执行路径暗示着需要简化,在单元测试中,路径是指函数代码的某个分支,而实际上如果我们将软件系统的某个流程也看成路径的话,我们将可以尝试着用路径分析的方法来简化测试用例的设计。,23,第八章 路径测试,路径测试,路径测试的好处 降低了测试用例设计的难度,只要搞清了各种流程,就可以设计出高质量的测试用例来,而不用太多测试方面的经验 在测试时间较紧的情况下,可以有的放矢的选择测试用例,而不用完全根据经验来取舍 便于自动化,24,第八章 路径测试,程序结构图,程序图,给定采用命令式程序设计语言编写的一段程序,其程序图是一种有向图,其中:,传统定义:如果i和j是程序图中的节点,从节点i到j存在一条边,当且仅当对应节点j的语句可以立即在节点i对应的语句之后执行。,改进的定义:节点要么是整个语句,要么是语句的一部分,边表示控制流(从节点i到j有一条边,当且仅当对应节点j的语句或语句的一部分,可以立即在对应节点i的语句或语句的一部分之后执行。),程序图的重要性在于:程序的执行对应于从源节点到汇节点的路径。,25,第八章 路径测试,程序结构图,测试用例要完成某条程序路径的执行,所以: 程序图明确描述了测试用例和测试用例所执行的程序部分之间的关系 程序图能很好地以理论上可预期的方式,来处理程序中潜在的大量执行路径,26,第八章 路径测试,结构化程序设计中的基本结构,例,27,第八章 路径测试,程序结构图,数据字典,三角形的边: a + b + c,a, b, c 是非负整数,类型码 :等边/等腰/不等边/非三角形,提示 : Enter three integers which are sides of a triangle,三角形类型:等边/等腰/不等边/非三角形,28,第八章 路径测试,程序结构图,Output (“Isosceles“),三角形程序的伪码,29,第八章 路径测试,程序结构图,三角形程序的程序图,Step 1: Get Input,30,第八章 路径测试,圈的复杂度,线性独立路径数(V=e-n+2p),对于程序图,V(G)=e-n+2,31,第八章 路径测试,圈的复杂度,圈复杂度(V=e-n+2),例,e=6, n=5, V=e-n+2=3,e=3, n=3, V=e-n+2=2,e=2, n=3, V=e-n+2=1,e=3, n=3, V=e-n+2=2,e=3, n=3, V=e-n+2=2,程序越复杂,圈复杂度越高,路径数越多。,32,第八章 路径测试,DD路径,DD路径的定义,节点链 链是一条起始和终止节点不同的路径,并且链中每个节点都满足内度=1、外度=1。(注:与环的区别) 链的长度:边的数量 长度为0的退化链,即链有一个节点和0条边组成,33,第八章 路径测试,DD路径,DD路径的定义,是程序图中的一条链,使得:,Case 1:,由一个节点组成,入度 = 0,Case 2:,Case 3:,Case 4:,Case 5:,长度=1的最大链,由一个节点组成,出度 = 0,由一个节点组成,入度=1且出度=1,对应唯一的源节点,对应唯一的汇节点,对应条件语句,用于短分支,对应串行语句,由一个节点组成,入度=2或出度=2,34,第八章 路径测试,DD路径,DD路径图的定义,本质上是一种压缩图,给定采用命令式语句编写的一段程序,其DD路径图是有向图,其中,节点表示程序图的DD-路径,边表示连续DD-路径之间的控制流。,2-连通的分图被压缩为对应case5 DD-路径的各个节点 DD-路径能够精确描述测试覆盖,35,第八章 路径测试,DD路径,三角形问题的程序图,三角形问题的DD-路径图,情况1:由一个节点组成,内度=0 情况2:由一个节点组成,外度=0 情况3:由一个节点组成,内度2或外度2 情况4:由一个节点组成,内度=1并且外度=1 情况5:长度1的最大链,情况1,情况5,情况3,情况4,情况2,36,第八章 路径测试,测试覆盖指标,功能性测试的基本局限性,测试用例之间可能存在严重的冗余,还可能存在未测试的软件漏洞,受软件规格说明书的限制,测试覆盖指标是度量一组测试用例覆盖(或执行)某个程序程度的工具。,37,第八章 路径测试,测试覆盖指标,测试覆盖指标( Miller ),38,第八章 路径测试,路径覆盖,设计足够的测试用例,覆盖被测程序中所有可能的路径。,设计以下测试用例,覆盖四条路径:,39,第八章 路径测试,测试覆盖指标,DD-路径测试,对于C1指标,要求执行每个判断分支,则应遍历DD-路径图中每条边; 对于C1p覆盖,若为条件语句,则应覆盖真、假分支;若为CASE语句,应覆盖每个子句; 对于较长的DD-路径,代表复杂计算,应采用多个功能性测试,尤其是边界值和特殊值测试。,40,第八章 路径测试,测试覆盖指标,DD-路径的依赖偶对,即数据流测试; DD-路径偶对之间最常见的依赖关系是定义/引用关系,其中变量是在一个DD-路径中定义(接收一个值),而在另一个DD-路径中引用; 这种依赖关系与不可行路径问题有关; 简单的DD-路径覆盖可能不会遍历这些依赖关系。,执行路径BDEFH:是不可行路径,41,第八章 路径测试,测试覆盖指标,循环覆盖,串联循环 嵌套循环 非结构循环,串联循环,嵌套循环,非结构循环,例,42,第八章 路径测试,基路径测试,覆盖所有路径不可能 只能从大量可能路径中选择一部分作为测试用例,基路径测试,基本思想:找出一组独立路径进行测试,数学基础:将程序看作一种向量空间,该空间的基是要测试的非常有意义的元素集合。若基无问题,则用基表述的一切都无问题,什么是向量空间?什么是基?,43,第八章 路径测试,基路径测试,点线面 基向量空间,向量空间的基是相互独立的一组向量, 基覆盖整个向量空间,使得该空间中的任何其他向量都可用基向量表示。 一组基向量在一定程度上可表示整个向量空间的“本质”:空间中的一切都可用基表示,如果一个基元素被删除,则这种覆盖特性也会丢失。 向量空间的一组基不是唯一的。,44,第八章 路径测试,基路径测试,穷举测试不可能 只能从大量可能数据中选择一部分作为测试用例,输入域,划分,互不相交的子集,子集的并是整个集合,选择代表元素,等价类测试,45,第八章 路径测试,基路径测试,输入域,划分,互不相交的子集,子集的并是整个集合,选择代表元素,路径集合,路径相互独立,选择独立路径元素,独立路径的并是整个向量空间,确保程序中每个可执行语句至少执行一次所必需的测试用例数目的下限,46,第八章 路径测试,基路径测试,基路径测试的步骤,从程序代码生成 程序图,计算圈复杂度,确定基路径集合,设计测试用例,选择一个基线路径,对应某个“正常案例”程序执行,使得该路径具有尽可能多的判断节点 重新回溯基线路径,依次“翻转”每个判断点,不同的人选择的基路径可能不会相同,但这没有影响,因为不要求唯一基。,47,第八章 路径测试,McCabe基路径方法,程序图的圈数量就是图中线性独立路径的数量。 任意两条线性独立路径至少有一条不同的边。 线性独立路径的加法:一条路径后接另一条路径。 线性独立路径的数量乘法:对应于路径的重复。,48,第八章 路径测试,McCabe基路径方法,McCabe的基路径方法: 强连通图的圈数量就是图中线性独立环路的数量,基路径,P1:A,B,C,G P2:A,B,C,B,C,G P3:A,B,E,F,G P4:A,D,E,F,G P5:A,D,F,G,其它路径,P:A,B,C,B,E,F,G,p2+p3-p1,P:A,B,C,B,C,B,C,G,2p2-p1,e=10,n=7,p=1,V(G)=5,49,第八章 路径测试,McCabe基路径方法,利用关联矩阵加强理解,1,3,2,4,5,6,7,8,9,10,50,第八章 路径测试,McCabe基路径方法的讨论,McCabe的基路径方法的优点,保证可经过所有决策分支,与DD-路径覆盖相同,是对实际问题的学术性简化,测试基路径集合是充分的,为使程序路径看起来像向量空间,将路径进行强制性的扭曲,但McCabe基不充分,路径加法是一条路径后接另一条路径,乘法对应于路径的重复,McCabe的基路径方法的不足,51,第八章 路径测试,McCabe基路径方法的讨论,ex1:A,B,C,B,E,F,G,p2+p3-p1,ex2:A,B,C,B,C,B,C,G,2p2-p1,确定基路径集合,选择一个基线路径,对应某个“正常案例”程序执行,使得该路径具有尽可能多的判断节点 重新回溯基线路径,依次“翻转”每个判断点,这样得到的路径实际可行吗?,52,第八章 路径测试,P1:A,B,C,E,F,H,J,K,M,N,O,最终 P2:A,B,D,E,F,H,J,K,M,N,O,最终 P3:A,B,C,E,F,G,O,最终 P4:A,B,C,E,F,H,I,N,O,最终 P5:A,B,C,E,F,H,J,L,M,N,O,最终,原始 在B处翻转p1 在F处翻转p1 在H处翻转p1 在J处翻转p1,不等边三角形 等边三角形 等腰三角形,不可行,不可行,确定基路径集合,非三角形情况没有基路径,例,McCabe基路径方法的步骤,为什么存在不可行路径?,53,第八章 路径测试,如果经过节点C,必须经过节点H 如果经过节点D,必须经过节点G,P1:A,B,C,E,F,H,J,K,M,M,O,最终 P6:A,B,D,E,F,G,O,最终 P4:A,B,C,E,F,H,I,N,O,最终 P5:A,B,C,E,F,H,J,L,M,N,O,最终,不等边三角形 非三角形 等边三角形 等腰三角形,确定基路径集合,McCabe基路径方法的步骤,54,第八章 路径测试,McCabe基路径方法的基本复杂,基本复杂度,是另一种形式压缩图的唯一圈复杂度,DD-路径图程序图的压缩,对结构化程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论