软件上线前绝对不能放过的问题,超过60%的线上问题都源于上线前的准备疏漏。
功能和业务:
功能正确但用户不会按预设途径操作,必须包括边界和异常场景。
流程和边界测试:保证所有功能(如登录、支付)按预期工作。同时测试边界条件如:支付中断是不是重复扣款、余额不足提示是不是准确、输入超长文本或特殊字符系统是不是崩溃等。
回归测试:保证新代码没有破坏任何现有功能。
用户验收测试(UAT):在尽可能模拟真实生产环境的条件下,让真实用户或业务方进行证实。
性能和稳定性:
功能正常但系统崩溃,后果同样严重。性能问题必须在架构设计阶段就予以考虑。
压力和负载测试:模拟高并发场景,测试系统峰值下的响应时间和稳定性。同时需进行长时间(如24小时)稳定性测试,检查是不是存在内存泄漏等问题。
环境一致性:必须在和生产环境配置尽可能一致的预发布环境进行性能测试。
建立性能基线:各项性能标准(如响应时间、错误率)的阈值,并和基线数据对比。
安全防护:
应用安全漏洞扫描:重点排查SQL注入、XSS跨站脚本、CSRF、文件上传漏洞等OWASP Top 10高危漏洞。
身份认证和权限控制:严格检查身份认证机制(如密码方法、登录失败锁定)和权限控制,保证普通用户无法越权访问管理员功能或其他用户数据。
数据加密和传输保护:保证密码、身份证号等敏感数据在存储和传输过程中均被加密,并强制使用HTTPS加密传输。
供应链和配置安全:使用工具扫描第三方库(如Log4j)的已知漏洞。检查并移除代码中的硬编码密钥、调试语句和测试接口。
兼容性:
用户使用着各式各样的设备和浏览器,兼容性问题直接影响用户体验和留存率。
操作系统和浏览器:包括主流的操作系统版本(如Windows, macOS, iOS, Android)和浏览器(如Chrome, Safari)。
设备和分辨率:测试不同屏幕尺寸和分辨率的显示效果,特别是移动端和折叠屏等新设备。
新旧版本兼容:保证新版本软件能正确处理旧版本生成的数据(向前兼容)。
数据和配置:
数据库变更:所有DDL(表结构变更)、DML(数据迁移)脚本必须齐全,并准备好对应的回滚脚本。
配置分离:严格区分开发、测试、生产等不同环境的配置文件,杜绝将测试配置带到生产环境。
第三方依赖:确定所依赖的第三方API接口版本兼容、服务可用且配额充足。
部署和运维:
部署计划和回滚:制定清晰的部署计划,包括时间窗口和发布方法。必须提前演练并准备好成熟、快速的回滚方案。建议采用灰度发布方法逐步放量(如1%-10%-100%),以便在小范围发现问题时能快速止损。
资源和监控:确定服务器资源(CPU、内存)有足够余量。上线前必须配置好监控告警,保证能第一时间发现异常。
文档和沟通:
文档更新:保证用户手册、操作指南、API文档等和最新版本保持一致。
变更通知:提前将上线时间、影响范围等信息同步给产品、运营、客服等相关团队。
测试兜底和复盘
封版测试:上线前应进行代码封版,不再新增需求,集中进行全面的回归测试。
建立复盘机制:上线后应安排复盘会议,总结本次经验教训,并不断更新检查清单。
总之上线前的检查需要系统性地包括功能、性能、安全、兼容性、配置、部署、文档等多个方面。