楠风测开复习日记 Day4
- 2026-10-03 13:21:21
楠风测开复习日记 Day4
黑盒 vs 白盒 vs 灰盒测试,一张图讲透
🧪 测试工程师必懂的概念 👉 Day 4 / 90 天 ⏱️ 阅读 8 分钟 | 建议收藏 ⭐
👋 朋友们好,我是楠风
Day 1 讲了测试工程师的 4 个阶段。
Day 2 讲了用例设计。
Day 3 讲了测试金字塔。
今天讲测试工程师必须搞懂的事:黑盒、白盒、灰盒测试。
我刚做测试的时候对这三个概念一知半解。直到做测试开发,要看代码、写自动化,才发现——这 3 种测试的思维完全不同。
📦 什么是黑盒测试
定义:不关心代码内部实现,只关心输入和输出。
思维模型:把自己当作用户。
黑盒测试 = 用户视角看到的是:界面、按钮、表单看不到的:代码、数据库、网络请求适用场景:
✅ 功能测试✅ UI 测试✅ 验收测试(UAT)实战:登录功能黑盒测试
- 输入正确 → 登录成功- 错误用户名 → 提示"用户名不存在"- 错误密码 → 提示"密码错误"- 用户名为空 → 提示"不能为空"- 连续输错 3 次 → 锁定账号优缺点:
✅ 不需要懂代码,入门门槛低✅ 站在用户视角,能发现体验问题❌ 覆盖率难统计❌ 漏测时无法定位代码位置💻 什么是白盒测试
定义:打开"盒子",看代码内部逻辑,针对代码设计测试。
思维模型:把自己当作开发者。
白盒测试 = 开发者视角看到的是:代码逻辑、分支、循环、变量适用场景:
✅ 单元测试✅ 代码覆盖率测试✅ Code Review✅ 静态代码分析实战:登录密码强度校验
defcheck_password_strength(password):iflen(password) < 8:return"weak"ifnotany(c.isdigit() for c in password):return"weak"ifnotany(c.isalpha() for c in password):return"weak"return"strong"白盒测试用例(基于代码路径):
- 长度 < 8 → "weak"- 长度 >= 8,无数字 → "weak"- 长度 >= 8,有数字,无字母 → "weak"- 长度 >= 8,有数字,有字母 → "strong"代码覆盖率:100%优缺点:
✅ 覆盖率可量化✅ 能发现代码深处的 bug❌ 需要懂代码,入门门槛高❌ 不关注用户体验🔌 什么是灰盒测试
定义:介于黑盒和白盒之间,既关注输入输出,又关注部分内部逻辑。
思维模型:把自己当作"半个开发者 + 半个用户"。
灰盒测试 = 半个开发者视角看到的是:API 文档 + 部分代码逻辑适用场景:
✅ 接口自动化测试✅ API 集成测试✅ 性能测试✅ 安全测试实战:API 灰盒测试
接口:POST /api/login请求:{"username": "test", "password": "123456"}测试用例:- 正常登录 → 返回 200 和 token- 用户名错 → 返回 401- 密码错 → 返回 401- 密码是 MD5 → 返回 200(看后端)- SQL 注入 → 返回 400- 并发 100 → 全部成功优缺点:
✅ 兼顾功能和代码✅ 自动化效率高❌ 需要懂部分代码📊 3 种测试的对比(一张图)
┌──────────┬──────────┬──────────┬──────────┐│ 维度 │ 黑盒测试 │ 白盒测试 │ 灰盒测试 │├──────────┼──────────┼──────────┼──────────┤│ 视角 │ 用户 │ 开发者 │ 半个用户 ││ 懂代码 │ 不需要 │ 需要 │ 部分需要 ││ 入门难度 │ 低 │ 高 │ 中 ││ 自动化效率 │ 低 │ 高 │ 中 ││ 维护成本 │ 高 │ 低 │ 中 ││ 适合人群 │ 功能测试 │ 测试开发│ 测试开发 │└──────────┴──────────┴──────────┴──────────┘核心区别:
黑盒:不看代码白盒:只看代码灰盒:又看又看,但都看一点🎯 3 种测试的实战对比
同一功能:用户登录
黑盒测试(从用户角度):
- 输入用户名密码 → 登录成功- 密码错 → 提示"密码错误"白盒测试(从代码角度):
- check_password 函数 4 个分支都覆盖- 密码校验逻辑覆盖率 100%灰盒测试(从接口角度):
- POST /api/login 各种场景- 看 API 返回值 + 部分后端处理🛤️ 测试工程师应该学哪种?
🌱 阶段 1:功能测试(0-1 年)
重点学黑盒测试
理由:入门门槛低,先把业务和用例设计搞扎实技能:测试用例设计、缺陷跟踪、需求分析🌿 阶段 2:自动化测试(1-3 年)
重点学灰盒测试
理由:接口自动化性价比最高技能:Python、requests、pytest、CI/CD🌳 阶段 3:测试开发(3-5 年)
重点学白盒测试 + 灰盒测试
理由:要能看懂代码、参与 code review、推动单元测试技能:Java/Python、单元测试框架、代码覆盖率核心建议:
3 种都要会,但深耕 1 种。🛠️ 楠风的经验
我做测试 5 年,3 种测试都做过。
实战路径:
2019 年:黑盒测试 → 学业务、写用例2020 年:灰盒测试 → Python + requests2021 年:白盒测试 → 推动开发 + 测试自己写2022 年:3 种融合 → 测试平台开发真实数据:
掌握 3 种测试后:- bug 发现率提升 50%- 测试效率提升 30%- 团队协作更顺畅(能看懂开发的代码)✅ 3 个月行动清单
🎯 今天
□ 评估自己当前在哪一阶段□ 找出自己最薄弱的那种测试🎯 本周
□ 学 1 种最薄弱测试的核心方法□ 在工作中找 1 个功能练手🎯 90 天
□ 黑盒:能写出高质量用例□ 灰盒:能写接口自动化脚本□ 白盒:能看懂代码、写单元测试□ 成为团队里"3 种都会"的测试工程师📝 写在最后
3 种测试不是对立关系,是互补关系。
黑盒:看用户做了什么白盒:看代码怎么实现灰盒:看接口怎么交互3 种都懂,才能测得全面、写得扎实。
希望这篇文章能帮你看清 3 种测试的本质。
💬 评论区聊聊
你现在主攻哪种测试?
有没有想转型的方向?
我会尽量回复。
📚 关于楠风测开
我是楠风,5 年测试工程师,做测试平台方向。
🔧 自研 4 端测试平台:Web / 接口 / Android / PC 📝 写测试工程师成长日记
AI 重塑测试,一个人就是一个团队
🔗 找到楠风
📱 公众号:楠风测开(同名)🌐 知乎 / 掘金 / CSDN:搜索"楠风测开"💬 想进测试圈交流群:加我微信备注「测试」📅 下期预告
Day 5 · 测试用例评审 10 个必查点→ 关注不迷路,建议收藏 ⭐如果这篇文章对你有帮助:
🌟 点赞 + 在看 + 转发🌟 关注公众号「楠风测开」(同名)🌟 加我微信(备注"测试",进测试圈交流群)🌱 楠风测开 · 测试工程师复习日记 Day 4 / 90 天 全文 3000 字 | 阅读 8 分钟
【免责声明】本文为楠风测开原创,转载请联系作者授权。
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。