如何用DeepDiff测接口数据源变更?

开发同学最近变更了部分业务查询接口底层的数据源,希望测试同学能够针对这些接口进行一些回归验证,校验底层数据源更新前后业务查询接口返回的一致性,保证更新后对正常业务没有影响。

这个回归测试和一般接口测试有所区别,不仅仅需要回归接口本身业务的正确性,更需要对比并输出优化前后的接口返回值差异,最后给到开发做为修复缺陷的参考依据。

那么我是怎么测的呢?

在与开发对齐测试需求后,我理出了这样一套测试流程:

1、在切换数据源前,根据测试范围尽可能地造业务数据,然后记录下调用接口的参数以及返回值。

2、通知开发切换数据源(可能是个开关配置),切换后,使用切换数据源前已经记录下来的参数再次请求查询接口并记录下返回值。

3、编写 Diff 脚本去输出每个相同的请求参数在切换数据源前后的接口请求返回值差异。

4、最后分析差异,将差异点进行记录并和开发对齐结果。

5、开发进行修复后进行脚本自动回归。

6、循环步骤三到五,直到没有差异或者差异可被接受为止,则测试结束。

如何编写 Diff 脚本?

整个测试流程中比较有技术的点可能是 Diff 脚本编写,我使用的是 Python 里的 DeepDiff 库,他可以很好的对比两个数据之间的差异,比如:

 
  1. from deepdiff import DeepDiff

  2. ddiff = DeepDiff(dict(a=1, b=2), dict(a=2, b=2))

  3. print(ddiff)

输出是:

 
  1. {'values_changed': {"root['a']": {'new_value': 2, 'old_value': 1}}}

  2. Process finished with exit code 0

可以看到输出的是两个 dict 中 key 为 a 的值存在差异的部分,旧的 a 值是 1,而新的 a 值是 2。

将 DeepDiff 带入到整个测试流程中,最终呈现出来的测试结果是这样的:

如何用DeepDiff测接口数据源变更?

自己分析一下 diff_result 结果后就可以愉快地和开发去扯皮了。

最后

从接到需求到完成第一次测试结果输出,我花了大概一天半的时间。整个过程比较顺利,但在真正实践过程中,也遇到了一些需要思考的点。

比如:

1、造业务数据时,很难遍历到所有查询条件集合,那么这时候,至少需要保证主业务完全覆盖。

2、如何高效输出差异对比结果,比如只有存在差异时才输出请求参数、响应和差异点,让结果更好地被分析。

3、分析结果时需要首先将问题归类总结,同样类型的问题可能是一个原因导致的,将问题归类分析后能够更好地缩短和开发扯皮的时间。

最后,希望我这段测试经历能够启发到测试小伙伴,用技术去解决测试问题。

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/7625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Simulink Test进行单元测试

本文摘要:主要介绍如何利用Simulink Test工具箱,对模型进行单元测试。内容包括,如何创建Test Harness模型,如何自动生成excel格式的测试用例模板来创建测试用例,如何手动填写excel格式的测试用例模板来手动创建测试用例…

Redis---------实现查询缓存业务

目录 数据库与缓存之间的工作业务逻辑: 接下来看查询缓存代码实现,主要是捋清楚业务逻辑,代码实现是死的: Controller: Service: P37作业实现:总体逻辑跟上面的业务逻辑差不多 Controller: Service&#…

Azure AKS日志查询KQL表达式

背景需求 Azure(Global) AKS集群中,需要查询部署服务的历史日志,例如:我部署了服务A,但服务A的上一个版本Pod已经被杀掉由于版本的更新迭代,而我在命令行中只能看到当前版本的pod日志&#xff…

SparkSql介绍

概述 SparkSQL,顾名思义,就是Spark生态体系中的构建在SparkCore基础之上的一个基于SQL的计算模块。SparkSQL的前身不叫SparkSQL,而叫Shark,最开始的时候底层代码优化,sql的解析、执行引擎等等完全基于Hive&#xff0c…

科创板门槛升级!解析中国量子企业的上市之路与国际比拼

4月30日晚,中国证监会于发布了修订后的《科创属性评价指引(试行)》(以下简称“新指引”),该指引自发布日起正式生效。本次修订对原有指引中的部分标准进行了调整,具体如下: 1&#x…

如何用Kimi,5秒1步生成流程图

引言 在当前快节奏的工作环境中,拥有快速、专业且高效的工具不可或缺。 Kimi不仅能在5秒内生成专业的流程图(kimi),还允许实时编辑和预览,大幅简化了传统流程图的制作过程。 这种迅速的生成能力和高度的可定制性使得…

Day28:ElasticSearch入门、Spring整合ES、开发社区搜索功能

