DevOps 使得软件交付越来越自动化,持续测试 变得愈加重要,同时,DevOps的频繁上线属性,更要求测试周期尽量缩短。过去20年软件测试领域一直致力于提高测试自动化程度,加速整体测试进程。除此之外,在软件生命周期中,测试阶段“左移”也成为业内规范,即测试团队尽早介入项目,甚至在需求分析阶段就开始编写测试用例。
测试左移 的核心在于缺陷预防,通过尽早发现缺陷来降低缺陷成本,重点关注系统上线前的功能质量。这也导致该模式下测试人员与真实用户的反馈之间存在断层。并且小步快跑的敏捷发布模式,也降低了日常上线后发生大规模故障的概率。只要系统具备快速回退、恢复的能力,可以允许代码“带小病”上线。
因此,测试人员亟需探索一种新的测试方式,重新定义自身的价值。测试“右移”就是在当前形势下提出的新尝试:将测试阶段右移至生产运维阶段,通过直接在生产环境进行受控的测试,验证软件在功能、非功能等方面的能力。
通过整合测试左移和右移,促使测试阶段贯穿软件生命周期全过程,把控各个环节的软件质量,最终交付优质、流畅的产品。
1、解决方案
浙江移动SRE团队积极探索测试右移的落地实践,遵循“设计-执行-控制”三步走的原则,在保证测试安全可控的前提下,借助于生产环境的可观察性,构建 右移测试体系,具备快速测试能力,可实时掌握系统质量。
1.1 设计
在生产环境,采用贴合用户实际的数据,测试典型的应用场景,可以获得与用户零距离的实时质量。实时质量 是右移测试最大的优势。
1、逼近用户数据
基于大数据分析,对接口报文、业务受理记录等海量业务数据进行等价类转换、边界值分析,挑选出高占比的业务参数,再对其进行综合组装,形成可自动输入的测试数据集合,最大程度贴近真实用户数据。
2、拟合测试场景
基于用户触点分析,通过业务评价模型、业务拓扑图等手段,设计与用户使用习惯一致的测试场景,确保测试覆盖用户关心的核心功能。
业务评价模型:以 系统入口+菜单 为基础,梳理出全量的62类业务,并通过业务的查询受理量、投诉量、故障标准、集团考核等输入维度设计业务评价模型。该模型将62类业务根据重要程度依次分为四个等级。
业务拓扑图:深入分析每一个业务,从业务开放对象、办理要求、办理途径及规则入手,对每一个业务涉及到所有系统页面元素进行测试输入参数梳理,形成完整的业务拓扑图。
另外,分析业务数据间的关系,对关联明显的场景做进一步测试覆盖。按上述思想设计的测试用例集,可覆盖生产上80%以上真实用户业务使用场景。
而在非功能测试场景设计方面,立足于运维痛点,针对5大非功能特性分别进行测试场景设计。
性能:构建业务模型和用户模型,模拟持续性大并发压力探测系统性能和容量瓶颈。
可靠性:剖析系统架构组建,遍历各种故障可能性,提炼测试场景。
可维护性:评定扩容复杂度、配置修改难易度等。
可监控性:检查监控部署完备性,验证告警准确性和及时性。
安全:重点关注应用与口令解耦,要求当主机、中间件或数据库口令修改时,不影响应用运行。
1.2 执行
面向DevOps的测试,速度是第一要义,从用例开发、脚本执行到结果展示,都需要立即反应、迅速落地。
1、测试片段设计,灵活用例组装
以业务为粒度进行测试片段设计,将完成一个业务所需的所有操作封装成一个片段,这些片段可以由所有用例共享。再根据具体测试需求挑选片段,配置测试数据,即可组装出所需测试场景,实现灵活的用例开发和扩展,可达到分钟级的 用例组装。
2、高效分发执行,提升测试效率
梳理用例间依赖关系,将无关用例分配到不同执行计划中,多个代理机可并发执行不同计划,提高测试效率。
3、AI智能分析,助力测试决策
引入机器学习算法,通过对历史测试数据、故障画像的分析和学习,沉淀经验规则,辅助测试分析,提升测试智能化。
- 测试结果判定:采用高斯分布算法,通过对历史测试结果的统计分析,圈定测试通过的范围区间,辅助判断测试结果。
- 缺陷原因分析:采用SVM分类算法、神经网络等方式实现测试缺陷原因的智能分析,实时展现系统存在的异常。
1.3 控制
安全 是生产测试的基本原则,依托于Selenium、Jmeter等开源工具,根据移动业务特色搭建敏捷验收平台,实现安全受控的一体化测试过程。
1、监控可观察:集成监控平台信息,实现多维度测试数据整合分析。
2、测试可中断:基于系统稳态指标,实时监测测试状态下的系统健康度,当出现异常时可立即终止测试。
3、数据可复用:通过停机、复机,订购、退订等业务的正向-反向订购特性,实现用例循环执行,测试数据可回收复用,最大限度减少测试入侵性。