当前主流依赖模拟工具并非针对云原生架构设计。这些工具诞生于服务有固定发布周期、上游依赖变更缓慢且明确、测试团队可清晰掌握依赖行为的时代,而云原生架构已经完全不同。
在云原生架构中,数十个服务通过独立流水线按各自计划部署,不需要下游团队协调就可以变更行为。这种设计和实际需求的差异,是大部分集成测试准确性问题的根源。每个服务独立部署后,旧有的依赖模拟不会自动更新,随着未同步跟踪的上游部署越来越多,模拟和实际行为的偏差会不断变大。传统依赖模拟工具本身没有解决这个问题的机制,WireMock不知道虚拟服务什么时候部署了新版本,手写模拟不会自动更新,基于规范的虚拟服务也只能反映规范而非当前实际部署的行为,最终测试面板显示一切正常,背后却不断积累行为偏差。
针对云原生环境,依赖模拟工具需要四个核心能力:首先是能感知部署事件,对接CI/CD流水线事件流,收到部署通知后自动触发模拟刷新流程,不需要人工介入。其次是能从真实服务交互中捕获行为,基于记录的真实交互而非文档规范生成模拟,保证模拟和实际行为一致。第三是自动处理非确定字段,比如请求ID、时间戳这类每次调用都会变化的内容,不需要开发人员手动标注。最后是提供跨服务差异可见性,明确告知上游服务行为变更的具体细节,帮助下游团队判断是否需要同步修改代码。
Keploy基于eBPF在内核层完成流量捕获,和基于规范的工具形成差异。它通过记录重放功能拦截服务间真实HTTP交互,生成的模拟可以直接反映观测到的服务行为。内核级捕获不限制语言和框架,适合多语言共存的云原生架构。同时Keploy可以集成到CI/CD流程中,在依赖服务变更时重新记录交互、刷新模拟。
评估云原生架构的依赖模拟工具,核心关注点不在于部署难度或文档质量,而是能否处理部署后变更:感知部署发生、捕获真实服务当前行为、明确展示行为变更、在服务依赖网格中自动扩展,不需要逐个服务手动处理。符合这些要求才能解决云原生下的依赖模拟问题,否则只能让团队自行补充能力,或是接受集成测试准确度随上游开发频率不断下降。
