接口测试-录制回放-diffy

这篇具有很好参考价值的文章主要介绍了接口测试-录制回放-diffy。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是Diffy

diffy是一种接口自动化测试工具。

传统的自动化测试是定义好接口的输入,比对输出是否和预期一致,传统自动化测试的优势是可以定义自己想要对比的字段,进行较为精准的自动化测试,缺点是前期投入的成本较高,另外对测试人员的要求较高。

接口经过测试没有问题,接口输出可以视为预期结果。这时代码如果有变更,能够保证接口的输出和预期结果一致,则可以保证该接口没有问题。

diffy的原理是发送相同入参到两个版本的代码对应的接口,对比接口返回的差异,从而判断接口出参是否符合预期。该种方式可以降低接口自动化成本。

具体可以参考如下链接:https://gitee.com/mirrors_opendiffy/diffy#what-is-diffy

Diffy的工作原理

Diffy充当一个代理,它接受请求并分发到不同版本的服务中,对比结果差异。
接口测试-录制回放-diffy

如上图所示,diffy需要分发请求给三个服务,分别为:

candidate :该版本是待测版本。

primary:该版本通常是已经上线版本,或者是已知功能正常的版本。

secondary:该版本是primary的副本,和primary运行相同的代码,主要用于排除噪声。

diffy的运行过程为:

对比candidate和primary版本的输出差异作为raw differences
对比primary和secodary的结果差异作为降噪non-deterministic noise
根据raw differences和non-deterministic noise输出最终结果,展示报告(non-deterministic noise无差异则展示raw differences,如果non-deterministic noise和raw differences都有差异,则测试过程中可能受到了环境等其他因素影响,最后展示结果为无差异)
具体可以参考如下链接:https://gitee.com/mirrors_opendiffy/diffy#how-does-diffy-work

Diffy安装、使用

安装

尝试使用windows编译diffy,但是会遇到各种问题导致不能编译成功,最后在阿里云 linux云服务器编译的,执行很顺利,可以参考如下步骤:
1.git clone https://gitee.com/mirrors_opendiffy/diffy.git 没有git的话,先安装git,sudo yum install git 注意:一定要使用git拉代码到本地,否则会报无法找到git文件的错误

2.下载完成后,进入diffy目录,执行./sbt assembly进行编译,编译过程很慢,

可以vim ~/.sbt/repositories 修改 repositories的内容如下:

[repositories]
local
my-maven-repo: http://maven.aliyun.com/nexus/content/groups/public/
central: http://repo1.maven.org/maven2/

然后在diffy目录下修改vim ./sbt 添加-Dsbt.override.build.repos=true

接口测试-录制回放-diffy
重新执行./sbt assembly编译,整个过程就会快很多,编译完成后/diffy/target/scala-2.12目录下会生成diffy-server.jar文件,需要使用该jar包启动diffy代理服务。

使用

在diffy/example文件夹下有diffy启动的配置文件run.sh,主要参数如下:

-candidate=‘localhost:9200’ \ candidate环境的地址,为测试环境的服务地址
-master.primary=‘localhost:9000’ \ primary环境的地址,通常是已经上线版本,或者是已知功能正常的版本
-master.secondary=‘localhost:9100’ \ secondary环境的地址,和primary环境的地址一致即可
-responseMode=‘candidate’ \ diffy代理返回的结果为测试环境的结果
-service.protocol=‘http’ \
-serviceName=‘ExampleService’ \ diffy展示报告的名称
-summary.delay=‘1’ \
-summary.email=‘example@diffy.ai’ \ 转发报告到XX邮件 如XX@qq.com
-maxHeaderSize=‘32.kilobytes’
-maxResponseSize=‘5.megabytes’
-isotope.config=‘/Users/puneetkhanduri/code/sn126/isodemo/local.isotope’
-proxy.port=:8880 \ diffy的代理端口,请求需要发给该端口
-admin.port=:8881 \ 后台登录的端口
-http.port=:8888 & \ 展示报告的端口

修改好参数后可以通过 ./run.sh 启动diffy服务

整个过程可以参考如下链接:https://gitee.com/mirrors_opendiffy/diffy/blob/master/QUICKSTART.md

一个简单的Demo

1.json-server启动后端服务
在这个demo中将使用json-server代替后端服务。使用json-server启动后端服务的过程如下:

本地安装NodeJs,并输入npm -version验证是否安装成功
使用命令npm install -g json-server安装json-server
本地编写json文件,分别为candidate.json primary.json
使用json-server --watch --host 0.0.0.0 --port 9001 XX.json,启动后端服务
如下为本人启动的两个后端服务:
接口测试-录制回放-diffy
接口测试-录制回放-diffy

2.启动diffy服务
由于本人的阿里云linux服务器配置较低,我将diffy的配置文件和jar包拉到了windows,如下图所示:
接口测试-录制回放-diffy

执行run_diffy.bat启动diffy服务,run_diffy.bat的参数配置如下:

java -jar ./diffy-server.jar ^
-candidate=localhost:9006 ^
-master.primary=localhost:9007 ^
-master.secondary=localhost:9007 ^
-responseMode=candidate ^
-service.protocol=http ^
-serviceName=demo ^
-summary.delay=10 ^
-maxHeaderSize=32.kilobytes ^
-maxResponseSize=5.megabytes ^
-summary.email=info@diffy.ai ^
-rootUrl=“localhost:5555” ^
-proxy.port=:5550 ^
-admin.port=:5551 ^
-http.port=:5555 ^

