白盒测试用例设计方法

假设我们有以下待测试程序 :

python 复制代码
def func(a, b, x):
    if a > 1 and b == 0:
        x = x / a
    if a == 2 or x > 1
        x = x + 1
    return x

语句覆盖

语句覆盖:每条语句至少执行一次。

使用此准则测试上述函数, 只需要遍历路径 ace, 即可使得所有语句执行一次。

对应测试用例为 : a = 2, b = 0, x = 4

判定覆盖

判定覆盖:又叫分支覆盖, 每个判定的所有可能结果至少出现一次。

只需要涵盖路径 aceabd, 或 acdabe, 就可以使得两个判定为 "真" 和 "假" 的分支都执行一次。

前者 :

  • a = 2, b = 0, x = 4 -> ace √ √
  • a = 0, b = 1, x = 1 -> abd × ×

后者 :

  • a = 2, b = 0, x = 1 -> acd √ ×
  • a = 2, b = 1, x = 2 -> abe × √

条件覆盖

条件覆盖:每个条件的所有可能结果至少执行一次。

第一个判断的所有条件的可能取值情况 : a > 1 a > 1 a>1 或 a ≤ 1 a \leq 1 a≤1, b = 0 b = 0 b=0 或 b ≠ 0 b \neq 0 b=0。

第二个判断的所有条件的可能取值情况 : a = 2 a = 2 a=2 或 a ≠ 2 a \neq 2 a=2, x > 0 x > 0 x>0 或 x ≤ 1 x \leq 1 x≤1。

  • a = 1, b = 0, x = 3 : 触发 a ≤ 1 a \leq 1 a≤1 和 b = 0 b=0 b=0 和 a ≠ 2 a \neq 2 a=2 和 x > 1 x > 1 x>1。(出于简单起见, 这里不考虑逻辑中断的发生)

  • a = 2, b = 1, x = 1 : 触发 a > 1 a > 1 a>1 和 b ≠ 0 b \neq 0 b=0 和 a = 2 a = 2 a=2 和 x ≤ 1 x \leq 1 x≤1。

组合覆盖

组合覆盖:每个判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。(注意"可能"二字,因为有些组合的情况难以生成。)

为了满足组合条件覆盖的测试用例, 必须覆盖以下八种组合。

  • a = 2, b = 0, x = 4 : 覆盖 1 + 5
  • a = 2, b = 1, x = 1 : 覆盖 2 + 6
  • a = 1, b = 0, x = 2 : 覆盖 3 + 7
  • a = 1, b = 1, x = 1 : 覆盖 4 + 8
相关推荐
花椒技术1 天前
AI Coding 后半程:6 类 QA Skills 如何接住测试与发布?
单元测试·ai编程·测试
凉凉的知识库2 天前
用 GPT-5.6 SOL 写了个 VS Code 插件,效果出乎意料
api·测试·visual studio code
eaglewgs2 天前
从软件测试角度聊聊“Prompt / Context / Harness区别”
测试开发·ai·测试·大模型应用·agent应用
aoi4 天前
如何让 Playwright 自动化测试的显示鼠标?—— 注入式 Mouse Helper 实践
测试
名字还没想好☜4 天前
用 pytest fixture 组织可维护的测试:告别一堆重复的 setUp
数据库·python·oracle·pytest·测试
晚风吹长发5 天前
探索软件测试——用例篇
大数据·linux·服务器·压力测试·测试·测试方法
刘棕霆5 天前
企业测试造数为什么这么难?我把熟手经验做成了一个可交付的造数 Skill
aigc·agent·测试
一孤程5 天前
AI辅助测试用例生成实战——用大模型把测试设计效率提升300%
人工智能·测试工具·ai·aigc·测试用例·测试·测试覆盖率
不能只会打代码5 天前
Day 002 — Python 工程化 & FastAPI & 数据库速通
数据库·redis·python·docker·fastapi·测试
狂师6 天前
还在手写测试报告?推荐一款 AI 测试Skill:只需一句指令,自动生成专业定制化测试报告!
人工智能·测试·全栈