夜雨聆风学习资料网

ARTICLE · 1060424

从"点点点"到"找茬王":一文读懂软件测试的完整闭环

从"点点点"到"找茬王":一文读懂软件测试的完整闭环
凌晨 2 点 17 分,运维老王的手机又震了。

这个月第 4 次。

"支付按钮点了没反应!"电话那头很急。

老王揉着眼睛爬起来,心想开发也挺冤的——"我本地明明测过没问题"。

这话没毛病,但也没用。你写的代码,只能证明它能跑,证明不了它不出错。本地跑通的那一遍,恰好没踩到线上那个坑而已。

说到底,是测试这一关没守住。

这篇文章就把软件测试这件事讲透:它是干什么的、怎么做、用例怎么写、bug 怎么管。配了 4 张板书,看完你对测试的认知会完整一大圈。

测试不是挑刺,是给软件上的质量保险

先纠正一个偏见。

很多人一听"测试"就皱眉,觉得是开发完了找人来挑刺的。

恰恰相反。测试是给软件买的一份保险,赔的是线上事故那份钱——线上修一个 bug 的成本,是开发期修它的 100 倍。开发阶段改一行代码的事,到了线上就是故障复盘、加班回滚、用户流失。

测试干四件事:

  • 发现缺陷,把藏在地里的雷挖出来;

  • 预防缺陷,同样的错不犯第二次;

  • 验证确认,确认的是"做对了"而不是"做完了";

  • 辅助决策,用数据告诉老板这版能不能上。

它带来的价值也对应四层:省钱、降风险、提效率、给团队底气。

一句话:测试不是花钱的部门,是帮你少花钱的部门。

黑盒、白盒、灰盒,一次分清

聊测试方法绕不开这三个词。网上文章一般甩个表格就完事,你看完大概率还是分不清。换个方式——

黑盒,就是蒙着眼睛只看输入和输出。这时候你就是用户:点按钮、填表单、看结果,完全不管里面代码怎么写的。

白盒,是钻进代码里看每一行分支。这时候你是医生,拿着听诊器挨个器官听,哪段逻辑没覆盖到一目了然。

灰盒,是内外结合。你是老司机,既看仪表盘的速度,也听发动机的声音。

实际工作里,纯黑盒和纯白盒都少见,最常用的是灰盒。比如测一个 API,你既要验证输入输出对不对,也要翻日志看是哪一层报的错——两头都占,排查效率最高。

测试工程师的一天,不是"点点点"

"测试不就是点点点吗?"

听到这话,测试人想打人。

真实的一天是一个 6 步闭环,每天转一圈:

早上拿到需求,先别动手。读 PRD、对设计稿、跟产品经理把口径对齐,这是计划。然后进入设计,把要测的东西列成清单——这就是测试用例,全流程里最能体现专业度的一步,后面单独讲。

执行就是按清单一步步操作,把每个"对"和"错"记下来。发现 bug,立刻写一份清晰、可复现的报告提交给开发。

开发改完,你再跑一遍回归:确认 bug 真的没了,而且没顺手引入新的。最后出报告:覆盖率多少、遗留风险多大、这个版本能不能发,用数据说话。

走完这六步你会发现,测试是个脑力活。"点点点"只是执行那一环,环外还有五环。

测试用例到底怎么写

测试用例,说穿了就是测试人的检查清单。清单的质量,直接决定你测得全不全。

一份合格的用例至少有 6 个字段:标题说清测什么,前置条件交代环境,步骤写清怎么操作,测试数据用什么,预期结果是什么,实际结果留到执行后填。拿登录场景举例:

字段
例子
用例标题
正确账号密码可以登录
前置条件
用户已注册,登录页已打开
测试步骤
输入账号 → 输入密码 → 点登录
测试数据
user01 / pass0001
预期结果
跳转到首页 /home
实际结果
(执行后填)

清单有了,怎么把清单设计得又全又狠?5 个方法,按使用频率排:

等价类划分——数据分类,每类抽一个代表。密码要求 6-12 位,那 8 位的 Abcdef12 测一个就够了,不用把 6 到 12 位全试一遍。

边界值分析——bug 最爱藏在边界上。6-12 位的要求,就专门拿 5、6、7 和 11、12、13 这六个值去测。

场景法——模拟真实用户的完整路径。登录就有五条路:成功登录、密码错、用户名不存在、忘记密码、退出再登录。

错误推测法——凭经验猜哪里会炸。比如用户名前面带个空格、密码框输入一段 SQL 注入语句,这些歪招新人想不到,老手一测一个准。

判定表法——多条件组合的场景用它最稳。比如会员折扣规则,黄金会员和订单满 100 两个条件一组合就是四种情况,列张表保证不漏:

条件
规则1
规则2
规则3
规则4
黄金会员?
是
是
否
否
订单>100?
是
否
是
否
折扣
8 折
无
9 折
无

当然,还有其他的方法,篇幅有限,不过多叙述......

写用例记住四个原则:

  • 谁来做结果都一样(清晰准确)

  • 一个用例只测一件事(原子性)

  • 不依赖其他用例(独立性)

  • 正向异常都要测(正反结合)

一个 bug 的 8 种基础生命状态

bug 从被发现到关闭,会走完一段曲折的路:

主线就四站:新建,测试发现并提交;已分配,派给开发;已解决,开发改完;待验证,等测试复核。

到了验证环节开始分叉。通过,进入已关闭,这个 bug 入土为安。不通过,重新打开,打回去返工。

还有两条半路分支:开发看完说这不是 bug(需求理解有偏差),标记已拒绝;或者问题属实但不急着修,推迟到下个版本。

当然,老测试肯定知道bug状态还有其他的,本文主要是给非专业人士和萌新看的,所以不做过多的阐述。

想让 bug 报告不被开发打回来,四个要素别偷懒:

  • 标题按 [模块] 一句话说清问题 的格式写;

  • 重现步骤分 1、2、3、4 步写详细,让开发照着做一遍就能炸;

  • 预期结果和实际结果分开写;

  • 环境信息(浏览器、系统、版本号)带上。

最后提醒一个新人常踩的坑:

严重程度不等于优先级。一个数据计算错误的 bug 很严重,但如果只影响内部员工的统计报表,优先级可以不高;logo 错位不严重,但今天就要发版,优先级直接拉满。严重说的是"伤多深",优先级说的是"多急修",两码事。

------------------------------------------------------------------------

写在最后

带过不少新人,最常见的误区有三个。

一是觉得"点点点就够了"。测试是系统性的质量工程,点点点只是执行环节,你的深度决定天花板。

二是觉得"测完说没问题就是完成"。合格的收尾是覆盖率报告加风险评估,让团队知道你测了什么、还有什么没测。

三是觉得"bug 报告写得越狠越负责"。报告是给开发修 bug 用的,客观、可复现、对事不对人,才是高效协作。

测试做久了,这种思维会溢出到工作之外:看代码会主动找边界,设计功能会提前想异常,连用个新 App 都会职业病般先试试输错密码会怎样。

这不是毛病,这是工程思维。

如果这篇帮你理清了测试的完整闭环:

  • 👍 点赞,让更多同行刷到
  • ⭐ 在看,收藏起来慢慢消化
  • 💬 评论,聊聊你刚入行时踩过的测试坑

相关学习资料