ElasticSearch入门 Elasticsearch简介 一个分布式的、Restful风格的搜索引擎。支持对各种类型的数据的检索(非结构化的也可以)。搜索速度快,可以提供实时的搜索服务。便于水平扩展(集群式部署),每秒可以处…

一文读懂计算机视觉4大任务:分类任务、检测任务、目标分割任务、关键点检测任务

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

算法系列--多源BFS问题

💕"对相爱的人来说,对方的心意,才是最好的房子。"💕 作者:Lvzi 文章主要内容:算法系列–多源BFS问题 大家好,今天为大家带来的是算法系列--多源BFS问题 前言: 之前我们已经学习过单源的最短路问…

【Toritoise SVN】SVN 怎么忽略文件夹下的所有文件但是不忽略文件夹本身

比如:忽略 Assets\StreamingAssets\LocalAsset文件夹下的所有文件但是不忽略LocalAsset这个文件夹 在TortoiseSVN中,你可以通过以下步骤来修改文件夹的svn:ignore属性: 打开Windows资源管理器,导航到你的工作副本中的Assets\Stre…

VMware虚拟机问题解决方案

1、运行虚拟机系统蓝屏 可能的原因有两个: 1). 虚拟机所在磁盘的空间不足 ; -------> 清理磁盘空间 。 2). 操作系统版本高, 需要适配新版本的Vmware ; ------> 卸载Vmware15版本, 安装Vmware16版本 。 2、卸载VMware的步骤 1)卸载已经安装的VMware 从控制面…

8G防火墙,WAF防火墙,可抵御各种恶意请求、恶意机器人、攻击防御

8G防火墙,WAF防火墙,可抵御各种恶意请求、恶意机器人、攻击防御 经过一年多的 beta 测试,8G 防火墙已准备好在生产现场使用。因此,您可以受益于 nG 防火墙(又名 nG 黑名单)的最新发展提供的强大保护。8G 防…

源代码防泄露可以通过哪些方法实现?七种有效方法分享

在当今数字化时代,访问安全和数据安全成为企业面临的重要挑战。传统的边界防御已经无法满足日益复杂的内网办公环境,层出不穷的攻击手段已经让市场单一的防御手段黔驴技穷。当企业面临越来越复杂的网络威胁和数据泄密风险时,更需要一种综合的…

iOS审核被拒 无法添加以供审核 要开始审核流程,必须提供以下项目

iOS审核被拒 最近有小伙伴反馈上架被拒,提示如下: 无法添加以供审核 要开始审核流程,必须提供以下项目 提交以供审核时遇到意外错误。如果问题仍然存在,请联系我们 后来小伙伴解决方案是:把备案号大写改为小写。 竟…

Ansible自动化工具模块调用与playbook编写

目录 一、Ansible工作机制与特点 (一)Ansible工作机制 1. 初始化与配置 2. 编写Playbook 3. 调用模块 4. 加密敏感数据 5. 执行Playbook 6. 收集执行结果 7. 错误处理与回滚 8. 反馈与报告 (二)Ansible 的主要特点包括…

Java并发编程: Synchronized锁升级

文章目录 一、jdk8 markword实现表二、使用工具来查看锁升级 一、jdk8 markword实现表 new -> 偏向锁 -> 轻量级锁(自旋锁、自适应自旋锁)-> 重量级锁: 偏向锁和轻量级锁都是用户空间完成的。重量级锁是需要向内核申请的。 synchr…

深度学习之基于Matlab神经网络的活体人脸和视频人脸识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 人脸识别技术作为生物识别技术的一种,近年来得到了广泛的关注和应用。与传统的身份认证方…

高素质高学历婚恋相亲交友平台有哪些?分享我的网上找对象成功脱单经历!

尽管觉得在社交软件上找到真爱的可能性很小,但我却时常看到别人成功的案例,这也让我跃跃欲试了。没想到,我真的成功了!以下是我亲身使用过的一些方法,在此与大家分享,仅供参考哦! 👉…

新手做抖音小店多久能出单?新手抖音小店出单秘籍!出单教程必看

大家好,我是电商花花。 现阶段还是有很多朋友加入到抖音电商行业,因为抖音小店上还隐藏很多的红利和市场,很多新手开店后第一个问题就是,店铺开通后,一般多久能出单? 多久能出单,其实更看重的…

深入学习和理解Django视图层:处理请求与响应

title: 深入学习和理解Django视图层:处理请求与响应 date: 2024/5/4 17:47:55 updated: 2024/5/4 17:47:55 categories: 后端开发 tags: Django请求处理响应生成模板渲染表单处理中间件异常处理 第一章:Django框架概述 1.1 什么是Django?…