软件测试 52 讲
茹炳晟
腾讯 TEG 基础架构部 T4 级专家
71691 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 63 讲
结束语 (1讲)
软件测试 52 讲
15
15
1.0x
00:00/00:00
登录|注册

38 | 测试数据的“银弹”- 统一测试数据平台(下)

Jenkins Job自动创建
数据质量和数量管理机制
Core Service和内部数据库
Out-of-box
Smart
Create Only
Search Only
Out-of-box数据需求
时间效率
测试数据新建要求
执行效率考虑
创建指定国家和支付方式用户
创建指定国家用户
创建默认值用户
维护成本低
使用便利性
数据灵活性
最佳实践
架构设计
Build Strategy
新需求
实例
优点
数据准备函数的封装方式
思考题
统一测试数据平台
Spring Boot包装成Restful API
解决跨平台使用数据准备函数问题
Builder Pattern的引入
封装函数隐藏默认参数初始化细节
测试数据准备的典型方法
3.0时代
2.0时代
1.0时代
测试数据准备时代的演变

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

你好,我是茹炳晟,今天我分享的主题是:“测试数据的“银弹”之统一测试数据平台(下)”。
在上一篇文章中,我和你分享了测试数据准备 1.0 时代的实践,在这个 1.0 时代,测试数据准备的最典型方法是,将测试数据准备的相关操作封装成数据准备函数。今天,我将继续为你介绍测试数据准备的 2.0 和 3.0 时代的实践,看看创建测试数据的方法,又发生了哪些变革。
在 1.0 时代,为了让数据准备函数使用更方便,避免每次调用前都必须准备所有参数的问题,我和你分享了很多使用封装函数隐藏默认参数初始化细节的方法。
但是,这种封装函数的方式,也会带来诸如需要封装的函数数量较多、频繁变更的维护成本较高,以及数据准备函数 JAR 版本升级的尴尬。所以,为了系统性地解决这些可维护性的问题,我们对数据准备函数的封装方式做了一次大变革,也由此进入了测试数据准备的 2.0 时代。

测试数据准备的 2.0 时代

在测试数据准备的 2.0 时代,数据准备函数不再以暴露参数的方式进行封装了,而是引入了一种叫作 Builder Pattern(生成器模式)的封装方式。这个方式能够在保证最大限度的数据灵活性的同时,提供使用上的最大便利性,并且维护成本还非常低。
事实上,如果不考虑跨平台的能力,Builder Pattern 可以说是一个接近完美的解决方案了。关于什么是“跨平台的能力”,我会在测试数据准备的 3.0 时代中解释,这里先和你介绍我们的主角:Builder Pattern。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

测试数据准备的演变历程从1.0时代的数据准备函数封装到2.0时代的Builder Pattern,再到3.0时代的统一测试数据平台。Builder Pattern解决了数据准备的问题,但随着新需求的出现,引入了Build Strategy的概念。针对跨平台的能力,提出了统一测试数据平台的概念,将数据准备函数转变为Restful API,为各类测试框架提供统一的数据准备方案。统一测试数据平台不断演变,引入了Core Service和内部数据库,提供数据质量和数量的管理机制。通过自动创建Jenkins Job和内部数据库的机制,实现了Out-of-box的数据准备,缩短测试用例的执行时间。总体而言,Builder Pattern在提供数据灵活性和便利性方面表现优异,而统一测试数据平台则为跨平台和跨语言的测试框架提供了统一的数据准备方案,并且可以进一步引入高级功能。

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

全部留言(43)

  • 最新
  • 精选
  • Joie
    好激动,老师说到的3.0是我在项目中自己摸索总结出来的,上个月已经投产使用,目前在进行优化中,将数据自动生成,case的一些规则都进行分层处理。很棒,方向是对的,继续努力。

    作者回复: 赞👍这个的确就是数据准备的大方向,尤其规模大了之后更显的关键

    2018-09-26
    6
    33
  • Robert小七
    怎么觉得最近的文章都是普及概念了

    作者回复: 很多时候概念本身比会使用工具来得重要的多,对于测试数据准备的文章中介绍的很多方法和理念都是外面找不到的,都是来自于大项目中的工程实践,如果大家对工具本身的使用更感兴趣,我还是建议通过官方文档进行学习,但是怎么找到适合你的工具,以及学习这些工具设计的思路,还是要能够掌握原理。

    2018-09-24
    20
  • Geek_723829
    内部数据库存储的是创建的同类型数据,还是存储的是同类型数据的ID而已,再到真实数据库中取?

    作者回复: 存储的是id和其他用于筛选数据的相关字段,实际的数据还是在真正的被测系统的数据库中的

    2019-01-09
    11
  • silver_mango
    从移动大会的ppt演讲一直追到这里,受益匪浅。思路非常重要。感谢老师!

    作者回复: 哈哈,感谢支持,有问题随时交流

    2018-12-04
    4
  • 朝如青丝暮成雪
    最近数据这块出现了问题,回头有读了一遍。理解了测试数据2.0时代,但是到3.0就不太懂了,我目前的理解是:把准备数据函数抽象成接口,和swagger链接,这样直接通过swagger的图形界面输入要测试的数据,把测试数据写入数据库。是这样吗?麻烦老师回答一下。

    作者回复: 不完全是,swagger只是提供一个界面方便测试和gui,并不会影响3.0自己的逻辑,3.0强调的是服务化

    2019-05-10
    3
  • rachel
    思路挺好。但是感觉是虚的、不落地。有源码供研究或更详细的框架设计思路就好了。

    作者回复: 实际项目已经投入使用,但是由于不开源,无法提供源代码

    2018-09-25
    3
    3
  • 蜜拉
    请问,Builder Pattern内部还是操作API或者数据库来造数据的嘛?

    作者回复: 是的,内部实现还是数据准备函数,只是在此基础上加了一层易用性的封装

    2018-09-25
    3
  • 阿嬷
    如果使用pyrhon开发,是不是就不存在需要封装多个参数组合函数的问题?

    作者回复: 也是需要的,看你怎么来设计

    2019-01-07
    2
  • 一池浮萍
    挺好的思路

    作者回复: 感谢支持

    2018-09-25
    2
  • 小北
    Restful API 不推荐使用create 这样的动词命名。貌似应该用put get post 这些表示创建修改的动作。

    作者回复: 你说的对的,create指的是后台实际执行的操作,而restful api暴露的还是标准化的method

    2018-09-25
    1
收起评论
显示
设置
留言
43
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部