持续交付 36 讲
王潇俊
携程系统研发部总监
39682 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
开篇词 (1讲)
结束语 (1讲)
持续交付 36 讲
15
15
1.0x
00:00/00:00
登录|注册

27 | 利用Mock与回放技术助力自动化回归

抽样和删选回放
压缩回放时间,进行压力测试
正常的原样回放
在集群中扩容一台服务器的软交换
统一的SLB上的拦截和复制转发处理
Mock Server
Weir Mock
EasyMock
Mockito
自研回放工具
回放的多样性
记录用户的请求
携程的Mock Service实践
基于微服务的Mock
基于对象和类的Mock
测试用例的高度仿真
分布式系统的依赖
测试数据的准备和清理
思考题
总结
两大利器之二“回放”技术
两大利器之一Mock
持续交付中的测试难点
自动化回归测试的难点,以及应对方案

该思维导图由 AI 生成,仅供参考

你好,我是王潇俊。今天我和你分享的主题是:利用 Mock 与回放技术助力自动化回归。
在《代码静态检查实践》和《越来越重要的破坏性测试 》这次的分享中,我介绍了对持续交付有重大影响的两个测试类型,即静态代码检查和破坏性测试。
你可能已经发现,这两种测试正好适用于持续集成和测试管理的一头、一尾:
静态代码检查,适合在所有其他测试类型开始之前优先进行,把住第一关;
破坏性测试,则适用于集成或验收测试之后,甚至是对系统进行持续长久的测试。
那么,我们现在再一起来看看,持续交付过程中还有哪些测试方法,以及还有哪些问题和难点吧。

持续交付中的测试难点

其实,对于持续交付中的测试来说,自动化回归测试是不可或缺的,占了很大的测试比重。而进行自动化回归测试,就始终会有“三座大山”横在你面前。
“第一座大山”:测试数据的准备和清理。
通常情况下,回归测试的用例是可以复用的,所以比较固定,结果校验也比较确定。而如果要实现回归测试的自动化,就需要保证每次测试时的初始数据尽量一致,以确保测试脚本可复用。
如果每次的数据都不同,那么每次的测试结果也会受到影响。为了做到测试结果的可信赖,就有两种方法:
一种是,每次全新的测试都使用全新初始化数据;
另一种是,在测试完成后,清除变更数据,将数据还原。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了自动化回归测试中的三大难点:测试数据的准备和清理、分布式系统的依赖、以及测试用例的高度仿真。针对这些难点,作者提出了利用Mock与回放技术的解决方案。Mock技术通过模拟外部依赖,使得测试用例更独立、提升执行速度、以及提高测试用例准备的效率。文章还介绍了基于对象和类的Mock框架,以及基于微服务的Mock框架的应用场景和实践经验。作者还分享了携程的Mock Service实践,通过构建一套Mock Service来代理所有服务的请求和返回,解决了大规模服务依赖的Mock需求。通过介绍Mock与回放技术的应用,为读者提供了解决自动化回归测试难点的实用方案,为持续交付流程的效率提升提供了有力支持。文章还分享了“回放”技术,即通过虚拟交换机记录生产用户的实际请求,在测试时“回放”这些真实操作,以达到更逼真地模拟用户行为的目的,从而解决了自动化回归测试遇到的第三个问题。通过Mock和“回放”技术,能够提高自动化回归测试的效率和准确度,使整个持续交付过程更顺滑,自动化程度更高。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《持续交付 36 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • debugtalk
    很多流量是具有时效性,或者不可重复性的,对于这类流量你们是怎么复制回放的呢?

    作者回复: 流量请求本身不会具有问题,只是对数据产生影响,对数据加以处理,或者利用影子库来处理,就可以了

    2018-11-01
    5
  • zhf_sy
    第二种方案是,在集群中扩容一台服务器,在该服务器上启动一个软交换,由该软交换负责复制和转发用户请求,而真正的用户请求,仍旧由该服务器进行处理。 请问这个技术上怎么实现?复杂吗?

    作者回复: 一般类似ovs这样的软交换都有分流功能,技术上,熟悉网络及设备的话,也不是很复杂

    2018-09-19
    1
  • 疯癫
    回放是对请求的记录和复制,主要是接口层面,那么app端的功能回归测试,有没有方法获得用户操作的真实场景呢?

    作者回复: 触发某些行为才能记录,用户行为可以靠埋点,但批量模拟还是比较麻烦的

    2018-12-24
  • 孙瑜
    针对回过测试流程,公司项目中的接口和UI先不论,比较痛苦的是公司数据处理有大量存储过程,然后近半年用帆软reports开发了大量的报表 软件升级时人工回归测试工作量巨大。
    2020-03-21
    1
  • zhongjia19900829
    生产和测试的环境的数据 怎么保持一致?
    2019-01-29
    1
  • 王毅
    流量拷贝算不算回放的一种?
    2019-01-08
    1
  • lyonger
    老师,[通过虚拟交换机,复制和记录生产用户的实际请求],这个相当于用户所有请求的入口都要经过这个虚拟交换机,不会有单点或者性能瓶颈么?
    2021-03-12
  • 楚耳
    回放这块,如果都是写的接口也进行回放吗,这样不会对生产环境数据产生影响吗
    2020-05-18
  • 王凡
    ”mock可以解决数据的准备和清理的工作”请问怎么做到的?我目前理解的mock只是对第依赖部分不产生真实数据,但mock的上下游服务如果有数据产生,则依旧会产生,还是需要额外去做数据准备和清理,不知道理解是否有偏差?
    2019-06-16
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部