| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 减少联调、高效集成,试试这个工具 -> 正文阅读 |
|
[开发测试]减少联调、高效集成,试试这个工具 |
这里是Z哥的个人公众号 每周五11:45 按时送达 当然了,也会时不时加个餐~ 我的第「217」篇原创敬上 大家好,我是Z哥。 最近在工作中学习到一个我觉得很有价值的小工具,在这里与大家分享一下。 这个小工具需要自己稍作开发,并不存在什么第三方的现成工具供你使用,因为这个工具的核心关键是「数据」,而「数据」这个东西对于不同的项目天然是不同的。 可能有的小伙伴已经猜到了,我今天要聊的就是一个mock工具(暂且叫这个名字吧,它的能力其实不仅仅只是mock数据)。 多团队协作中,很多功能的实现需要依赖于其它的子系统。这不但影响开发进度,还会导致测试工作开展不太顺利。这个问题在涉及多团队协作的分布式系统中尤其突出。 如果每个子系统都能够内置一个mock工具(模块),通过数据的自动生成,导入和导出,可以灵活地在不同环境上快速地让系统run起来,哪怕自己还没有真正地完成内部的业务逻辑代码编写。 可能你会觉得说,现在很多工具都支持根据定义的API自动生成mock数据啊,postman、apifox、yapi等等,为啥还要自己搞呢。 最大的价值在于以下几点:
总体来看,这样一个工具我们在实现的时候需要具备以下这些能力。
下面我们一个个展开说说。 /01??自动生成mock数据/ 自动生成mock数据是这个工具的最核心功能。但在这之前还有一件更加重要的事情要做,就是:需要提前确定对外提供的 API 契约,如此才能得到相应的输入和输出参数。然后我们再考虑如何生成mock数据的事情。 当然,生成的数据必须要符合契约定义中的标准。比如,
其次,生成的mock数据,需要尽可能地覆盖更多的场景。 另外,生成的mock数据中如果存在一些依赖于外部系统的唯一ID,允许传入一个ID生成器的hook,确保生成的Mock数据中的唯一ID在指定范围内。 然后,生成的mock数据需要持久化到硬盘上,以提供长期使用。 最后,可以指定生成某个API相关的mock数据,而非全部数据。 /02??清除数据/ 可以通过清除数据,重置mock数据回到初始状态,以清理不符合当前API标准的垃圾数据。实现这个功能主要有两个点:
/03? 导入数据/ 通过配合导入mock数据功能,快速复制出一个完全相同的mock环境。实现这点也有两个点:
/04? 导出数据/ 通过配合导出mock数据功能,快速复制出一个完全相同的mock环境。 导入数据时,需要进行数据合法性验证。如果数据不合法,需要进行处理,有两种情况:
/05??mock开关/ 通过控制开关,灵活切换使用真实业务存储中的数据还是使用Mock存储中的数据。 /06??mock数据的条件匹配/ 可以对mock数据的返回内容进行「条件匹配」配置,以满足两种能力: 1. 限定返回的数据范围。 2. 实现返回的出参一定与入参存在相关性。 /07? mock外部依赖数据/ 可以将以上能力运用在所依赖的外部数据上,以提供系统「无依赖独立运行」的能力。 具备这个能力后,你所负责系统的测试工作可以不用等待所依赖的外部系统全部都准备就绪后才能开展,可以独立进行。 好了,就这么多。可能有的小伙伴会觉得,要实现这么多能力,得多大工作量啊。 我觉得这个问题不能这么考虑,我们还要考虑这个工具可以节省多少时间。节约的这个时间不仅仅是你自己做自测的时间,还有团队中其他人的时间。而且这个工具可以长期反复使用,时间拉得越长,它所发挥的价值也越大。 惯例总结一下。 这篇呢,Z哥和你分享了一个我认为很有价值的工具,一个需要我们自行开发的mock工具,它可以提升整个团队的长期效能。 这个工具需要实现以下7个能力:
我相信,一旦你提供了这个工具,在团队中你将拥有很好的人缘和口碑~ 不知道你是如何看待类似的mock工具的?欢迎和大家一起聊聊你的看法~ 推荐阅读: 原创不易,如果你觉得这篇文章还不错,就「点赞」或者「在看」一下吧,鼓励我的创作 :) 也可以分享我的公众号名片给有需要的朋友们。 如果你有关于软件架构、分布式系统、产品、运营的困惑 可以试试点击「阅读原文」 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 4:17:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |