白盒测试中语句覆盖和分支覆盖的测试用例出现不同数目

好的,明白了你的需求!这里我将提供一个能保证 语句覆盖分支覆盖 测试用例出现不同数量的例子。在这个例子中,我们将看到语句覆盖和分支覆盖需要的测试用例数目不同。

示例代码:

def example(x, y):
    if x > 0:       # 语句1
        print("x is positive")   # 语句2
        if y > 0:   # 语句3
            print("y is positive")   # 语句4
        else:
            print("y is non-positive")  # 语句5
    else:
        print("x is non-positive")  # 语句6
    print("End of function")  # 语句7

分析

  1. 语句

    • 语句1if x > 0,这是条件判断语句。
    • 语句2print("x is positive"),当 x > 0 时执行。
    • 语句3if y > 0,这是条件判断语句,嵌套在 x > 0 的条件内。
    • 语句4print("y is positive"),当 y > 0 时执行。
    • 语句5print("y is non-positive"),当 y <= 0 时执行。
    • 语句6print("x is non-positive"),当 x <= 0 时执行。
    • 语句7print("End of function"),不管条件如何,都会执行。
  2. 分支

    • 分支1if x > 0,需要测试 TrueFalse 分支。
    • 分支2if y > 0,需要测试 TrueFalse 分支,但它只在 x > 0True 时才有效。

测试用例设计

为了保证语句覆盖和分支覆盖的测试用例出现不同数量,我们设计以下两个测试用例。

测试用例 1example(1, 1)
  • 执行流程

    • x > 0True,执行 print("x is positive")(语句2)。
    • y > 0True,执行 print("y is positive")(语句4)。
    • print("End of function") 执行(语句7)。
  • 覆盖情况

    • 覆盖了 语句1, 2, 3, 4, 7
    • 覆盖了 分支1(x > 0 为 True)分支2(y > 0 为 True)
测试用例 2example(-1, 0)
  • 执行流程

    • x > 0False,执行 print("x is non-positive")(语句6)。
    • print("End of function") 执行(语句7)。
  • 覆盖情况

    • 覆盖了 语句1, 6, 7
    • 覆盖了 分支1(x > 0 为 False),但没有触发 分支2 因为 x > 0False
测试用例 3example(1, -1)
  • 执行流程

    • x > 0True,执行 print("x is positive")(语句2)。
    • y > 0False,执行 print("y is non-positive")(语句5)。
    • print("End of function") 执行(语句7)。
  • 覆盖情况

    • 覆盖了 语句1, 2, 3, 5, 7
    • 覆盖了 分支1(x > 0 为 True)分支2(y > 0 为 False)

总结

覆盖标准需要的测试用例数覆盖的内容
语句覆盖2覆盖了所有语句:语句1, 2, 3, 4, 5, 6, 7
分支覆盖3覆盖了所有分支:分支1和分支2的True和False

分析

  • 语句覆盖:我们需要 2 个测试用例 来确保每条语句都至少执行一次:

    • 测试用例 1 覆盖了 x > 0Truey > 0True 的情况。
    • 测试用例 2 覆盖了 x <= 0True 的情况。

    通过这两个测试用例,代码中的所有语句都得到了执行。

  • 分支覆盖:为了确保每个条件的 True 和 False 分支都得到测试,我们需要 3 个测试用例

    • 测试用例 1 覆盖了 x > 0Truey > 0True
    • 测试用例 2 覆盖了 x > 0False,但没有触发 y > 0 的测试(因为在 x > 0False 时,y > 0 不再执行)。
    • 测试用例 3 覆盖了 x > 0Truey > 0False

通过这三个测试用例,确保了每个分支的 True 和 False 都被测试到了。

结论

  • 语句覆盖分支覆盖的测试用例数目可以不同。通过这个例子,我们可以看到:
    • 语句覆盖只需要 2 个测试用例。
    • 分支覆盖需要 3 个测试用例,才能确保每个条件的 True 和 False 分支都被测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值