超越语法树的条件判定条件覆盖最小测试用例集的生成.docxVIP

超越语法树的条件判定条件覆盖最小测试用例集的生成.docx

  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文档。上传文档
查看更多
超越语法树的条件判定条件覆盖最小测试用例集的生成 1 c/dc与测试集、测试内容 改进的条件评估(mc-d)是大多数软件覆盖测试参考的之一。根据评估条件覆盖(c-d),它是发展起来的。然而,它在测试应用的方法、相应的测试组、测试的覆盖范围和目的上比c-c1d有很多改善。与其他结构的覆盖准则相比,MC/DC具有很多优点,它继承多重条件覆盖的优点,同时只是线性增加了测试用例的数量,并且对操作数及非等式条件变化反应敏感,还可以得到理想的目标代码覆盖率。近年来,MC/DC得到了广泛的应用。本文针对MC/DC测试用例的生成方法进行探讨,介绍了一种快速生成测试用例的算法思想及过程,并与其他算法在生成空间以及时间上进行了比较。 2 测试集合的确定 条件、判定是描述软件结构和控制流的基本元素,也是软件测试过程中重点测试的对象。 条件:不包含逻辑操作符的逻辑表达式。仅由关系操作符(,,=等)构成的逻辑表达式属于条件。 判定:由条件及零个或多个逻辑操作符(如and,or,not,xor)组成的逻辑表达式。如果一个判定中的某一条件多次出现,那么其每次出现均为不同的条件。 对程序中条件和判定测试充分性的不同造成了不同的软件测试准则,有SC,CC,DC,C/DC,MC/DC,MCC等,但这些准则的覆盖等级都不一样,其中,MC/DC以多重条件覆盖、线性增加测试用例数量等特点而受到重视。航空电子标准RTCA/DO-178B的A级认证要求程序的每一行代码都要进行MC/DC覆盖测试。 MC/DC要求判定中每一个条件的所有可能结果至少出现1次,每一个判定本身的所有结果也至少出现1次,每个入口与出口点至少被唤醒1次,并且每个条件都能单独影响判定的结果,即在其他条件不变的情况下,改变这个条件的值,使得判定结果改变。 对于一个具有N个条件的布尔表达式,测试集合中至少包括N+1组元素。设计条件独立的影响结果的最小测试用例集(最小真值表)通常有唯一原因法、屏蔽法和最小真值表法3种方法。唯一原因法仅关心条件值和判定结果可以改变,而其他条件必须固定;屏蔽法对一个逻辑操作符的特定输入能隐藏对该操作符的其他输入的影响;最小真值表法结合前2个方法的思想,将原始的布尔表达式转换为逆波兰式,归约得到从原始的布尔表达式到最小化测试集合的算法。 本文融合最小真值表法与布尔表达式的树型结构思想,设计了一个快速生成测试用例集的算法,该算法本身并不对布尔表达式进行任何转化,而是直接从原始的布尔表达式得出最小化测试用例集。 3 快速生成算法 3.1 左子树单独影响判定结果的2组及两种典型模式 任何一个布尔表达式都可以归结为一个抽象语法树,其中,树的叶节点为布尔表达式的条件,树的分支节点为布尔表达式的判定。对于布尔表达式AB||C,其抽象语法树如图1所示。分析此语法树,要使其左子树的结果(不管具有多少个叶节点)能单独地影响判定的结果,必须使其右子树的结果尽可能少影响判定的结果。对于根节点为的子树来说,只有其右子树的结果为1,才能满足其左子树单独地影响判定结果。对于根节点为||的子树,其右子树的结果为0才能满足其左子树能够单独地影响判定结果。在某种意义上,抽象语法树所有右子树的判定结果已经被根节点的判定限制了。 在所有节点都尽可能被限制的情况下,整个抽象语法树只有最左节点没有被限制,因为最左节点不属于任何右子树。那么在除最左节点外的所有节点都被限制的情况下,最左节点便是单独影响判定结果的那个节点,此时可生成最左节点单独影响判定结果的2组用例。同理,影响每个子树判定结果的便是每个子树的最左节点。 对于每棵语法树来说,置换左右子树,其判定结果不受影响。此时,以前根节点所制约的右子树的最左节点变成了此树的最左节点,而以前左子树的最左节点便由根节点的判定情况所制约,并且不管根节点的判定如何制约,所生成的2组用例中必定有1组包含于置换前生成的2组测试用例集中(2个最左节点用例相同的那组)。这样把每个子节点都置换为最左节点1次,每个节点都可以单独地影响判定结果。 在算法实现的过程中,可根据布尔表达式与语法树对应特征(叶子节点都为条件,分支节点都为判定)绕过语法树直接对布尔表达式进行归约。 3.2 条件的前置条件和默示判断 当前条件:当前独立影响判定结果的条件。 直接判定:条件的直接判定为条件之前离条件最近的判定,对应于语法树中父节点的判定。一个条件的直接判定将直接影响该条件用例的选取结果。第1个条件对应于语法树中的最左子树,其前面不可能出现任何判定,因此,第1个条件没有直接判定。 前置条件:条件的前置条件由条件的直接判定确定:若直接判定之前为一个条件,则此条件就是直接判定的前置条件;若直接判定前为条件判定组合,则此组合的第1个条件为前置条件。前置条件对应于语法树中直接判定的左子树的最左节点。与直接判定一样,第1

文档评论(0)

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

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

1亿VIP精品文档

相关文档