逻辑覆盖法笔记

概念        

逻辑覆盖是一种以程序内部逻辑结构为基础的设计测试用例的技术,属于白盒测试的一种。它通过对程序逻辑结构的遍历实现程序的覆盖,是一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试。

根据覆盖目标的不同和覆盖源程序语句的详尽程度,逻辑覆盖可以分为多种类型,包括但不限于:

1. 语句覆盖(SC):设计若干个测试用例,运行被测程序,使得程序中每一可执行语句至少执行一次。这种覆盖方式主要发现缺陷或错误语句。
2. 判定覆盖(DC):设计若干测试用例,运行被测程序,使得每个判定的取真分支和取假分支至少执行一次。有时也称分支覆盖。
3. 条件覆盖(CC):选择足够多的测试数据,不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。
4. 判定/条件覆盖(C/DC):选择足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的值。
5. 条件组合覆盖(MCC):选择足够多的测试数据,使得每个判定表达式中的条件的各种可能组合都至少出现一次。
6. 路径覆盖:选择足够多的测试数据,使程序的每条可能路径都至少执行一次(如果程序中有环,则要求每个环至少经过一次)。

这些逻辑覆盖标准发现错误的能力呈由弱至强的变化。其中,语句覆盖的覆盖程度最低,只能保证程序中的每个语句都被执行过;而路径覆盖的覆盖程度最高,能够测试到程序中所有可能的执行路径。

在实际测试中,可以根据项目的需求和资源情况选择合适的逻辑覆盖标准进行测试。同时,为了提高测试效率和质量,还可以使用逻辑覆盖测试工具进行自动化测试。这些工具可以自动生成测试用例、执行测试用例、收集测试结果和覆盖信息,并生成详细的测试报告。

示例

当涉及到逻辑覆盖法的例子时,我们可以使用一个简单的示例程序来演示不同的覆盖方法。以下是一个简单的示例程序,我们将为其编写测试用例以实现不同的逻辑覆盖。

示例程序:

def is_valid_triangle(a, b, c):
    # 判定条件1: 三边之和大于0
    if a + b + c > 0:
        # 判定条件2: 任意两边之和大于第三边
        if a + b > c and a + c > b and b + c > a:
            return True
    return False

测试用例设计:

1. 语句覆盖(SC)

为了确保每个语句都至少执行一次,我们可以设计以下测试用例:

* 测试用例1:`(3, 4, 5)`(所有语句都被执行,返回True)

2. 判定覆盖(DC)

为了确保每个判定的取真分支和取假分支都至少执行一次,我们可以设计以下测试用例:

* 测试用例1:`(3, 4, 5)`(两个判定都为真,返回True)
* 测试用例2:`(1, 2, 7)`(第一个判定为真,第二个判定为假,返回False)
* 测试用例3:`(-1, -2, -3)`(第一个判定为假,无需执行第二个判定,返回False)

3. 条件覆盖(CC)

为了确保判定表达式中的每个条件都取到各种可能的结果,我们可以设计以下测试用例:

* 测试用例1:`(3, 4, 5)`(所有条件都为真)
* 测试用例2:`(1, 7, 1)`(`a + b > c` 为假,其他条件为真)
* 测试用例3:`(7, 1, 1)`(`a + c > b` 为假,其他条件为真)
* 测试用例4:`(1, 1, 7)`(`b + c > a` 为假,其他条件为真)

注意:条件覆盖通常不单独使用,因为它可能无法覆盖所有的路径。

4. 判定/条件覆盖(C/DC)

为了确保每个判定表达式中的每个条件都取到各种可能的结果,并且每个判定表达式也都取到各种可能的值,我们可以使用判定覆盖的测试用例(因为在这个例子中,判定覆盖已经包含了条件覆盖的所有情况)。

5. 路径覆盖

为了确保程序的每条可能路径都至少执行一次,我们可以设计以下测试用例:

* 测试用例1:`(3, 4, 5)`(所有条件都为真,返回True)
* 测试用例2:`(1, 2, 7)`(第一个判定为真,但由于不满足三角形条件,返回False)
* 测试用例3:`(-1, -2, -3)`(第一个判定为假,无需执行第二个判定,返回False)

注意:在这个简单的例子中,由于逻辑较为简单,所以路径覆盖的测试用例与判定覆盖的测试用例相似。但在更复杂的程序中,路径覆盖可能会涉及更多的测试用例。

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值