判定覆盖和条件覆盖的比较研究

判定覆盖和条件覆盖的比较研究

摘要:判定覆盖和条件覆盖是白盒测试中常用的方法,分析并得出结论:在具有短路特性的计算机语言编写的程序中,满足条件覆盖的测试用例是满足判定覆盖的,反之则不然。

关键词:白盒测试;逻辑覆盖法;判定覆盖;条件覆盖

逻辑覆盖法是传统的白盒测试方法之一。逻辑覆盖法又可以分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖。

判定覆盖,也称为分支覆盖,它的基本思想是:设计若干测试用例,使被测程序中每个判定的取真分支和取假分支至少执行一次,即判断真假值均曾被满足。而条件覆盖的基本思想是:要编写足够的测试用例以确保将一个判断中的每个条件的可能结果至少执行一次。在梅尔斯的《软件测试的艺术》一文中提到“虽然条件覆盖准则乍看上去似乎满足了判定覆盖准则,但并不总是如此”。 并举例:“判断IF(A&B),覆盖准则将要求编写两个测试用例:A为真,B为假;A为假,B为真,但是这并不能使IF语句中的THEN被执行。”,但不同的计算机语言各自有不同的特点,在类C的语言中,运算符“&&”和“||”具有“短路性”,也就是说如果左边的操作数已足以确定整个运算的结果,那么右边的操作数就不会参与运算。在这种情况下来讨论判定覆

盖测试和条件覆盖测试的强弱。

当判定中只有一个条件时,判定覆盖和条件覆盖显然是等价的。

当判定是多个条件的组合时,要分别讨论 ,例如A、B两个条件(当然也可以有更多的条件,但它们都可以被分解成两个条件的组合),它们的组合只有两种形式,两个条件相与及相或。我们分别讨论。

1当复合条件是(A && B)时

它们的结果如表1所示,可见只有在A、B皆为真时,结果才为真,所以在类C语言中,根据短路性,只要A为假,B就不会被执行,因为结果必为假,只有当A为真时,才会去执行B。

表1A&&B01000101现在我们来讨论它的判定覆盖和条件覆盖。

1.1判定覆盖测试

用最少的测试用例来进行100%的判定覆盖,有如下两种情况:

表2测试用例(1)表3测试用例(2)ABA && B111120-0ABA && B11112100当判定为真时,要求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||B10112000当判定为假时,要求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 由以上分析可得,当判定为两个条件相或的情况下,条件覆盖满足判定覆盖。 3结束语

从上面的分析中,我们可以得出结论:在具有短路特性的编程语言编写的程序中,进行逻辑覆盖测试时,条件覆盖测试用例是满足判定覆盖测试的,反之则不然。在这种情况下条件覆盖的测试强度高于判定覆盖。

虽然并非所有的编程语言都有这种短路的特性,可事实上许多的测试初学者在学习判定覆盖和条件覆盖,以及用这两种方法设计测试用例时往往忽略了部分语言的这种特性,而是以点就面地针对所有编程语言编写的程序,导致设计出来的测试用例质

量不高。所以在测试中保持严谨的态度,具体问题具体分析才能设计出高效的测试用例。

参考文献:

[1][美]梅尔斯,等.软件测试的艺术[M].王峰,陈杰,译.北京:机械工业出版社,2006.

[2]吴晓周.软件测试综述[J].软件导刊,2009(5).

Decision Coverage VS Condition coverage

Abstract:Decision Coverage and condition coverage is white-box testing the commonly used method, analyzed and concluded: in with short circuit characteristics of computer language program, satisfy the conditions coverage of test cases is to satisfy decision Coverage , conversely otherwise.

Key Words: White-Box Test; Logic-coverage Testing; Decision Coverage; Condition Coverage

判定覆盖和条件覆盖的比较研究

摘要:判定覆盖和条件覆盖是白盒测试中常用的方法,分析并得出结论:在具有短路特性的计算机语言编写的程序中,满足条件覆盖的测试用例是满足判定覆盖的,反之则不然。

关键词:白盒测试;逻辑覆盖法;判定覆盖;条件覆盖

逻辑覆盖法是传统的白盒测试方法之一。逻辑覆盖法又可以分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖。

判定覆盖,也称为分支覆盖,它的基本思想是:设计若干测试用例,使被测程序中每个判定的取真分支和取假分支至少执行一次,即判断真假值均曾被满足。而条件覆盖的基本思想是:要编写足够的测试用例以确保将一个判断中的每个条件的可能结果至少执行一次。在梅尔斯的《软件测试的艺术》一文中提到“虽然条件覆盖准则乍看上去似乎满足了判定覆盖准则,但并不总是如此”。 并举例:“判断IF(A&B),覆盖准则将要求编写两个测试用例:A为真,B为假;A为假,B为真,但是这并不能使IF语句中的THEN被执行。”,但不同的计算机语言各自有不同的特点,在类C的语言中,运算符“&&”和“||”具有“短路性”,也就是说如果左边的操作数已足以确定整个运算的结果,那么右边的操作数就不会参与运算。在这种情况下来讨论判定覆

盖测试和条件覆盖测试的强弱。

当判定中只有一个条件时,判定覆盖和条件覆盖显然是等价的。

当判定是多个条件的组合时,要分别讨论 ,例如A、B两个条件(当然也可以有更多的条件,但它们都可以被分解成两个条件的组合),它们的组合只有两种形式,两个条件相与及相或。我们分别讨论。