@pause

3.发送请求给diffy

接口测试-录制回放-diffy

注意:diffy可以对读类接口和写类接口进行对比,但是实际项目中对比写类接口往往伴随着数据库入侵等问题,会影响测试数据。对比写类接口时需要其他mock技术的支持。

4.登录diffy查看报告
登录http://localhost:5555/(diffy配置文件中定义的报告地址)

接口测试-录制回放-diffy

工作实践

工作中主要可以基于两点对其进行二次开发:文章来源地址https://www.toymoban.com/news/detail-446676.html

  1. 批量发起请求,可以对用户进行分组,获取不同用户的请求信息,发起登录请求,获取到token或者cookie,存到指定的请求头中,然后使用多线程批量发起不同接口不同传参的请求
  2. 对结果的排序,diffy的排序功能有限,有时候结果返回的字段过多,导致expected和actual的字段排序顺序不一致,对对比结果产生影响,需要根据业务的需求,进行二次开发。可以开发一个排序服务(主要使用到了python的sorted函数),和diffy代理端口一致。维护排序接口的url信息和排序字段在一个excel中,排序服务根据发来的请求的url判断是否需要排序,根据排序字段排序。
    接口测试-录制回放-diffy

到了这里,关于接口测试-录制回放-diffy的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 12.3 实现模拟鼠标录制回放

    本节将向读者介绍如何使用键盘鼠标操控模拟技术,键盘鼠标操控模拟技术是一种非常实用的技术,可以自动化执行一些重复性的任务,提高工作效率,在Windows系统下,通过使用各种键盘鼠标控制函数实现动态捕捉和模拟特定功能的操作。 有时我们经常需要进行重复性的鼠

    2024年02月08日
    浏览(51)
  • GaussDB技术解读系列:5分钟带您了解DRS录制回放

    DRS录制回放是将源数据库发生的真实业务流量,在目标数据库模拟执行,从而观察和检验目标数据库的功能和性能表现。录制回放主要分为录制、回放两个阶段,录制过程是从源数据库上将所需时间段内的全部SQL原语句(包括增、删、改、查)通过审计日志下载、录制代理等

    2024年01月18日
    浏览(37)
  • Selenium 自动化 —— Selenium IDE录制、回放、导出Java源码

    之前我们在专栏的第一篇文章中演示了使用使用Selenium进行百度搜索的Hello world示例。 代码不复杂非常简单: 但是对不懂HTML、CSS和Selenium API的同学,可能要编写一个完整的可运行的Selenium程序还是有一点点难度。 熟悉CSS和花了一点的时间看了我后续Selenium 系列教程的除外哈。

    2024年03月22日
    浏览(43)
  • 性能测试工具 jmeter 录制脚本,传递 cookie,循环执行接口

    目录 前言: 代理录制脚本 循环重复添加接口 登录并传递 cookie 给新建产品接口 循环执行脚本  在使用JMeter进行性能测试时,录制脚本是一种常用的方法。录制脚本可以帮助你捕获和重放用户与应用程序之间的交互,以模拟真实的用户行为。

    2024年02月16日
    浏览(76)
  • 什么是接口测试?怎么做接口测试?

    今天我们就来浅聊一下什么是接口测试,接口测试又该如何进行呢? 接口测试是一种常见的软件测试方法,用于测试软件系统中不同模块之间的接口。 接口是指两个或多个独立软件模块之间进行数据交换的地方。在软件系统中,不同的模块之间相互依赖和交互,这些模块通

    2024年02月04日
    浏览(37)
  • 1.3 什么是接口?什么是接口测试?

    上一小节我们认识了C/S和B/S架构,那在B/S架构中,我们测试最常接触的,就是接口。本课程的重点是接口自动化测试,那同学们真的了解什么是接口吗?首先,我们从通俗的角度来看什么是接口。在计算机中,接口是计算机系统中两个独立的部件进行信息交换的共享边界。这

    2024年02月04日
    浏览(31)
  • python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)

    上一篇和大家一起科普扫盲接口后,知道什么是接口,接口类型等,对其有了大致了解之后,我们就回到主题-接口测试。 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的

    2024年02月10日
    浏览(57)
  • 软件接口测试有什么作用?接口测试有哪些好用工具?

    一、软件接口测试有什么作用? 在软件开发过程中,接口是不可避免的一部分。接口测试是为了检查软件系统中不同模块之间的接口能否正常工作,以及模块之间的数据是否能够互相传输而进行的测试。接口测试的主要作用包括保证系统区域间的互通性、降低软件的故障率、

    2024年02月06日
    浏览(73)
  • 软件接口测试是什么?有哪些好用的接口测试工具?

    在软件开发中,接口是不可避免的。软件接口测试是一种验证应用程序接口是否按照设计规范进行交互和协作的测试方法。接口测试是将模块之间的接口连接在一起以进行完整系统测试的关键部分。 当软件开发过程中不同模块之间需要数据交互,采用接口协议来实现模块之间

    2024年02月11日
    浏览(53)
  • 什么是异步接口?异步接口如何测试?

    一、异步接口是指在请求发送后,客户端并不会立即收到响应结果。与同步接口不同,异步接口需要等待一段时间后才能得到相应的结果。 通常情况下,异步接口可以通过消息队列或事件监听器来实现。当用户请求进入系统时,可以将任务提交给消费者或监听程序进行处理,

    2024年02月15日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包