2017年,淘系技术部在JVM-Sandbox的基础上,研发了录制回放模块(即JVM-Sandbox-Repeater)和行调用链路识别模块(即JVM-Sandbox-Trace),淘系技术部成功降低了新增需求的自动化验收成本,淘系技术部实现了现有业务的全景自动梳理和线上流量自动录制回放的能力,即全景回放。
淘系技术部的回放模块
回放,也称为录制回放,是淘系技术部提升回归效率的有效手段。淘系技术部的测试验证经历了手工、自动化脚本、录制回放三个阶段。关于手工回归的成本,这里就不再赘述了,自动化脚本主要分为三步,即入参准备、模拟调用、返回值断言,在书写、维护、执行脚本的过程中,存在入参准备难,断言多,调用受外部环境影响大的问题。目前最好的解决办法就是录制回放。
录制回放的定义
将请求信息、入参、返回值、中间过程记录下来(即录制),在需要的环境/机器上重新调用(即回放)。通过回放过程是否成功、对回放结果进行对比,可以判断场景回放是否成功,从而判断该场景测试是否通过。
淘系技术部根据回放方式的不同,录制回放可以分为以下几类。
(1)封闭式回放(Mock回放)
录制时不仅会记录入口方法的入参和返回值,而且会记录对外调用方法的入参和返回值,以便回放时对比入参。如果入参相同,则中断对外调用,淘系技术部将录制的该对外调用方法的返回值作为回放的返回值。如果入参不同,则终止回放
Mock回放
(2)开放式回放(非Mock回放)
录制时记录入口方法的入参和返回值,不对中间过程进行干预,直接对比回放结果
非Mock录制
非Mock回放
(3)半封闭式回放(部分Mock)
淘系技术部录制时不仅会记录入口方法的入参和返回值,而且还会记录指定对外调用方法的入参和返回值,或者指定方法的入参和返回值,回放时对比入参,如果入参相同,则中断对外调用,将录制的返回值作为回放的返回值。如果入参不同,则终止回放。