作者简介

一、背景与挑战

服务端质量保障是确保服务器端应用程序在开发、部署和运行过程中达到预期性能和可靠性的关键步骤。一个全面的服务端测试策略不仅能提高系统的稳定性和安全性,还能提升用户体验和满意度。
货拉拉服务端整体采用微服务架构,单点服务交互链路呈复杂的发散状:

面对如此复杂的系统架构,质量保障具有如下挑战:

  1. 支撑快速迭代: 业务保障结果需满足高效&高质量
  2. 高稳定:业务系统性能达标&健壮性高
  3. "0"资损:资金保障需确保系统定价链路准确与资金链路数据无损

二、知己知彼-bug 从哪里来?

让我们一起进入开发的视角,开发一个业务需求需要怎么编写代码,变动的代码可能会产生哪些 bug 呢?

三、逐一击破 - 测试策略

整体测试策略分 5 大类,层层包含且存在增量差异,最终环环相扣形成完整保障闭环。

1.代码分支测试

保障目标

保障策略
制定代码分支管理规范,将规范落地为【代码分支检测】工具自动检查和接入服务部署与准入准出流水线管控,最终形成可持续且闭环的代码分支保障。
代码分支规范:

代码分支管控:

2.变更测试

保障目标
确保每个服务端功能按照预期工作。
保障策略
整体分 3 块,分别是功能测试、资损测试和稳定性测试。

2.1 功能测试

集成&接口测试主要由测试人员根据变更业务内容&代码 diff 进行测试分析设计用例&保障,其中代码 diff 可结合【精准测试】工具辅助测试分析;单元测试<<单元测试在货拉拉的落地与实践>>主要由开发人员根据类、函数或模块变化进行测试分析设计用例&保障。

2.2 资损测试

2.3 稳定性测试

3.回归测试

保障目标
避免增量代码变动影响到自身服务领域或其他服务领域的线上逻辑。
保障策略
整体分 2 块,分别是进行单服务回归的回放测试和全链路回归的端到端测试。

3.1 回放测试

在项目详细测试阶段开启流量回放全量录制并结合【代码覆盖率】工具提取出有效流量样本实时沉淀至用例集,在项目回归测试阶段直接对变更的单服务进行回归保障。

3.2 端到端(E2E)测试

模拟真实用户的操作流程,通过向直接和客户端交互的服务发起请求,经过网络传输,到达服务端,再到服务端处理完请求后返回结果,判断结果是否正确。这种测试方式涵盖了整个服务端系统的工作流程,确保服务端系统在实际使用环境中能够正常工作。它如果配合流量回放一起使用,一个保链路,一个保单服务节点,就可实现在降低人力成本情况下有效替换掉老式的接口自动化保障。

测试方法采用 testng 测试框架进行自动化方式保障,场景 case 根据业务功能模块分类建设,其中 P0 级别业务功能模块可用于线上/线下确保环境可用的定时巡检使用,其他功能模块场景 case 可通过机器人快速唤醒执行,不仅可应用到项目冒烟与回归测试阶段使用,还可以用于线上回归验证和快速应急使用。

4.灰度测试

保障目标
避免发生以下 2 种情况

保障策略
灰度测试,也被称为灰度发布或灰度部署,是在某项产品或应用正式发布前,选择特定人群(用户或服务器集群)试用,并逐步扩大其试用范围,以便及时发现和纠正其中可能存在的问题。货拉拉具备多版本灰度环境【小货拉拉】,可以通过城市、用户司机人群和 app 版本号等策略进行灰度,最终实现"尽快试错,聚焦有用功能 ” 、“小步快跑,风险尽在掌握” 的目标。

5.监测与报警

保障目标

保障策略
在货拉拉除了 CI 团队提供给业务的 monitor 监测与报警能力,测试团队也建设了【日志哨兵】工具,实时监测业务代码异常,并将代码异常结合经验库决策判断,最终且实现精准与实时的问题触达。

四、成果与收益

从第三章阐述的 5 类测试策略在货拉拉的具体落地可以看出,除了业务变更部分需要人参与的比较多,其他基本都处于工具化的状态。这不仅让货拉拉服务端质量保障具备了将测试从保姆模式转成教练模式的条件,还为质量&效率带来了提升。

下面的饼图为货拉拉货运在 2024 年 02~07 月(H1)期间服务端缺陷暴露渠道占比:

五、未来规划与思考

1.未来规划

1.1 有明确测试方法部分继续使用工具和流水线去替代人工测试

eg:此文第三章提到的代码分支测试部分

1.2 工具无法替代部分结合 AI 给予推荐和决策建议

eg:智能问题定位,智能用例推荐等方向

2.思考:

测试会被替代么?
作者认为不会被替代。不同时代随着新的技术和业务模式的出现,对测试是持续需要的,但是会带来新的挑战和需求,需要测试人员不断提升自己的技能和知识,以适应行业的变化和发展。其次我认为测试的核心竞争力是测试方法,代码/AI 等相关技能都需要有方法论为支架才能发挥出效果,期望大家在丰富新知识的同时,不要忘记持续丰富自我的测试方法论模型。

感谢大家阅读至此,期望此文能给你带来启发和思考,由于篇幅有限,文章中提到的已在货拉拉应用的相关效能工具(中括号加粗部分)有些未能展开介绍,后续会持续分篇章分享,请大家敬请期待!


↙↙↙阅读原文可查看相关链接,并与作者交流