资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第11章 结构性测试回顾,路径测试 数据流测试,结构性测试回顾,白盒测试(White-box testing),(白盒的)实现是已知的,并被用来标识测试用例,程序的结构和处理过程象白盒子一样透明。允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。,结构性测试回顾,结构性测试基于被测程序的源代码 结构性测试方法支持严格定义、数学分析和精确度量,结构性测试回顾,什么时候测试可以停止?,时间用光,继续测试未产生新的失效,继续测试未发现新的缺陷,无法考虑新的测试用例,回报很小,达到所要求的覆盖,所有缺陷都已经清除,太常见,无法保证,软件可靠性模型支持该选择,若已遵循测试规则和指导方针,则该选择是很好的,否则类似选择1,好的选择,非常好的选择,结构性测试回顾,路径测试 数据流测试,是从程序入口开始,执行过程中经历各个语句,直至程序出口,是结构性测试最为典型的问题,理想情况:实现路径覆盖,结构性测试回顾路径测试,DD路径 测试覆盖指标 基路径测试,结构性测试回顾路径测试,DD路径,是程序图中的一条链,使得:,Case 1:,由一个节点组成,入度 = 0,Case 2:,Case 3:,Case 4:,Case 5:,长度=1的最大链,由一个节点组成,出度 = 0,由一个节点组成,入度=2或出度=2,由一个节点组成,入度=1且出度=1,对应唯一的源节点,对应唯一的汇节点,对应条件语句,用于短分支,对应串行语句,结构性测试回顾路径测试,DD路径图,给定采用命令式语句编写的一段程序,其DD路径图是有向图,其中,节点表示程序图的DD-路径,边表示连续DD-路径之间的控制流。,结构性测试回顾路径测试,DD路径 测试覆盖指标 基路径测试,结构性测试回顾路径测试,测试覆盖指标(基于程序图),结构性测试回顾路径测试,语句与判断测试 DD-路径测试,要求找出一组测试用例,使得当执行时,程序图的所有节点至少执行一次,对于C1指标,要求执行每个判断分支,则应遍历DD-路径图中每条边, 对于C1p覆盖,若为条件语句,则应覆盖真、假分支;若为CASE语句,应覆盖每个子句, 对于较长的DD-路径,代表复杂计算,应采用多个功能性测试,尤其是边界值和特殊值测试,,结构性测试回顾路径测试,DD-路径的依赖对偶 循环覆盖,即数据流测试,串联循环 嵌套循环 非结构循环,结构性测试回顾路径测试,多条件覆盖,研究DD-路径的复合条件中可能出现分支的不同方式 条件测试路径选择,构造真值表 将复合判断修改为嵌套的简单if-then-else逻辑,产生更多要覆盖的DD-路径,结构性测试回顾路径测试,DD路径 测试覆盖指标 基路径测试,结构性测试回顾路径测试,基路径测试 基本思想:找出一组独立路径进行测试 数学基础:将程序看作一种向量空间,该空间的基是要测试的非常有意义的元素集合。若基无问题,则用基表述的一切都无问题 步骤: 从程序代码生成 程序图 计算圈复杂度 确定基路径集合 设计测试用例,结构性测试回顾路径测试,基路径测试的优点,给出了必须进行的测试的下限,提供了用作功能性测试交叉检查的一组指标,若发现同一条程序路径被多个功能性测试用例遍历,则可怀疑该冗余不会发现新的缺陷,若未达到一定的DD-路径覆盖,则可知功能性测试用例中存在漏洞,利用源代码的性质标识合适的覆盖指标,采用这些指标交叉检查功能性测试用例,若未达到要求的覆盖,则根据有意义的路径标识额外的测试用例,策略,结构性测试回顾路径测试,基路径测试的不足,仍然离代码太远,难以发现不可行路径,路径测试将代码采用有向图表示和程序路径公式化,掩盖了代码中的重要信息,数据流测试,结构性测试回顾,路径测试 数据流测试,结构性测试回顾数据流测试,数据流分析:用作路径测试的“真实性检查”,定义/使用测试 基于程序片的测试,结构性测试回顾数据流测试,定义节点(DEF(v,n)) 使用节点(USE(v,n)) 谓词使用(P-use)/计算使用(C-use) 定义-使用路径(du-path) 定义清除路径(dc-path) 定义-使用路径和定义清除路径描述了跨从值被定义的点到值被使用的点的源语句的数据流。 不是定义清除的定义-使用路径,是潜在有问题的地方。,结构性测试回顾数据流测试,定义-使用路径测试覆盖指标 全定义准则 全使用准则 全谓词使用/部分计算使用准则 全计算使用/部分谓词使用准则 全定义-使用路径准则,结构性测试回顾数据流测试,定义/使用测试提供一种检查缺陷可能发生点的严格和系统化的方法。,数据流覆盖指标层次结构,结构性测试回顾数据流测试,定义/使用测试提供一种检查缺陷可能发生点的严格和系统化的方法。 但定义-使用路径是包含可能没有意思的语句和变量的序列,通过片分析程序,可将注意力集中到感兴趣的部分,不考虑无关的部分,基于程序片的测试,结构性测试回顾数据流测试,程序片是确定或影响某变量在程序某点上的取值的一组程序语句 最终希望找到片的一种格(有向无环图),格中的节点代表片,边代表子集关系,结构性测试回顾数据流测试,数据流测试适用于计算密集的程序 在控制密集的程序中,若要计算控制变量(谓词使用),则数据流测试也适用,结构性测试回顾,结构性测试充当对功能性测试的交叉检查 功能性测试的漏洞与冗余 用于方法评估的指标,结构性测试回顾,用于方法评估的指标 假设功能性测试技术M生成m个测试用例,并根据标识被测单元中的s个元素的结构性测试指标S来跟踪这些测试用例。但执行m个测试用例时,经过n个结构性测试元素,则 方法M关于指标S的覆盖:n/s,记做C(M,S) 方法M关于指标S的冗余: m/s,记做R(M,S) 方法M关于指标S的净冗余:m/n,记做NR(M,S),结构性测试回顾,一般地,结构性测试指标越精细,会产生更多的元素(s越大),因此,给定功能性测试方法通过更严格的结构性测试指标评估时有效性会变得很低,课堂练习,保险金程序的程序图(P165/140) DD-路径图 源节点,汇节点 圈复杂度 基路径,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号