确认测试最容易漏掉的,不是那些复杂的业务功能,而是那些你认为“绝对不会出问题”的地方。
漏测的本质不是技术能力不够,是你太熟悉自己的系统了,熟悉到很多“习以为常”的写法,在你眼里根本不算问题。而用户根本不熟悉你的系统,他们会用你没想到的方式去操作。

确认测试报告
一、边界值,大量bug就藏在边界里
这是漏测的“重灾区”。密码长度要求6到16位,测试的时候可能只跑了“123456”和“1234567890123456”两个边界值,看着都对。但你有没有测过5位、17位、空字符串、全角字符?用户不会按你设计的格式输入,系统必须在任何输入下都不会崩溃。
数据量边界同样容易被忽略。测试环境里只有几百条数据,生产环境可能有几百万条。一个在测试环境里跑得很好的查询,到了生产环境可能直接把数据库拖垮。
应对方法:用边界值分析法系统性地覆盖所有输入字段,上点(正好在边界上)、内点(边界内)、离点(紧邻边界外),每个输入字段至少测三个值。
验证技巧:尤其是金额、日期、数量字段,要测“0”“负数”“超大数”和“小数位溢出”。
二、异常路径,只测“对的路”,不测“错的路”
正向流程全部通过,用户走个异常路径直接卡死。比如提交订单页面,测试的时候数据完整、网络顺畅,全过。但用户可能填到一半断网了、支付超时了、库存突然没了,这些场景如果没测过,上线后一定会遇到。
更隐蔽的情况是:异常发生后的状态恢复。支付超时之后系统有没有自动释放库存?网络恢复之后用户的数据还在不在?
应对方法:在设计用例时,专门安排一批“破坏性用例”,弱网环境、突然断电、服务端超时、并发竞争。正向用例保证系统能用,反向用例保证系统不会崩。
验证技巧:使用Charles或Fiddler模拟网络延迟和请求失败;重启应用后检查事务日志,确认数据库连接池和缓存都已正常恢复。
三、权限与数据隔离,水平越权最容易被忽略
普通用户能不能看到另一个用户的订单?如果URL里的订单ID是递增数字,把100改成101就能看到别人的订单,这种漏洞在真实项目中极其常见,但确认测试很少覆盖。
前端菜单里根本没显示的管理员接口,只要知道了URL路径就能直接访问,测静态页面测不出这种问题。
应对方法:权限测试不能只测“能不能登录”,要测“登录之后能做什么、不能做什么”。至少准备三个不同角色的账号(管理员、普通用户、访客),逐条验证API层的权限控制。每个接口的权限校验都在服务端验证,而不是只测前端菜单。
验证技巧:使用Burp Suite或浏览器开发者工具拦截请求,篡改URL中的资源ID、Cookie中的用户身份字段;测试完成后检查应用日志,确认所有越权尝试都被记录且有告警。
四、数据一致性与事务,部分成功比全失败更危险
最常见的是“部分成功”。用户下了一个订单,第三方支付扣款成功,但系统订单状态没有更新为“已支付”。钱扣了,订单显示“未支付”,这个状态如果确认测试没覆盖,上线后就是客服电话被打爆。
跨系统数据同步也是容易漏掉的点。主系统数据变了,下游系统没同步,两边数据对不上,这种问题确认测试跑单系统测不出来,必须做端到端验证。
应对方法:将数据一致性测试作为专项,覆盖分布式事务和跨服务调用场景,设计“成功-回滚”“局部失败-超时”等状态组合验证。测试报告中必须明确定义事务边界及失败后的补偿机制。
验证技巧:在分布式事务中间环节手动终止服务(如kill数据库连接),检查回滚日志和最终一致性;核对源系统和目标系统的记录总数、关键字段哈希值。
五、业务逻辑漏洞,功能没问题,但流程能被人钻空子
功能测试关注的是“能不能用”,确认测试关注的是“能不能被人滥用”。优惠券系统功能全过,能领券、能用券、能抵扣。但攻击者通过抓包修改请求参数,用一张满100减10的券抵扣了一个1000块的订单。功能测试测不出这种问题,因为功能本身是正常的。只有站在攻击者角度去审视业务逻辑,才能发现这种设计缺陷。
应对方法:确认测试的设计必须包含“反向用例”,输入错误数据、异常数据、边界数据,确保系统能够正确处理和拦截。优惠券、积分、支付金额必须同时验证前端显示和服务端计算的一致性。
验证技巧:使用Burp Suite拦截支付请求,篡改金额或折扣参数后放行;对同一优惠券在同一订单中重复提交,检查服务端幂等性。
确认测试漏测的根源只有一个,用自己的逻辑去测系统,而不是用用户和攻击者的逻辑去测。 用户不会按你的剧本操作,攻击者更不会。解决的办法也很简单:把边界值列全、把异常路径跑一遍、把权限校验在服务端逐条验证、把事务一致性做成专项测试、把业务逻辑用“怎么才能钻空子”的思路重新审视一遍这些重要的事做到位了,漏测的概率能降一大半。
标签:确认测试、漏洞