一、划分依据
依据测试人员是否能够获取源代码、是否研究程序内部逻辑划分:黑盒测试、白盒测试、灰盒测试。
1. 黑盒测试
定义
把软件当作黑色盒子,不看内部源代码,只给定输入,观察输出结果是否符合预期,只关注功能表现。
示例代码(Python)
python
运行
# 简易登录校验 def login(username, password): if username == "admin" and password == "123456": return "登录成功" else: return "账号或密码错误"黑盒测试思路(不需要看懂 if 代码)
只设计输入,观察返回值:
- 输入 username="admin", password="123456" → 预期:登录成功
- 输入 username="admin", password="666666" → 预期:账号或密码错误
- 输入 username="", password="" → 预期:账号或密码错误
✅特点:不用理解代码逻辑,站在用户视角 ❌缺点:无法覆盖内部分支隐藏问题
2. 白盒测试
定义
拿到完整源码,分析代码分支、循环、条件,保证代码每一条执行路径都被覆盖。 沿用上方登录代码:
python
运行
def login(username, password): if username == "admin" and password == "123456": return "登录成功" else: return "账号或密码错误"白盒测试思路(读懂代码结构)
代码存在 2 条分支: 分支 1:账号密码全部匹配 分支 2:任意一项不匹配 设计用例覆盖两条路径:
- 合法账号密码 → 走分支 1
- 密码错误 → 走分支 2
拓展示例(多分支场景)
python
运行
def get_vip(consume): if consume > 1000: return "VIP会员" else: return "普通用户"白盒必须测试临界点:consume=999、consume=1001,覆盖两条分支。
✅优点:覆盖底层逻辑,找到代码缺陷 ❌缺点:需要看懂代码,成本高
3. 灰盒测试
定义
不完整阅读全部源码;同时操作功能 + 查看接口、数据库、日志,互联网主流测试方式。 测试场景:调用登录函数(接口) 流程:
- 执行
login("admin","123456")【黑盒:看返回信息】 - 额外查看:数据库是否记录登录时间、接口请求参数是否正常
只关注数据流转,不需要逐行阅读后端全部源码
✅特点:兼顾效率与深度,企业最常用