作者简介
- 代丽,来自货拉拉/技术中心/质量保障部,主要负责货拉拉交易和履约以及资金领域的质量保障和服务端质量体系建设工作。
服务端质量保障是确保服务器端应用程序在开发、部署和运行过程中达到预期性能和可靠性的关键步骤。一个全面的服务端测试策略不仅能提高系统的稳定性和安全性,还能提升用户体验和满意度。
货拉拉服务端整体采用微服务架构,单点服务交互链路呈复杂的发散状:
面对如此复杂的系统架构,质量保障具有如下挑战:
让我们一起进入开发的视角,开发一个业务需求需要怎么编写代码,变动的代码可能会产生哪些 bug 呢?
整体测试策略分 5 大类,层层包含且存在增量差异,最终环环相扣形成完整保障闭环。
保障目标
保障策略
制定代码分支管理规范,将规范落地为【代码分支检测】工具自动检查和接入服务部署与准入准出流水线管控,最终形成可持续且闭环的代码分支保障。
代码分支规范:
代码分支管控:
保障目标
确保每个服务端功能按照预期工作。
保障策略
整体分 3 块,分别是功能测试、资损测试和稳定性测试。
集成&接口测试主要由测试人员根据变更业务内容&代码 diff 进行测试分析设计用例&保障,其中代码 diff 可结合【精准测试】工具辅助测试分析;单元测试<<单元测试在货拉拉的落地与实践>>主要由开发人员根据类、函数或模块变化进行测试分析设计用例&保障。
健壮性:使用故障演练<<故障演练体系建设>>工具,模拟生产环境中接口、服务和中间件等维度异常时,系统能够迅速恢复并继续提供服务。常见需确保健壮性的场景有:
保障目标
避免增量代码变动影响到自身服务领域或其他服务领域的线上逻辑。
保障策略
整体分 2 块,分别是进行单服务回归的回放测试和全链路回归的端到端测试。
在项目详细测试阶段开启流量回放全量录制并结合【代码覆盖率】工具提取出有效流量样本实时沉淀至用例集,在项目回归测试阶段直接对变更的单服务进行回归保障。
模拟真实用户的操作流程,通过向直接和客户端交互的服务发起请求,经过网络传输,到达服务端,再到服务端处理完请求后返回结果,判断结果是否正确。这种测试方式涵盖了整个服务端系统的工作流程,确保服务端系统在实际使用环境中能够正常工作。它如果配合流量回放一起使用,一个保链路,一个保单服务节点,就可实现在降低人力成本情况下有效替换掉老式的接口自动化保障。
测试方法采用 testng 测试框架进行自动化方式保障,场景 case 根据业务功能模块分类建设,其中 P0 级别业务功能模块可用于线上/线下确保环境可用的定时巡检使用,其他功能模块场景 case 可通过机器人快速唤醒执行,不仅可应用到项目冒烟与回归测试阶段使用,还可以用于线上回归验证和快速应急使用。
保障目标
避免发生以下 2 种情况
保障策略
灰度测试,也被称为灰度发布或灰度部署,是在某项产品或应用正式发布前,选择特定人群(用户或服务器集群)试用,并逐步扩大其试用范围,以便及时发现和纠正其中可能存在的问题。货拉拉具备多版本灰度环境【小货拉拉】,可以通过城市、用户司机人群和 app 版本号等策略进行灰度,最终实现"尽快试错,聚焦有用功能 ” 、“小步快跑,风险尽在掌握” 的目标。
保障目标
保障策略
在货拉拉除了 CI 团队提供给业务的 monitor 监测与报警能力,测试团队也建设了【日志哨兵】工具,实时监测业务代码异常,并将代码异常结合经验库决策判断,最终且实现精准与实时的问题触达。
从第三章阐述的 5 类测试策略在货拉拉的具体落地可以看出,除了业务变更部分需要人参与的比较多,其他基本都处于工具化的状态。这不仅让货拉拉服务端质量保障具备了将测试从保姆模式转成教练模式的条件,还为质量&效率带来了提升。
千行代码缺陷率降低 40%
研发可利用测试的效能建设深入参与到质量保障任务中,主要有单测、代码分支检测、日志哨兵等赋能,让研发可自我闭环问题,降低缺陷数。
线上质量降低至<=1%
线上缺陷数/(线上缺陷数 + 线下缺陷数),其中分母不包含研发自闭环保障阶段发现的问题。
测试人效提升 30%
测试人效提升主要来源于研发可自闭环需求变多、人工测试保障面变少和工具辅助测试提效,这让测试人员在固定时间范围内可支撑更多业务保障。不同业务线会存在一些差异,中台服务领域因每次变动和线上业务逻辑差异较小提升会比较明显。
下面的饼图为货拉拉货运在 2024 年 02~07 月(H1)期间服务端缺陷暴露渠道占比:
eg:此文第三章提到的代码分支测试部分
eg:智能问题定位,智能用例推荐等方向
测试会被替代么?
作者认为不会被替代。不同时代随着新的技术和业务模式的出现,对测试是持续需要的,但是会带来新的挑战和需求,需要测试人员不断提升自己的技能和知识,以适应行业的变化和发展。其次我认为测试的核心竞争力是测试方法,代码/AI 等相关技能都需要有方法论为支架才能发挥出效果,期望大家在丰富新知识的同时,不要忘记持续丰富自我的测试方法论模型。
感谢大家阅读至此,期望此文能给你带来启发和思考,由于篇幅有限,文章中提到的已在货拉拉应用的相关效能工具(中括号加粗部分)有些未能展开介绍,后续会持续分篇章分享,请大家敬请期待!