网站虚拟旅游怎么做的,响应式的网站做优化好吗,wordpress做的视听网站,上海开公司需要多少钱大家好#xff0c;我是Z哥。最近在工作中学习到一个我觉得很有价值的小工具#xff0c;在这里与大家分享一下。这个小工具需要自己稍作开发#xff0c;并不存在什么第三方的现成工具供你使用#xff0c;因为这个工具的核心关键是「数据」#xff0c;而「数据」这个东西对于… 大家好我是Z哥。最近在工作中学习到一个我觉得很有价值的小工具在这里与大家分享一下。这个小工具需要自己稍作开发并不存在什么第三方的现成工具供你使用因为这个工具的核心关键是「数据」而「数据」这个东西对于不同的项目天然是不同的。可能有的小伙伴已经猜到了我今天要聊的就是一个mock工具暂且叫这个名字吧它的能力其实不仅仅只是mock数据。多团队协作中很多功能的实现需要依赖于其它的子系统。这不但影响开发进度还会导致测试工作开展不太顺利。这个问题在涉及多团队协作的分布式系统中尤其突出。如果每个子系统都能够内置一个mock工具模块通过数据的自动生成导入和导出可以灵活地在不同环境上快速地让系统run起来哪怕自己还没有真正地完成内部的业务逻辑代码编写。可能你会觉得说现在很多工具都支持根据定义的API自动生成mock数据啊postman、apifox、yapi等等为啥还要自己搞呢。最大的价值在于以下几点这种方式支持在不同环境提供一份相同的数据如唯一id等等便于对相关的上下游系统屏蔽掉环境不同的影响。而使用上面提到的工具很难实现这点。导入和导出功能可以作为在没有打通上下游系统之前的手动关联上下游系统的一种方式。自动生成的数据可以针对多个API进行共享使用以模拟“上下文”的感觉让mock这件事变得更加贴近真实而不是很假不管输入的参数是什么都只能固定返回某个数据。基于上面第3点我们可以再通过某种语法串联起多个API的调用快速验证mock出来的数据是否符合预期。并且这个串联调用的case可以保存下来在真实的业务逻辑实现后再运行一下快速验证自己的真实实现是不是存在什么bug。相当于同时编写了一个针对该项目定制的自动化测试工具。基于上面第4点可以不断地丰富case以提高case所覆盖的场景。这不但丰富了数据样本也提高了使用该工具进行自动化测试的效果。总体来看这样一个工具我们在实现的时候需要具备以下这些能力。自动生成mock数据清除数据导入数据导出数据mock开关mock数据的条件匹配mock外部依赖数据下面我们一个个展开说说。/01 自动生成mock数据/自动生成mock数据是这个工具的最核心功能。但在这之前还有一件更加重要的事情要做就是需要提前确定对外提供的 API 契约如此才能得到相应的输入和输出参数。然后我们再考虑如何生成mock数据的事情。当然生成的数据必须要符合契约定义中的标准。比如字段的格式。int32还是int64字符串的格式等等。入参和出参的相关性比如输入参数中传入的单据号应该与输出参数中的单据号保持一致以体现输入和输出之间的相关性。……其次生成的mock数据需要尽可能地覆盖更多的场景。另外生成的mock数据中如果存在一些依赖于外部系统的唯一ID允许传入一个ID生成器的hook确保生成的Mock数据中的唯一ID在指定范围内。然后生成的mock数据需要持久化到硬盘上以提供长期使用。最后可以指定生成某个API相关的mock数据而非全部数据。/02 清除数据/可以通过清除数据重置mock数据回到初始状态以清理不符合当前API标准的垃圾数据。实现这个功能主要有两个点清除数据时需要考虑数据间的关联关系比如清除单据类数据时也应当清除与该单据相关的明细数据。可以指定清除某个指定API的mock数据而非全部数据。/03 导入数据/通过配合导入mock数据功能快速复制出一个完全相同的mock环境。实现这点也有两个点可以导出指定API的mock数据而非全部数据。 导出的数据建议为csv或者excel格式便于二次编辑。/04 导出数据/通过配合导出mock数据功能快速复制出一个完全相同的mock环境。导入数据时需要进行数据合法性验证。如果数据不合法需要进行处理有两种情况缺失的数据如果可以自动填充缺省值则自动修正。非法数据或者无法自动填充的缺失数据进行相应的提示。/05 mock开关/通过控制开关灵活切换使用真实业务存储中的数据还是使用Mock存储中的数据。/06 mock数据的条件匹配/可以对mock数据的返回内容进行「条件匹配」配置以满足两种能力1. 限定返回的数据范围。2. 实现返回的出参一定与入参存在相关性。/07 mock外部依赖数据/可以将以上能力运用在所依赖的外部数据上以提供系统「无依赖独立运行」的能力。具备这个能力后你所负责系统的测试工作可以不用等待所依赖的外部系统全部都准备就绪后才能开展可以独立进行。好了就这么多。可能有的小伙伴会觉得要实现这么多能力得多大工作量啊。我觉得这个问题不能这么考虑我们还要考虑这个工具可以节省多少时间。节约的这个时间不仅仅是你自己做自测的时间还有团队中其他人的时间。而且这个工具可以长期反复使用时间拉得越长它所发挥的价值也越大。惯例总结一下。这篇呢Z哥和你分享了一个我认为很有价值的工具一个需要我们自行开发的mock工具它可以提升整个团队的长期效能。这个工具需要实现以下7个能力自动生成mock数据清除数据导入数据导出数据mock开关mock数据的条件匹配mock外部依赖数据我相信一旦你提供了这个工具在团队中你将拥有很好的人缘和口碑不知道你是如何看待类似的mock工具的欢迎和大家一起聊聊你的看法推荐阅读程序员必备《新老系统切换宝典》golang使用3周总结原创不易如果你觉得这篇文章还不错就「点赞」或者「在看」一下吧鼓励我的创作 也可以分享我的公众号名片给有需要的朋友们。如果你有关于软件架构、分布式系统、产品、运营的困惑可以试试点击「阅读原文」