zl程序教程

您现在的位置是:首页 >  其它

当前栏目

ServiceMock录制回放

录制 回放
2023-06-13 09:16:06 时间
  • 原理:

利用Sping AOP拦截方法执行从而实现录制回放

  • 匹配算法

指定具体类和方法

通配包、类和方法名

上述两种的并级

  • 工作模式:

录制:将某个方法的执行过程录制下来,形成MockRecord并序列化成JSON文件

回放:在某个方法执行时,如果是回放范围内的,则拦截该方法的执行,将匹配方法执行的MockRecord记录作为本次执行的结果进行返回

增量录制:在回放时,如果查无记录,则执行真实的方法并进行录制

  • 使用场景:

辅助集成测试:开发人员使用JUnit5+SpringBootTest进行集成测试,并使用@ServiceMock来指定依赖进行录制和回放。

接口录制回放:在微服务运行时,通过拦截HTTP请求和处理过程中的指定依赖来自动形成可用于回放的接口自动化用例。

后端重新录制:根据提供的HTTP请求文件来回放并重新录制指定依赖来更新接口自动化用例。

  • 特殊使用场景:

异常录制:如果方法在执行过程中产生了异常,则需要记录该异常,以便于回放时将相同的异常作为该方法被再次执行时的结果。

有状态回放:默认情况下,在回放时将返回匹配到的第一条MockRecord记录。某些情况下,如转账前后,查询账户余额,相同请求下希望有不同的返回值,因此设计了有状态回放来支持该类场景。

入参改变:在方法执行的前后,该方法的入参可能发生变化,如某方法的入参是某个实体,该实体的某个属性如ID在方法执行后被赋值,或者该方法的某个入参是Map,且该Map在方法执行后插入了额外的记录。

模拟匹配:方法入参中如果有时间戳、序列号等每次方法执行会发生改变的场景,可以通过模糊匹配的方式来解决

Mock回调接口:对于特别复杂的场景,可以通过这个回调接口来由用户自行修改录制的Mock数据用于回放,满足一些个性需求

  • 特殊的序列化反序列化算法:

对无法进行序列化的流、迭代器、文件、泛型、会话、前端分页等的录制和回放方法

双重开关,

加载开关:生产上默认不加载,避免生产意外

启用开关:必须指定开启之后再行工作,按需开启

工具原型见 2021第一篇-流量录制回放完整案例