判定覆盖和条件覆盖比较研究.docVIP

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

判定覆盖和条件覆盖比较研究   摘要:判定覆盖和条件覆盖是白盒测试中常用的方法,分析并得出结论:在具有短路特性的计算机语言编写的程序中,满足条件覆盖的测试用例是满足判定覆盖的,反之则不然。   关键词:白盒测试;逻辑覆盖法;判定覆盖;条件覆盖   中图分类号:TP301文献标识码:A文章编号:1672-7800(2011)01-0071-02         作者简介:王静(1975-),女,湖北武汉人,硕士,中南财经政法大学武汉学院信息系软件设计师,研究方向为现代农业装备设计与计算机测控。0引言    逻辑覆盖法是传统的白盒测试方法之一。逻辑覆盖法又可以分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖。    判定覆盖,也称为分支覆盖,它的基本思想是:设计若干测试用例,使被测程序中每个判定的取真分支和取假分支至少执行一次,即判断真假值均曾被满足。而条件覆盖的基本思想是:要编写足够的测试用例以确保将一个判断中的每个条件的可能结果至少执行一次。在梅尔斯的《软件测试的艺术》一文中提到“虽然条件覆盖准则乍看上去似乎满足了判定覆盖准则,但并不总是如此”。 并举例:“判断IF(AB),覆盖准则将要求编写两个测试用例:A为真,B为假;A为假,B为真,但是这并不能使IF语句中的THEN被执行。”,但不同的计算机语言各自有不同的特点,在类C的语言中,运算符“”和“||”具有“短路性”,也就是说如果左边的操作数已足以确定整个运算的结果,那么右边的操作数就不会参与运算。在这种情况下来讨论判定覆盖测试和条件覆盖测试的强弱。    当判定中只有一个条件时,判定覆盖和条件覆盖显然是等价的。    当判定是多个条件的组合时,要分别讨论 ,例如A、B两个条件(当然也可以有更多的条件,但它们都可以被分解成两个条件的组合),它们的组合只有两种形式,两个条件相与及相或。我们分别讨论。   1当复合条件是(A B)时    它们的结果如表1所示,可见只有在A、B皆为真时,结果才为真,所以在类C语言中,根据短路性,只要A为假,B就不会被执行,因为结果必为假,只有当A为真时,才会去执行B。   表1A在我们来讨论它的判定覆盖和条件覆盖。   1.1判定覆盖测试    用最少的测试用例来进行100%的判定覆盖,有如下两种情况:   表2测试用例(1)表3测试用例(2)ABA B111120-0ABA 判定为真时,要求A、B都为真,当判定为假时,只要其中一个为假就行了,在表2中,是A为假的情况,因为A为假,那么B这个条件的无所谓真假,因为已经可以确定判定为假,程序根本不会去判断B,B的假没有执行,这组测试用例显然没有满足条件覆盖;表3中,要执行判断B为假,那么A就必须为真。这样,其中A的假没有执行。由此所见,用最少的测试用例实现判定覆盖时,无论哪一种情况,判定覆盖都是不满足条件覆盖的。除非再添加测试用例。   1.2条件覆盖测试    用最少的测试用例来进行100%的条件覆盖,若希望A、B的真假都真正执行的话,那么A,B只能如表4中所示,此时,可以看到判定的真假都覆盖了。   由以上分析可得,当判定为两个条件相与的情况下,条件覆盖满足判定覆盖。   2当复合条件是(A || B)时    它们的结果如表5所示,可见只有A、B都为假时,结果才为假,只要有任一个为真,结果就为真。在类C语言中,根据短路性,只要A为真,B就不会再去执行判断,因为此时结果定为真,只有当A为假时,结果不明确才会再去执行和判断B。   表4测试用例(3)表5A||BABA B1111210030-001001111   2.1判定覆盖测试    用最少的测试用例实现100%的判定覆盖,有如下两种情况   表6测试用例(4)表7测试用例(5)ABA||B11-12000ABA||判定为假时,要求A、B都为假,当判定为真时,只要其中任有一个为真就行了(事实上,根据短路性也不会出现同时执行A、B为真的情况),在表6中,是A为真的情况,那么B这个条件就不会去执行和判断,因为此时判定已可确定为真;B的假没有执行判断;表7中,要执行B为真,那么A就必须为假。A的真始终没有执行;由此所见,想要用最少的测试用例来实现判定覆盖,无论哪一种情况,判定覆盖都没有包含条件覆盖。除非再添加测试用例。   2.2条件覆盖测试    用最少的测试用例来进行100%的条件覆盖,若希望A、B的真假都真正执行的话,那么A,B只能如表8中所示,此时,判定的真假都覆盖了。   表8测试用例(6)ABA||B1011200031-1 由以上分析可得,当判定为两个条件相或的情况下,条件覆盖满足判定

文档评论(0)

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

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

1亿VIP精品文档

相关文档