1当复合条件是(A && B)时

它们的结果如表1所示,可见只有在A、B皆为真时,结果才为真,所以在类C语言中,根据短路性,只要A为假,B就不会被执行,因为结果必为假,只有当A为真时,才会去执行B。

表1A&&B01000101现在我们来讨论它的判定覆盖和条件覆盖。

1.1判定覆盖测试

用最少的测试用例来进行100%的判定覆盖,有如下两种情况:

表2测试用例(1)表3测试用例(2)ABA && B111120-0ABA && B11112100当判定为真时,要求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||B10112000当判定为假时,要求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 由以上分析可得,当判定为两个条件相或的情况下,条件覆盖满足判定覆盖。 3结束语

从上面的分析中,我们可以得出结论:在具有短路特性的编程语言编写的程序中,进行逻辑覆盖测试时,条件覆盖测试用例是满足判定覆盖测试的,反之则不然。在这种情况下条件覆盖的测试强度高于判定覆盖。

虽然并非所有的编程语言都有这种短路的特性,可事实上许多的测试初学者在学习判定覆盖和条件覆盖,以及用这两种方法设计测试用例时往往忽略了部分语言的这种特性,而是以点就面地针对所有编程语言编写的程序,导致设计出来的测试用例质

量不高。所以在测试中保持严谨的态度,具体问题具体分析才能设计出高效的测试用例。

参考文献:

[1][美]梅尔斯,等.软件测试的艺术[M].王峰,陈杰,译.北京:机械工业出版社,2006.

[2]吴晓周.软件测试综述[J].软件导刊,2009(5).

Decision Coverage VS Condition coverage

Abstract:Decision Coverage and condition coverage is white-box testing the commonly used method, analyzed and concluded: in with short circuit characteristics of computer language program, satisfy the conditions coverage of test cases is to satisfy decision Coverage , conversely otherwise.

Key Words: White-Box Test; Logic-coverage Testing; Decision Coverage; Condition Coverage


相关内容

  • 专利侵权判定原则.
  • 专利侵权判定原则 . 专利侵权判定一直是各国司法实践中的一个难点问题.专利侵权判定和判 断合同违约不一样,合同有相应的合同条款,可操作性比较强,而专利侵权判 定需要与权利要求书做比较,被控产品方案很多情况下与权利要求书都是不一 致的,不一致达到什么程度构成侵权,不一致达到什么程度不构成侵权,这是 一 ...

  • 软件测试规程
  • 受控状态(章): 受控号: ******************有限公司 软件测试规程 文件编号: &&&&&&&/TE82402-2013 文件版本: V1.0 ________________________________________ ...

  • 软件工程导论张海藩第5版pdf解密版
  • 第一章 z 软件工程方法学(3个要素) :通常把软件生命周期全过程中使用的一整套技术方法的集合称为方法学, 也称范型.三要素:方法.工具和过程. z 软件生命周期模型 – 瀑布模型:优点:1.可强迫开发员采用规范的方法2.严格地规定了每个阶段必须提交的文件3.要求每 个阶段交出的所有产品都必须经过质 ...

  • 软件测试知识点总结
  • 软件测试知识点总结 第一次课10.7软件测试概述 一 软件测试定义:使用人工或者自动的手段来运行或测定它是 否满足规定的需求,或弄预期结果与实际结果之间的差别. 二 软件测试的分类 1.按照开发阶段划分 a) 单元测试:模块测试,检查每个程序单元嫩否正确实现详细 设计说明中的模块功能等. b) 集成 ...

  • 如何判定专利侵权
  • 如何鉴定专利侵权 来源:发表时间:2016年08月28日浏览:6745 次 专利申请专利实施专利保护专利转让 专利侵权判定一直是各国司法实践中的一个难点问题,专利侵权首先需要对侵权行为进行认定,那么如何鉴定专利侵权呢?接下来由华律网的小编为大家整理了一些关于这方面的知识,欢迎大家阅读! 如何鉴定专利 ...

  • 软件工程基本概念
  • 软件工程基本概念 考点1 软件的定义与软件特点 1软件的组成 软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序.数据和相关的文档. 软件由两部分组成: (1)机器可执行的程序和数据: (2)与软件开发.运行.维护及使用等有关的文档. 2软件的特点 软件具有如下特点: (1)软件是逻辑产品,而 ...

  • 软件工程重点知识
  • 第1章软件工程学概述 1.1软件危机 概念:指在计算机软件的开发和维护过程中所遇到的一系列严重问题.实际上,几乎所有软件都不同程度地存在这些问题. 原因: 1. 与软件本身的特点有关.1)软件不同于硬件,缺乏"可见性",它是计算机系统的逻辑部件而不是物理部件.2)软件不同于一般程 ...

  • 1软件测试的目的是(
  • 一.选择题 1.软件测试的目的是( ). A)试验性运行软件 B)发现软件错误 C)证明软件正确 D)找出软件中全部错误 2.软件测试中白盒法是通过分析程序的( )来设计测试用例的. A)应用范围 B)内部逻辑 C)功能 D)输入数据 3.黑盒法是根据程序的( )来设计测试用例的. A)应用范围 B ...

  • 软件工程导论(第五版)课后习题答案
  • <软件工程导论>课后习题答案 第一章 软件工程概论 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.这些问题表现在以下几个方面: (1)用户对开发出的软件很难满意. (2)软件产品的质量往往靠不住. (3)一般软件很难维护. (4)软件生产效率很低 ...