网站功能测试报告凌晨两点十七分,网站我盯着屏幕上那个“提交订单”按钮,测试手指悬在鼠标上不敢点下去。报告这是网站今天第十七次重复这个动作了。前十六次,测试每一次点击后页面要么卡死在加载动画,报告要么直接跳出一行英文报错——最气人的网站是,错误提示写得跟谜语似的测试,连后端同事看了都直挠头。报告 测试环境里一切正常,网站一到生产环境就翻车,测试这毛病在网站功能测试里太常见了。报告我手上这个电商项目,网站功能点不算复杂:用户注册、测试商品搜索、报告购物车、下单支付、订单查询。但就是这些基础功能,愣是让我在回归测试阶段抓出了十一个bug,其中三个属于必须修复的严重级别。 先说用户注册那块。手机号验证码登录,按理说逻辑不复杂:用户输手机号,点获取验证码,后台发短信,用户填码,校验通过就放行。测试时发现,快速连点两次“获取验证码”按钮,系统会发出两条短信,但前端只显示倒计时60秒,第二次点击产生的验证码会覆盖第一次的,用户如果拿着第一条短信的验证码去填,必然报错。这个bug属于典型的并发处理缺失,修起来倒简单,加个按钮禁用状态就行,但暴露出的问题是:开发写代码时压根没考虑用户手抖的情况。 购物车模块更闹心。往购物车里加商品,数量默认是1,用户手动改成5,再改回1,然后去结算,订单里显示的却是5件。查了半天,发现是前端把数量变化事件绑定在了input的change事件上,但用户通过增减按钮操作时,change事件在某些浏览器里不触发,导致提交时读到的还是旧值。这种问题最坑人——不涉及后端逻辑,纯粹是前端事件处理的疏漏,但直接影响用户的钱包。 支付环节倒是没出大乱子,但有个细节让我印象很深。用沙箱环境模拟支付成功回调时,系统处理得挺利索,可一旦回调延迟超过10秒,前端页面就傻站着转圈,既不提示“支付处理中”,也不提供“刷新查看结果”的按钮。用户等得不耐烦,关掉页面再进来,订单状态确实更新了,但中间那段空白期,用户完全不知道发生了什么。这属于体验层面的功能缺陷,不算致命,但流失率绝对会涨。 测试做到第三天,我学乖了。不再按部就班地照着用例点鼠标,而是故意做那些“正常用户不会做”的操作:快速双击按钮、在输入框里粘贴特殊字符、切换网络环境、把手机屏幕旋转一下。果然,又揪出两个问题——一个搜索框对emoji表情处理不当,直接导致搜索服务崩溃;另一个是图片懒加载在弱网环境下会漏加载,用户滑到底部都看不到商品图。 说实话,功能测试做到最后,拼的不是用例覆盖率,而是对产品逻辑的理解深度。我见过太多测试报告,满页都是“通过”“失败”“阻塞”,但没写清楚失败背后的用户场景是什么。比如那个验证码覆盖问题,如果只描述“获取验证码按钮在短时间内重复点击会导致验证码失效”,开发大概率会回复“建议用户不要重复点击”。可你要是补一句“用户可能因为手机短信延迟而焦虑,误以为没点到按钮”,开发立马就明白该修什么了。 这次测试最大的收获不是那十一个bug,而是让我意识到:功能测试的本质,是站在一个有点笨、有点急、偶尔手滑的真实用户角度,去跟系统较劲。你越较真,系统就越服帖。 |
