写点什么

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

用户头像
薛飞
关注
发布于: 3 小时前
苏宁精准测试方案探索和实践

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.还有什么意义?

代码的覆盖率分析对测试人员带来了挑战,包括技术要求和时间资源上的投入。当前测试职业发展的趋势要求测试人员一专多能,除具备软件测试的专业理论/视野,还能分析系统代码、能根据系统架构/设计做测试工具定制、从提供测试验证到能提供测试服务,从测试执行到全流程测试赋能,从测试工程师到“效能工程师”转变,这都需要建立在理解系统设计、具备开发能力的基础上开展,精准测试为我们提供了入口通道。

发布于: 3 小时前阅读数: 23
用户头像

薛飞

关注

还未添加个人签名 2020.04.24 加入

苏宁IT总部-CTO办公室-高级架构师

评论

发布
暂无评论
苏宁精准测试方案探索和实践