性能测试工具 Goreplay 流量录制重放到测试环境,性能测试过程中遇到的问题

bengi · 2020年08月28日 · 最后由 da-pengTT 回复于 2020年10月07日 · 3918 次阅读

目前这边是做交易,微服务 a.交易下单 b.鉴权服务
我想录制下单服务的流量,并重放到测试环境

问题:

  1. 用户下单过程中可能有交易平仓等操作,这种如果保证重放到测试环境这种做减法的操作用户手里有对应的股票持仓。(扫描全部流量数据针对用户持仓 sql 预处理?如果这样做的话重发其他模块如果有类似做减法的操作是不是都得这样处理,挺麻烦)。

  2. 录制过程中,可能有些用户已经登录了,然后我才开始录制线上流量,那么这个用户后续的操作都是基于 sessionId,如何确保这个用户请求重放到测试环境的时候是有 sessionid 的(只有 sessinid ,没有用户账号信息,我想的是准备一个通用测试账号先登录好,然后使用这个用户的 sessionid,还有一种方法就是 mock 掉鉴权方法)

希望向大佬们了解下是怎么搞的,不胜感激~

共收到 4 条回复 时间 点赞

up?

写流量的回放一直是业界难题,之前参加过的分享,看阿里的团队也没说完全搞定了这个。
如果说有能力在测试环境生成测试数据,在录制流量时,可以通过中间件将各请求入参替换为合理的数据再转发到测试环境。
或者可以从生产环境拉指定的用户数据到测试环境,然后录制时根据 cookie,session 等信息只录制这些用户的请求,这样可以保证录制的请求转发可以通过。
如果为了处理写请求带来的时间成本大于正常设计用例的时间成本,可以考虑放弃。
我们这边现在的做法是读请求直接回放,写请求记录用户的入参用来增加用例的覆盖度。

MarvinWu 回复

感谢回复,
我们这边现在的做法是读请求直接回放,写请求记录用户的入参用来增加用例的覆盖度。
后半句怎么理解呢,是记录入参自己构造数据么,还是直接不处理了

MarvinWu 回复

过去式的请求,过去式的数据。如果要回放,这些过去式的状态都需要保留,这个需要的处理成本很高

bengi 关闭了讨论 04月07日 15:20
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册