您现在的位置是:知识 >>正文
黑盒测试和白盒测试的概念
知识56人已围观
简介我见过太多开发人员拍着胸脯说“我写的代码没问题”,结果上线三天就被用户骂得狗血淋头。问题出在哪?多半是测试没做到位。而测试这行当里,最基础也最容易被误解的两个概念,就是黑盒和白盒。 黑盒测试,说白了就 ...
我见过太多开发人员拍着胸脯说“我写的黑盒和白盒测代码没问题”,结果上线三天就被用户骂得狗血淋头。测试问题出在哪?概念多半是测试没做到位。而测试这行当里,黑盒和白盒测最基础也最容易被误解的测试两个概念,就是概念黑盒和白盒。
黑盒测试,黑盒和白盒测说白了就是测试把软件当成一个不透明的箱子。你不管里面怎么运作,概念只看你输入什么,黑盒和白盒测它输出什么。测试就像你点外卖,概念你只关心下单后饭能不能送到,黑盒和白盒测至于厨房里是测试炒是炸,跟你没关系。概念测试人员拿着需求文档,按用户的操作习惯去点、去输、去提交,发现结果跟预期不符,那就是bug。
这种测试的好处在于,它完全站在用户视角。用户不懂代码,他们只关心“我点了支付,钱扣了,但订单没生成”——这种问题在黑盒测试里很容易暴露。我见过一个电商项目,开发自己测得好好的,黑盒测试一跑,发现用同一个账号同时登录两台设备,旧设备还能看到已删除的订单。这种逻辑漏洞,光看代码是看不出来的,得靠黑盒去模拟真实场景。
但黑盒测试也有它的盲区。它只能验证“软件做了什么”,很难知道“软件是怎么做的”。有些隐藏的分支,比如某个错误处理只在特定内存溢出时才触发,黑盒测试可能永远碰不到。这时候,白盒测试就该上场了。
白盒测试,是把箱子打开,直接看里面的逻辑结构。测试人员要读代码,理解每一行if-else、每一个循环、每一条路径。就像修车师傅不光看车能不能跑,还要拆开发动机检查每个齿轮的咬合。这种测试的目标是覆盖率——语句覆盖率、分支覆盖率、路径覆盖率。你得确保每行代码都被执行过,每个条件判断的真假分支都被跑到。
我以前参与过一个支付系统,黑盒测了好几天,所有功能都正常。但做白盒测试的同事打开代码一看,发现有个处理超时重试的函数,里面有个条件判断,如果重试次数恰好等于3次,就会走一个异常分支,而这个分支在正常测试数据下根本触发不了。黑盒测一百遍都测不出来,但白盒测试一分析,这行代码压根没被覆盖到。后来专门构造了触发第三次重试的测试数据,果然暴露出一个严重的资源泄漏问题。
现实工作中,很多人把这两种测试对立起来,好像选了黑盒就不能碰白盒。其实这想法挺傻的。黑盒测试告诉你“用户会不会满意”,白盒测试告诉你“代码会不会在某个角落突然崩掉”。两者互补,缺一不可。比如一个登录功能,黑盒测的是密码错误时有没有提示,白盒测的是密码校验逻辑里有没有可能被SQL注入的漏洞。
还有个常被忽略的点——测试的粒度。黑盒测试适合做端到端的业务验证,白盒测试更适合在单元测试阶段做。很多团队单元测试写不好,就是因为只盯着代码覆盖率数字,却忘了这些测试用例到底在验证什么行为。我见过有人为了凑90%的覆盖率,写了大量无意义的断言,结果真正复杂的业务逻辑反而没测到。
说到底,黑盒和白盒不是谁替代谁的关系,而是不同阶段、不同角色的分工。开发人员在写代码时,顺手做点白盒测试,能快速发现低级错误;测试人员在提测后,认真跑黑盒用例,能保证用户拿到手的不是个半成品。如果你只做黑盒,就像开车不看仪表盘,光靠感觉;只做白盒,就像盯着仪表盘分析数据,却不看路。哪个都不靠谱。
Tags:
相关文章
快乐84码最大遗漏
知识彩票店老板老周把那张走势图贴在墙上八年了。图上一行行数字密密麻麻,最底下那行标着“快乐84码”,旁边用红笔圈出一个“89”的字样——那是这个号码最大的遗漏期数。每天都有彩民盯着那串数字,像考古学家看甲 ...
【知识】
阅读更多甘肃冷水机组招标
知识甘肃的夏天来得陡。六月中旬,河西走廊的日头能把沥青晒出油来,兰州新区那几栋新建的科研楼里,空调外机却还蒙着防尘布——招标文件在钉钉群里转了三圈,没人敢接。 问题出在参数上。招标书里写着“出水温度7℃± ...
【知识】
阅读更多散户查股网官网
知识打开散户查股网官网,第一眼看到的是满屏跳动的数字和红绿交错的K线。这个页面每天要吞吐几百万次点击,背后是无数个盯盘的眼睛。 网站首页布局谈不上精致,甚至有点拥挤。左侧是自选股列表,中间滚动着实时行情, ...
【知识】
阅读更多