各种覆盖率方法简介.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
各种覆盖率方法简介

各种覆盖率方法介绍(3) 3 其它度量 这里介绍一些其它的基本的很少使用的度量的益处和弱点。 3.1 函数覆盖(Function Coverage ) 这个度量报告是否你调用了每个函数或过程。对于初步的测试来保证至少在所有的软件没有总的不足非常有用。 大多数覆盖率工具都支持。 3.2 函数出入口覆盖(Function Exits Coverage) 报告对函数的入口、出口和终止指令.覆盖情况统计。 据我所知,TestRT支持此覆盖。 3.3 调用覆盖(Call Coverage ) 这个度量报告是否你执行每个函数调用。前提是缺陷一般发生在模块的接口处。 也称呼为调用对覆盖(call pair coverage)。 据我所知,TestRT支持此覆盖。 3.4 线性代码顺序及跳转覆盖(Linear Code Sequence and Jump (LCSAJ) Coverage ) 这个是路径覆盖(path coverage )的一个变更。考虑到在源代码中只有子路径可以被容易的替,不需要一个流程图。一个LCSAJ 是一系列源代码线执行的序列。 优点是这个度量比判定覆盖测试的更彻底,而且避免了路径覆盖的指数级的难度。缺点是它不能避免不可实行的路径。 据我所知,LDRA TestBed支持此覆盖。 3.4.1 覆盖率的计算公式: 如下图所示: 一个LCSAJ是由以下四个特征的数量决定的。 A Start Point:可以是程序的开始或任何控制流跳转的目标的线。 A Linear Code Sequence:通过可以系列处理的控制流的代码体。可以由几个连续的基本块组成。 An End Point:The first line encountered from which a jump is made which has been reached from the start point by the unbroken linear sequence of code. A Target Point: The point to which the End Points control flow jump is made. This will be the Start Point of the next LCSAJ. Therefore, since the start point of the linear code sequence is a line which is the target of another jump, these fragments are also called jump-to-jump paths. 这个例子的计算此LCSAJ覆盖的分母就是11。 3.5 数据流覆盖(Data Flow Coverage ) 这是path coverage的一个变种,只是考虑到从变量的分配到后来的变量的引用的子分支。 好处是直接适当的报告程序处理的数据。一个缺点是不包含判定覆盖,另一个缺点是太复杂。很多的变量,用于计算的、用于判定的、局部的、全局的,如果有指针就更复杂。 3.6 目标代码分支覆盖(Object Code Branch Coverage ) 这个度量报告是否机器语言条件分支通过了分支。 这个度量给出的报告更多的是依赖编译器而不是程序结构。因为目标代码的结构和源程序的结构很不相似。而且,分支破坏了指令通道,编译起有时候避免产生一个分支,而替换为一个系列的无分支指令。 3.7 循环覆盖(Loop Coverage ) 这个度量报告你是否执行了每个循环体零次、只有一次还是多余一次(连续地)。对于do-while 循环,循环覆盖报告是否执行了每个循环体只有一次还是多余一次(连续地)。 这个度量的有价值的方面是确定是否对于while循环和for循环执行了多于一次,这个信息在其它的覆盖率报告中是没有的。 据我所知,GCT和rational TestRT可以执行这个度量。 3.8 竞争覆盖(Race Coverage) 这个度量报告是否多个线程在同一时间执行了同一块代码。它帮助检测资源的同步失败问题。对于多线程的程序例如操作系统程序非常有用。 据我所知,GCT可以执行这个度量。 3.9 比较操作符覆盖(Relational Operator Coverage) 这个度量报告是否对于比较操作符(, =, , =)是否发生了边界条件。假设边界条件测试用例发现了off-by-one errors ,并且 错误使用了比较操作符,例如把 用作了=。例如,考虑如下的C/C++ 代码: if (a b) statement; 比较操作符

文档评论(0)

ktj823 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档