接口测试 流量回放录制,如何解决代码改动后对中间件数据访问差异的问题

powerless_tester · 2025年05月09日 · 最后由 holydog 回复于 2025年05月14日 · 3761 次阅读

最近在研究流量回放录制,并做了一些 demo,但是发现一个无法解决的问题

预期:线上或者 beta 环境录制流量,除了最基本的 http 请求参数和响应外,也会录制到所有中间件访问的数据(如 mysql redis es 等)
希望可以在线下回放这些请求,通过执行新的代码 + 中间件数据 mock,验证新的代码的正确性。

问题:
新的代码中可能会使用新的 sql 或者中间件数据,这些数据是完全没办法 mock 的,也不太可能使用线上的数据,目前公司也没有将线上的数据同步到线下测试环境(数据安全性问题不可能同步过来),这种场景是不是无解?

共收到 2 条回复 时间 点赞

你先梳理需要哪些表的数据,哪些字段是敏感字段,如何做脱敏,先做了调查出了报告再去找领导协商解决方案。想推一个东西要么有能力把他变成老板的需求,要么有能力全靠自己去实现

啊~~现在来看这是个蛮有意思的问题,
这里可能要解决的问题有两个:

  • 更新原始(录制)的流量中的切面,因为会涉及切面的时序问题,还不能只是简单的新增切面?
  • 更新切面的返回数据

也许 lz 现在更关心的切面返回数据生成?放以前是肯定没法玩了,但是现在也许可以试着用大模型去解

先讨论系统实现问题,实时更新还是异步更新

  • 实时更新 在回放时,每到一个疑似切面的地方都要去触发一次更新,这可能会涉及原来回放模块对于切面的匹配逻辑?再讨论如果用大模型的话,可能回放一次会非常耗时;可能还得加上开关或者新增回放模式,因为不是所有回放都想去做这样的更新?
  • 异步更新 异步更新的话,可能第一反应是异步如何实现的。如果根据静态代码分析来搞,精确度和稳定性会是个大问题;也许可以先回放一次,然后把相关的信息收集起来,然后进行原始流量的更新?
需要 登录 後方可回應,如果你還沒有帳號按這裡 注册