做了五年专职软件测试,被同行和新人反复问烂的问题就是软件可靠性测试包括哪些,我从来不会照搬书本上的刻板定义,只讲自己一次次线上故障复盘、线下反复实测摸透的实操测试内容,每一项都是踩坑踩出来的实打实测试项。
最先落地执行的,是长时间稳定性测试,这是软件可靠性测试最基础也最核心的内容。之前接手过一款企业办公审批系统,前期功能测试全部通关,自测、联测都没发现问题,结果小范围灰度上线三天,就出现后台进程卡死、审批流程停滞的问题。折腾好久才搞明白,功能测试只测单次、短时操作,根本发现不了隐性问题。后续做可靠性测试,都会固定做72小时不间断循环操作,模拟员工全天候提交、驳回、流转审批的高频场景,全程监控内存占用、CPU负载、后台线程状态,专门捕捉长时间运行才会出现的内存泄漏、进程堆积、后台静默宕机这类隐形bug,这是所有软件可靠性测试的第一道关卡,半点偷不得懒。
其次是容错性测试。
很多新手测试会把容错和功能异常校验混为一谈,这是最常见的误区。真正的容错性可靠性测试,是主动制造各类突发异常场景,验证软件的抗干扰能力。实操里会刻意模拟网络中断、网络波动、服务器瞬时过载、数据写入中途中断、多端同步操作冲突等情况。之前测试线上收银软件,初期只做了基础报错提示测试,没做深度容错校验,上线后用户付款时切网络,直接出现订单重复生成、金额错乱的问题。后续复测的时候,反复模拟各类突发异常,确认软件能主动拦截错误操作、保留原始数据、不闪退不崩溃,哪怕操作失败也会给出有效提示,不会出现数据丢失、系统紊乱的情况。
还有故障恢复性测试,这是独立于容错性的关键测试项,很多人都会把两者混为一谈。容错是保证出问题时系统不崩,恢复性测试是校验故障解除后,软件能不能快速、完整恢复正常运行。实操中会人为制造各类故障,比如强制关停服务、数据库临时断开、缓存数据清空、程序意外闪退,之后重启软件、恢复服务,核查功能是否正常使用、数据是否完整无缺失、之前的运行记录是否完好。之前做政务填报系统测试,就遇到过故障重启后残留脏数据的问题,旧数据未清空导致新表单无法提交,就是恢复性测试覆盖不全留下的隐患。
压力可靠性测试也是必不可少的一环。
别把常规并发测试和可靠性压力测试弄混,普通并发只测峰值临界值,而可靠性层面的压力测试,是持续梯度施压。会按照日常流量、峰值流量、超负载流量三个档位,持续数小时对软件施压,观测系统会不会出现响应超时、功能卡顿、自动降级失效、服务瘫痪等问题。去年测试一款社群互动小程序,就是因为超负载持续压力测试没做细致,节假日流量骤增后,系统直接瘫痪,后台无法自动限流,足足修复了半个多小时,流失了大量活跃用户。从那之后,持续压力测试就成了我做可靠性测试里优先级极高的一项内容。
最后是复杂环境适配可靠性测试。这不只是简单测不同手机、电脑系统版本,而是模拟用户真实的复杂使用环境。比如老旧低配置设备、低版本操作系统、多软件同时后台运行、长时间后台挂驻软件等场景,校验软件会不会出现兼容闪退、运行卡顿、功能失灵、后台自动退出的问题。很多用户反馈的无规律bug,找遍代码都查不出问题,最后基本都是复杂环境适配的可靠性缺失导致的。
盯着屏幕上刚跑完的一轮完整可靠性测试日志,指尖随手关掉了弹窗的报错统计窗口。