一、背景
需求迭代过程中产研漏评估业务影响点是bug漏到生产环境的主要原因之一。减少漏评估问题的发生是提升交付质量的重要方向,精准测试是除依赖产研人员能力及经验外的另一种分析业务影响点的方式。
二、实践方案
1.方案简介
下面介绍针对java单应用的代码改动影响自动分析方案。
1)原理介绍
基于代码依赖关系分析改动的代码影响到哪些入口代码(接口、消息、任务等入口方法)。
举例,如下图,假设某应用改动了底层方法1,则基于代码间调用关系可以分析出方法a、b、z为被方法1影响的该应用最外层入口方法。
2)实施流程介绍
代码依赖分析方案详细介绍:
a.基于asm框架对java字节码文件进行解析,可解析出代码间调用关系。
举例,下图为字节码文件部分内容的截图,方法中的invokexxx指令为字节码中调用方法的指令,用asm字节码分析框架,可分析出如在methodA中调用了methodB。
b.以提测分支与master分支含diff的方法作为查询对象,结合方法间调用关系数据,可查出某方法影响到哪些入口方法
三、实践效果
结合coding的webhooks,实现代码提测后自动获取代码diff及其影响代码的自动分析。
四、未来规划
基于分析出的影响接口、消息入口信息,结合对应接口的测试用例,可以进一步实现测试用例的推荐与自动运行,及结合代码覆盖率分析能力自动给出测试覆盖率报告。
作者:京东科技 吕俊
来源:京东云开发者社区