其他
代码精准分析在闲鱼接口测试中的应用
背景
方案概述
step1:通过订阅 Gitlab 的消息获取代码的改动信息,包括改动的代码行范围,修改的类文件等
step2:分析代码的差异,根据改动的代码行范围判断修改了哪些方法
step3:通过流量录制平台本身的能力获取 HTTP及 RPC 接口的调用链路,建立方法和入口接口的映射关系,此时根据修改变动的方法就可以查询到对应的入口接口
step4:通过流量录制平台获取到对应的流量用例。其中录制的就是HTTP及 RPC 接口流量用例
step5:建立变动方法与流量用例之间的映射关系
下面就通过主要的四个方面展开阐述:代码差异化分析,方法调用链路解析,流量录制,用例关联。
1、根据 Git diff 信息获取变动的代码文件路径及代码行范围,如图3 所示,变动的代码行范围是[1200,1207]。
3、按行解析,判断该行是否是方法声明,如果是,记录下代码行数作为当前方法的起始行,同时按行向上搜索判断是否含有方法结束标志,如果有那么记录下行数作为上一个方法的终止行。最终我们获取到了代码文件的类似 AST的一个数据结构,其中以方法块的形式记录了各个方法名及其起始和终止行数。比如图4展示了对应的数据结构。
流量录制
用例关联
当项目提测时,会根据应用及应用开发分支获取变动方法,继而查询到对应的HTTP及RPC方法,之后自然就获得了服务端的流量数据,就可以触发用例回归。整个过程中可以清晰地看到影响的接口,并且可以执行对应的用例,通过影响的接口可以评估影响范围,做到心中有数,而不是强依赖开发同学的判断,从而对接口变更风险有了准确的评估。