功能测试包含哪些测试:覆盖正向、反向、数据及场景联动全场景核验
刚入行做软件测试的时候,被组长当场问住功能测试包含哪些测试,那时候傻傻觉得功能测试就是点点页面、核对按钮能不能用就行,压根不知道真正的实操测试维度远比表面点击复杂,那段时间提交的测试报告总被驳回,线上小bug频繁爆出,踩了一堆实打实的坑。
最开始接手的是社区团购小程序的迭代测试工作,每天的工作流程就是照着需求文档,一步步走完用户正常操作,首页跳转、商品加购、地址填写、付款下单,只要每一步操作有响应、页面不报错,就直接判定该功能测试通过。那时候完全没意识到这种测试方式有多片面,第一次线上事故就栽在了认知盲区里,新版本上线后,大量用户反馈空白下单、重复扣款、取消订单后优惠券不退回,短短半小时后台堆积几十条异常数据,团队紧急停服修复,通宵复盘才发现,我全程只测了最基础的正向操作,所有非常规、异常的功能场景全部遗漏,这也是新手做功能测试最普遍的问题。
这是最容易踩的低级坑。
折腾好久才搞明白,正向功能测试是功能测试最基础的核心内容,就是严格对照产品需求文档,验证所有既定功能是否符合设计规范。不管是小程序、APP还是后台系统,所有用户常规操作流程、预设功能效果,都要逐一核验,比如登录注册、内容发布、订单流转、权限切换这些基础模块,确保正常操作下功能可用、流程通顺、效果达标,这是功能测试的底层基础,也是必须全覆盖的内容。
真正决定测试质量的,从来都是反向功能测试,也是我之前完全忽略的重点。反向测试就是刻意模拟用户的错误、非常规操作,打破正常的使用逻辑去核验系统容错性。实操里会测空内容提交、超长字符输入、特殊符号填写、重复点击提交按钮、断网后重试操作、超时未操作再返回页面这些场景,很多看似无关紧要的异常操作,恰恰是系统漏洞的高发区。之前的团购小程序bug,就是因为没测重复提交订单的反向场景,系统没有设置拦截机制,才导致用户多次扣款,这类测试内容,是功能测试里绝对不能省略的部分。
还有极易被忽略的数据功能测试,很多人只看页面展示效果,完全不管底层数据流转。
数据功能测试主要核验系统所有数据的新增、修改、删除、同步、回显是否准确,跨页面、跨操作、跨版本的数据联动是否无误。之前迭代新版本时,测完所有页面功能都正常,上线后却发现用户历史收货地址全部错乱,新保存的数据反复覆盖旧数据,排查后才知道,是数据更新和存储的功能没测到位,页面显示正常,但后台数据库的数据交互逻辑出错。哪怕界面功能再完美,数据流转异常,整个功能就是失效的,这也是功能测试不可或缺的一环。
最后是场景联动功能测试,单一功能正常不代表整体功能合格。大部分产品功能都不是独立存在的,各个模块之间会相互联动、相互影响。比如团购小程序里,退款成功后库存是否自动回补、取消订单后优惠券和积分是否原路退回、收货确认后是否自动生成评价入口,这些跨模块的联动场景,单独测试退款、库存、优惠券功能都没问题,但组合起来就容易出现逻辑漏洞,这类联动场景测试,是功能测试收尾阶段必须做完的工作。
修复完所有bug、补全所有测试用例的那个凌晨,关掉电脑的时候,桌面还摊着满满几页手写的测试场景清单,只觉得之前自以为简单的功能测试,根本没有半点敷衍的空间。