- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 白盒测试及其用例的设计 3.1 白盒测试方法 3.2 控制流图 3.3 白盒测试覆盖指标 3.4 数据流测试 3.5 白盒测试方法总结 本章教学目标 理论环节 学习理解白盒测试方法的基本概念 学习理解白盒测试的覆盖理论 学习掌握白盒测试的路径表达 学习掌握白盒测试的基本路径测试法 学习掌握白盒测试的数据流测试法 实践环节 通过案例运用学习掌握覆盖问题的解决方法 运用基本路径测试方法进行实际程序测试 3.1 白盒测试方法 为什么要进行白盒测试? 如果所有软件错误的根源都可以追溯到某个唯一原因,那么问题就简单了。然而,事实上一个bug常常是由多个因素共同导致的,如下图所示。 白盒测试方法(续) 白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例。 白盒测试法检查程序内部逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。但即使每条路径都测试过了,仍然可能存在错误。因为: 穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序。 穷举路径测试不可能查出程序因为遗漏路径而出错。 穷举路径测试发现不了一些与数据相关的错误。 白盒测试方法(续) 采用白盒测试方法必须遵循以下几条原则,才能达到测试的目的: 保证一个模块中的所有独立路径至少被测试一次。 所有逻辑值均需测试真 (true) 和假 (false) 两种情况。 检查程序的内部数据结构,保证其结构的有效性。 在上下边界及可操作范围内运行所有循环。 白盒测试常用的测试用例设计方法 逻辑覆盖 以程序内部的逻辑结构为基础; 根据覆盖测试的目标,逻辑覆盖分为: 语句、判定、条件、判定/条件、组合、路径 基本路径测试 为了解决路径庞大难题; 在程序控制流程图的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,设计测试用例的方法。 3.3 控制流图 控制流图(可简称流图)是对程序流程图进行简化后得到的,它可以更加突出的表示程序控制流的结构,唯一的。 控制流图中包括两种图形符号:节点和控制流线。 节点由带标号的圆圈表示,可代表一个或多个语句、一个处理框序列和一个条件判定框(假设不包含复合条件)。 控制流线由带箭头的弧或线表示,可称为边。它代表程序中的控制流。 对于复合条件,则可将其分解为多个单个条件,并映射成控制流图。 常见结构的控制流图 转化程序流程图为控制流图 3.3 覆盖测试 结构测试中的一个重要问题是,测试进行到什么地步就达到要求,可以结束测试。 这需要给出结构测试的覆盖准则。 3.3.1 测试覆盖率 测试覆盖率:用于确定测试所执行到的覆盖项的百分比。其中的覆盖项是指作为测试基础的一个入口或属性,比如语句、分支、条件等。 通过覆盖率数据可以知道测试得是否充分,测试的弱点在哪些方面,从而指导我们设计能够增加覆盖率的测试用例。能够有效地提高测试质量,避免设计无效用例。在测试分析报告中可以作为量化指标的依据,测试覆盖率越高效果越好。但覆盖率不是目标,只是一种手段。 覆盖率概念 覆盖率是用来度量测试完整性的一个手段。本身并不包含测试技术,只是测试技术有效性的一个度量。 覆盖率种类: 逻辑覆盖(Logical Coverage),也叫: 代码覆盖率(Code Coverage) 结构化覆盖率(Structural Coverage) 功能覆盖(Function Coverage)。 3.3.2 逻辑覆盖法 根据覆盖目标的不同,逻辑覆盖可分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。 语句覆盖:选择若干个测试用例,运行被测程序,使得程序中的每个可执行语句至少执行一次。覆盖指标C0 判定覆盖(分支覆盖):选择若干个测试用例,运行被测程序, 使得程序中的每个判断真假值均曾被满足,也就是使程序中的每个取“真”分支和取“假”分支至少均经历一次。覆盖指标C1 条件覆盖:选择若干个测试用例,运行被测程序,使得程序中每个判定包含的每个条件的可能取值(真/假)都至少满足一次。 逻辑覆盖法(续) 判定-条件覆盖:设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。 ——满足判定-条件覆盖的测试用例一定同时满足判定覆盖和条件覆盖。 组合覆盖:通过执行足够的测试用例,使得程序中每个判定的所有可能的条件取值组合都至少出现一次。覆盖指标CMCC ——满足组合覆盖的测试用例一定满足判定覆盖、条件覆盖和判定-条件覆盖。 路径覆盖:设计足够多的测试用例,要求覆盖程序中所有可能的路径。覆盖指标C∞ 逻辑覆盖法(续) 逻辑覆盖法(续) void
文档评论(0)