- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件测试各种覆盖方法介绍
各种覆盖率方法介绍
各种覆盖率方法介绍
STIN-GZH 提供 作者:三原
下载:WWW.51CMM.COM
广州 STIN 提供( 下载) 第 1 页 共 10 页
各种覆盖率方法介绍
1 简介
1.1 代码覆盖率分析
这篇文章给出了一个完整的代码覆盖率分析方面的概念。
代码覆盖率分析是这样一个过程:
· 找出程序经过一系列测试而没有执行的部分代码
· 创建一个附加的测试用例来增加覆盖率
· 决定代码覆盖的定量度量。
代码覆盖率分析的一个有效方面是:
· 识别出没有增加覆盖率的无效的测试用例。
覆盖率分析需要被测试程序的源代码,并且经常需要用一个特殊的命令重新编译它。这篇文章
讨论你应当考虑你的测试计划中应该如何增加覆盖率分析的细节问题。覆盖率分析有一定的好
处和弱点。你应该选择一个测量方法的范围。你应该建立一个覆盖率要达到的最小百分比,来
决定你什么时候停止覆盖率分析。覆盖率分析只是许多测试技术的一种,你不能只是依靠它。
1.2 结构化测试和功能测试(Structural testingFunctional testing )
代码覆盖率分析是一种结构化测试技术(AKA glass box testing and white box testing). 结
构化测试是比较被测试程序的行为和源代码的外观目的。和功能测试相比 (AKA black-box
testing), 功能测试是比较被测试程序的行为和确定的需求。结构化测试检查程序的工作,考
虑结构中可能存在的逻辑缺陷。功能测试检查被测试程序的完成需求的能力,不考虑它是怎么
工作的。
结构化测试也叫路径测试(path testing), 因为你选择测试用例来通过程序结构的路径。不
要和路径覆盖率度量(path coverage)混淆,下面会介绍。
粗略的看,结构化测试似乎不安全,结构化测试不能发现需求疏忽的错误,但是,需求定义有
时并不存在,而且并不完整。这个现象是实际存在的,当产品开发的时间线就要到的时候,当
需求定义很少更新,产品自身代替了需求定义的作用的时候。
1.3 假定
一些基本原理的假定如下所列:
· Faults ―――和控制流相关的缺陷,你可以发现这些缺陷通过变更控制流[Beizer1990
p.60]。例如,一个程序写为if (c) 比if (!c)好。
· 你可以寻找缺陷而不必知道这个缺陷可能引起的后果和所有测试的可靠性。
· 其它的假定包括可完成需求的定义、没有疏忽的缺陷和没有不可以达到的代码等。
广州 STIN 提供( 下载) 第 2 页 共 10 页
各种覆盖率方法介绍
2 基本的度量
有许多覆盖率度量存在,这里介绍一些基本的度量的益处和弱点。
2.1 语句覆盖(Statement Coverage )
这个度量报告每一个可执行语句是否被执行。也称为: 行覆盖( line coverage ) , 段覆
盖(segment coverage ) [Ntafos1988], C1 [Beizer1990 p.75] 和基本块覆盖(basic block
coverage)。基本块覆盖当每一个序列的语句是无分支的语句时和语句覆盖相同。这个覆盖度
量的主要好处是它可以直接应用在目标码上,不需要对源代码进行处理。执行轮廓就完成了这
个度量。这个覆盖度量的主要缺点是对一些控制结构很迟钝。例如,考虑下列的C/C++ 代码:
int* p = NULL;
if (condition)
p = variable;
*p = 123;
如果当condition 取假的情况下,语句覆盖率显示这四句都覆盖到了,但是代码执行是失败的。
这是一个语句覆盖率的严重的缺陷,IF语句是很普通的一种情况。语句覆盖不能报告循环是否
到达它们的终止条件―――只能显示循环是否被执行了。既然do-while 循环通常要至少执行
一次,语句覆盖认为它们和无分支语句是一样的。
语句覆盖率对逻辑运算符反映是迟钝的(|| and )。
语句覆盖不能区分连续的sw
文档评论(0)