软件测试52讲
茹炳晟
eBay中国研发中心,测试基础架构技术主管
立即订阅
13425 人已学习
课程目录
已完结 63 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 从“小工”到“专家”,我的软件测试修炼之道
免费
测试基础知识篇 (11讲)
01 | 你真的懂测试吗?从“用户登录”测试谈起
02 | 如何设计一个“好的”测试用例?
03 | 什么是单元测试?如何做好单元测试?
04 | 为什么要做自动化测试?什么样的项目适合做自动化测试?
05 | 你知道软件开发各阶段都有哪些自动化测试技术吗?
06 | 你真的懂测试覆盖率吗?
07 | 如何高效填写软件缺陷报告?
08 | 以终为始,如何才能做好测试计划?
09 | 软件测试工程师的核心竞争力是什么?
10 | 软件测试工程师需要掌握的非测试知识有哪些?
11 | 互联网产品的测试策略应该如何设计?
GUI自动化测试篇 (10讲)
12 | 从0到1:你的第一个GUI自动化测试
13 | 效率为王:脚本与数据的解耦 + Page Object模型
14 | 更接近业务的抽象:让自动化测试脚本更好地描述业务
15 | 过不了的坎:聊聊GUI自动化过程中的测试数据
16 | 脑洞大开:GUI测试还能这么玩(Page Code Gen + Data Gen + Headless)?
17 | 精益求精:聊聊提高GUI测试稳定性的关键技术
18 | 眼前一亮:带你玩转GUI自动化的测试报告
19 | 真实的战场:如何在大型项目中设计GUI自动化测试策略
20 | 与时俱进:浅谈移动应用测试方法与思路
21 | 移动测试神器:带你玩转Appium
API自动化测试篇 (3讲)
22 | 从0到1:API测试怎么做?常用API测试工具简介
23 | 知其然知其所以然:聊聊API自动化测试框架的前世今生
24 | 紧跟时代步伐:微服务模式下API测试要怎么做?
代码测试篇 (3讲)
25 | 不破不立:掌握代码级测试的基本理念与方法
26 | 深入浅出之静态测试方法
27 | 深入浅出之动态测试方法
性能测试篇 (7讲)
28 | 带你一起解读不同视角的软件性能与性能指标
29 | 聊聊性能测试的基本方法与应用领域
30 | 工欲善其事必先利其器:后端性能测试工具原理与行业常用工具简介
31 | 工欲善其事必先利其器:前端性能测试工具原理与行业常用工具简介
32 | 无实例无真相:基于LoadRunner实现企业级服务器端性能测试的实践(上)
33 | 无实例无真相:基于LoadRunner实现企业级服务器端性能测试的实践(下)
34 | 站在巨人的肩膀:企业级实际性能测试案例与经验分享
测试数据准备篇 (4讲)
35 | 如何准备测试数据?
36 | 浅谈测试数据的痛点
37 | 测试数据的“银弹”- 统一测试数据平台(上)
38 | 测试数据的“银弹”- 统一测试数据平台(下)
测试基础架构篇 (4讲)
39 | 从小作坊到工厂:什么是Selenium Grid?如何搭建Selenium Grid?
40 | 从小工到专家:聊聊测试执行环境的架构设计(上)
41 | 从小工到专家:聊聊测试执行环境的架构设计(下)
42 | 实战:大型全球化电商的测试基础架构设计
测试新技术篇 (5讲)
43 | 发挥人的潜能:探索式测试
44 | 测试先行:测试驱动开发(TDD)
45 | 打蛇打七寸:精准测试
46 | 安全第一:渗透测试
47 | 用机器设计测试用例:基于模型的测试
测试人员的互联网架构核心知识篇 (5讲)
48 | 优秀的测试工程师为什么要懂大型网站的架构设计?
49 | 深入浅出网站高性能架构设计
50 | 深入浅出网站高可用架构设计
51 | 深入浅出网站伸缩性架构设计
52 | 深入浅出网站可扩展性架构设计
特别放送篇 (8讲)
测试专栏特别放送 | 答疑解惑第一期
测试专栏特别放送 | 答疑解惑第二期
测试专栏特别放送 | 答疑解惑第三期
测试专栏特别放送 | 答疑解惑第四期
测试专栏特别放送 | 答疑解惑第五期
测试专栏特别放送 | 答疑解惑第六期
测试专栏特别放送 | 答疑解惑第七期
测试专栏特别放送 | 浅谈全链路压测
测一测 (1讲)
测一测 | 这些软件测试题目,你都掌握了吗?
结束语 (1讲)
结束语 | 不是结束,而是开始
软件测试52讲
登录|注册

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

