苏宁精准测试方案探索和实践

1.方案思路
如下图展示了我们对精准测试的理解,包括两个应用和一个拓展,在测试用例设计环节:辅助分析代码修改的影响范围;在用例执行环节:反馈用例设计和代码实现的思路差异。拓展应用在测试左移到代码设计,可以在测试执行前了解代码逻辑,在可服务性设计上,是否做了异常处理、日志打印。

说明:本方案目前应用在 JAVA 开发的系统上。
2.适用场景
精准测试可以在哪些方面提升测试覆盖,哪些问题又不能解决呢?我们从研发过程中的三个角色(产品、开发、测试)的协作分析,在假设需求正确的情况下,可把缺陷逃逸的模式分为如下 7 个场景,根据精准测试的思路,方案可在 1、3、4、6、7 场景上提供测试分析的介入口,在 2、5 场景下,代码和用例均缺失,方案无法提供两方的差异对比。

3.业务架构
在产品方案设计实现上,通过多平台系统协作实现(见下图),
1、ITP 系统-承载项目/需求接入
2、测试平台-承载测试/用例设计/执行
3、研发云-承载代码设计、代码执行监控管理
除图示“覆盖率分析”和“用例录制 &推荐”方案外,在研发管理环节需要满足的能力,
1、覆盖率采集动态启停(指定测试环境)
2、提供实时的指标详情、覆盖趋势展示,用于测试人员实时分析
3、和生产发布环节打通,实现质量卡点;提供发布数据报表
4、代码权限控制,可以指定代码分析权限
5、代码白名单,可剔除工具类、实体类等,聚焦业务逻辑分析
6、支持多环境并行测试,同版本分支覆盖率信息合并计算
7、支持代码修改后的覆盖率信息重算策略:类级、函数级 (代码变更后,已测试覆盖信息的清空范围)
8、支持查看代码变更的提交来源 (代码/覆盖率的变化来源于哪一次代码提交)

4.指标应用
1、增量代码覆盖率,用于评估新需求的测试覆盖度
2、全量代码覆盖率,用于评估版本回归的测试覆盖度
管理思路
1)要求在测试报告中说明代码覆盖率信息,并提供分析结论
2)如果发布时覆盖率指标没有达到要求,需要提供代码覆盖率的分析说明
3)使用全量代码覆盖率来考量自动化的覆盖程度,并设定目标来驱动自动化在回归测试场景上的应用
5.设计演示
5.1 覆盖率分析


蓝色:新增代码 红色:未覆盖代码 黄色:部分分支覆盖代码
5.2 测试用例录制


5.3 测试用例推荐

5.4 效能看板集成


6.团队协作
在版本测试的过程中,一般会有多名测试人员承担,增量代码覆盖率分析也可能由开发或测试操作。如何使分析工作高效开展,平台提供了在线分析功能,根据覆盖率信息生成在线文档,支持多人同时分析/编辑。

在线分析以函数级维度分析覆盖信息。在以往的生产事故中,曾出现整个版本增量代码覆盖率比较高,但是某个类覆盖率为 0,测试人员未对该类做覆盖分析,导致缺陷遗漏(对应缺陷逃逸模式 4)。所以要求对每个修改的函数都要能分析到。
7.应用效果
1、平均每版本相比之前增加 5%的用例覆盖
2、集团生产发布版本平均新增代码覆盖率,近一年增长了 25%
3、生产问题同比降低,同时给生产事故回溯带来了新的角度和思路,如:缺陷代码未能覆盖的原因分析;缺陷场景是否需要做案例录制关联,做代码变更推荐
4、因为代码变更行为对测试数据的动态反馈,也促进了开发代码变更的规范性
8.未来展望
1、提供系统代码历史覆盖累计数据,用于回溯阶段性测试方案合理性及冗余代码治理
2、和生产流量录制回放方案结合,根据代码变化信息,自动筛选稳定回放流量;分析生产热度代码,做重点(高风险)场景验证保障
9.还有什么意义?
代码的覆盖率分析对测试人员带来了挑战,包括技术要求和时间资源上的投入。当前测试职业发展的趋势要求测试人员一专多能,除具备软件测试的专业理论/视野,还能分析系统代码、能根据系统架构/设计做测试工具定制、从提供测试验证到能提供测试服务,从测试执行到全流程测试赋能,从测试工程师到“效能工程师”转变,这都需要建立在理解系统设计、具备开发能力的基础上开展,精准测试为我们提供了入口通道。
版权声明: 本文为 InfoQ 作者【薛飞】的原创文章。
原文链接:【http://xie.infoq.cn/article/d78761cf440e380939a4e988e】。文章转载请联系作者。
评论