茹炳晟 2018-09-24
你好,我是茹炳晟,今天我分享的主题是:“测试数据的“银弹”之统一测试数据平台(下)”。
在上一篇文章中,我和你分享了测试数据准备 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/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《软件测试52讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(31)

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

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

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

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

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

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

    2019-01-09
    2
  • 口水窝
    在我学习本篇文章后,对于3.0的看法就是,包装了一套能够顾兼容Java、Python和JavaScript框架的2.0版本,且一直在内部数据库中存储着100条待用的数据,这就减少了数据准备时间。但是基于我对Restful接口和SpringBoot框架不了解,对于3.0的原理还是懵懂的,且后面有点余味尤尽、戛然而止的感觉,不知道茹老师可否进一步扩展呢?
    2019-05-15
    1
  • 楚耳
    老师你文中提到,Core Service 会自动在后台创建一个 Jenkins job 当内部数据库少于20条数据时,自动补足数据,这个内部数据库的数据是用一条就删一条嘛,不然怎么知道只有20条是有效的数据, 还有这个job是循环去扫描数据库嘛,查看是否少于20条数据
    2019-02-19
    1
  • SugarZh
    Build Pattern确实实现了统一封装,方便了调用;但是如果系统业务发生调整,对应的测试数据肯定就要发生改变,那么还是要从新修改Build Pattern底层的实现逻辑;这样的工作也不小啊;
    毕竟对于纯互联网公司,业务随时可能发生变化,对应的测试数据的变化,也会带来一定的麻烦。
    2018-12-16
    1
  • 一池浮萍
    挺好的思路

    作者回复: 感谢支持

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

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

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

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

    2018-09-25
    1
  • 痕近痕远
    涨见识了。

    作者回复: 能够有收获就好

    2018-09-24
    1
  • Gz
    Builder Pattern 这种模式用其他语言实现就好吧 里面没问题 只是有些时候 人少 真的拉不起来平台化🤦‍♀️
    2019-10-29
  • 咕咕咕
    非常感谢老师的分享,确实都是干货,但是鉴于自己是小白,很多东西都只是有了一个懵懂的概念。以后能够实际实践并且弄明白的时候再回来打卡。
    2019-10-22
  • lerame
    node属于哪种平台是在注册node是配置吗?还是hub探测的?
    2019-06-30
  • 彬彬ieeeeemily
    3.0可以理解为 创建了测试数据后,把测试数据在内部库中存储一份,他人来用的时候通过条件筛选内部库中的数据? 或者想要重新生成就数据服务直接生成返回?
    2019-05-16
  • 朝如青丝暮成雪
    最近数据这块出现了问题,回头有读了一遍。理解了测试数据2.0时代,但是到3.0就不太懂了,我目前的理解是:把准备数据函数抽象成接口,和swagger链接,这样直接通过swagger的图形界面输入要测试的数据,把测试数据写入数据库。是这样吗?麻烦老师回答一下。

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

    2019-05-10
  • 彬彬ieeeeemily
    思路扩展,有老师这样的思路,通用,更效率永远是大方向
    2019-05-09
  • johnny
    这篇文章读了2遍才算基本看懂。读之前我觉得需要先理解一个知识点:Java设计模式-建造者设计模式(Builder Pattern)。
    2019-03-05
    1
  • liangce
    赞一个,3.0版的核心功能大致已然了解。有好几个问题想继续请教一下:
    1.测试数据的元数据具体指的是?
    2.架构图中非核心部分
    2.1 架构图中后面涉及到的“testdata preparation tool”指的是封装了数据制造api的sdk?
    2.2 还有 “testdata validation tool” 指的又是什么?用处是什么?
    3.数据质量和数量的管理机制,用哪些指标来度量数据质量?有一些什么样的管理机制?(沉淀有共性的基础数据、服务?下线失败率高的服务?清理历史无用的数据?)
    4.关于多环境的问题
    (开发环境、测试环境(功能、性能、异常)、预发布、线上),我本以为所有服务都有“环境”这个参数来控制agent我看您的回答中也提到有“数据版本”,版本是针对服务的、还是testcase、还是?能再详细一些介绍一下么?
    2019-02-17
  • 阿嬷
    如果使用pyrhon开发,是不是就不存在需要封装多个参数组合函数的问题?

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

    2019-01-07
  • subona
    想了解下build strategy怎么做,老师能推荐相关的学习方向吗
    2018-12-21
收起评论
31
返回
顶部