开源API测试工具 Hitchhiker v0.6更新 - 改进压力测试

Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持上传脚本定制请求,可以轻松部署到本地,和你的team成员一起协作测试Api。

详细介绍请看: http://doc.hitchhiker-api.com/cn/introduction.html

在线体验: http://www.hitchhiker-api.com/, 可以用 try without login 来免登录使用 (在线演示不支持压力测试和上传js,虚拟机单核的,撑不住)。

下面来看看这次的更新:

重写压力测试

Hitchhiker 之前的压力测试节点是一个基于Go的 Hitchhiker-Node,早期阶段Hitchhiker的脚本功能并不复杂,不支持上传js库,async/await,以及文件读取保存等,而Go的高并发非常有吸引力,做了下调研后,使用otto做为js解释器,是可以满足那时的脚本运行逻辑的,所以选用了Go做压力测试的节点,在早期是够用的。

后来Hitchhiker开始支持更多复杂的脚本功能,比如自定义js库,因为npm里的很多js库都基于Nodejs,而目前的Go以及otto满足不了这种需求,除非再加一个Node进程来执行脚本,然而这样又过于复杂,还不如直接使用Nodejs来写,所以综合考虑后还是使用Nodejs重写了压力测试点。

重写之后的压力测试是集成在Server一起的,也就是不用再部署其他的程序,而且支持现有所有的脚本功能。

两种方法的优劣:

Go的高并发以及goroutine使得写起这种压力程序时非常之轻松,性能也很有保障,缺点还是在于Hitchhiker的脚本是js,所以Go执行这些脚本比较费劲,也因此目前基于Go的压力点不支持Hitchiker脚本的高级特性。

Nodejs写这种压力测试程序就比较费劲,需要自己管理多进程,以及进程间通信,还没法精确控制1秒的请求数,也就是压力测试的参数QPS对Nodejs的压力点是没用的,不过好在Hitchhiker Server也是基于Nodejs的,所以可以重用请求处理的逻辑,而且Api的压力测试本质上是高IO的,所以Nodejs的性能也很不错。不过Nodejs的程序目前还不支持分布式,稍后会加上去,主体功能已经完成。

稍微比较了下两者的性能,在单机上基本旗鼓相当。

目前是以基于Nodejs的版本为默认的,也可以选用Go的,不过Go的暂时会停止维护,除非Go有了基于Node的js解释器,那时再考虑移回来。

重新整理请求流程

之前的请求流程有点乱,导致有些问题不容易发现,比如环境变量没应用到Test脚本里,所以在改这个bug时重构了下代码,把流程理清下:

response 展示图片

这个是有朋友在github上提出来的,之前我是想不到有人会用这个工具来请求图片,所以也没关注这块,不过有人使用,说明有需求(不止一人),所以实现了这个功能,如果response header有image/*的话就直接展示图片而不是图片内容(一片乱码)

修改Bug

  1. global function 里的内容在切换模块后会消失
  2. schedule里的请求返回是图片时,会造成JSON.parse失败,导致异常,改了图片只保存链接,不保存内容
  3. 浏览器里压力测试的websocket有时会失败,加了重试
  4. schedule的定时跑的记录会有1分钟左右的误差
  5. 改请求的method时name会被重置

后续计划

短期内还是以增加测试新功能为主,比如curl生成请求,请求生成代码等,长期的一个是文档,一个是Mock,开始根据需求来决定下一个模块。

Github: https://github.com/brookshi/Hitchhiker, 觉得不错的话麻烦 Star 支持下,谢谢。

时间: 2024-08-08 01:27:45

开源API测试工具 Hitchhiker v0.6更新 - 改进压力测试的相关文章

使用COSBench工具对ceph s3接口进行压力测试

一.COSBench安装 COSBench是Intel团队基于java开发,对云存储的测试工具,全称是Cloud object Storage Bench 吐槽下,貌似这套工具是intel上海团队开发的,竟然没有中文的相关资料. 同所有的性能测试工具一样,COSBench也分控制台和发起请求的driver,且driver可以分布式部署.可以支持swift.s3.Openstack等接口 1. 下载COSBench工具 下载地址为:https://github.com/intel-cloud/co

开发者测试(4)-采用精准测试工具对dubbo微服务应用进行测试

简介:本文主要目的是把现今主流的Dubbo框架项目和精准测试进行对接,通过精准测试的数据穿透.数据采集.测试用例与代码的双向追溯.数据分析等一系列精准测试的特有功能达到对项目质量的保证. 本次环境搭建分为基础环境准备.Dubbo环境搭建.精准测试环境搭建.精准测试与Dubbo环境对接等一整套完整的配置过程,用户可以通过下图中的流程图确认自己所部署过程中进行到的阶段点,从而排查部署中可能遇见的问题. 一 dubbo的工具配置流程 1,使用工具 1, Eclipse Java Photon2, JD

【星云测试】开发者测试(4)-采用精准测试工具对dubbo微服务应用进行测试

简介:本文主要目的是把现今主流的Dubbo框架项目和精准测试进行对接,通过精准测试的数据穿透.数据采集.测试用例与代码的双向追溯.数据分析等一系列精准测试的特有功能达到对项目质量的保证. 本次环境搭建分为基础环境准备.Dubbo环境搭建.精准测试环境搭建.精准测试与Dubbo环境对接等一整套完整的配置过程,用户可以通过下图中的流程图确认自己所部署过程中进行到的阶段点,从而排查部署中可能遇见的问题. 一 dubbo的工具配置流程 1,使用工具 1, Eclipse Java Photon2, JD

web服务器之压力测试工具

web服务器压力测试工具:ab 一.apache压力测试工具 ab是apache自带的一款测试工具,功能非常强大 语法格式: ab  [option] URL -c concurrency:一次性发起的请求个数,默认为1:-i:测试时使用HEAD方法,默认为GET:-k:启用HTTP长连接请求方式:-n requests:发起的模拟请求总个数:默认为1个:请求数要大于等于并发连接数:-q:静默模式,在请求数大于150个时不输出请求完成百分比: 输出结果:Time taken for tests:

测试工具介绍

我们的项目使用android studio进行搭建,所以我介绍一下在androidstudio上的测试工具,同时还搭建了ftp服务器,用jmeter进行了压力测试,得出系统瓶颈. 1. evaluate工具 使用步骤 设置断点 进入evalute 3.不仅仅查看变量,还可以调用函数,查看执行结果 2.异常断点 1.进入 view breakpoints 2.设置感兴趣的异常 我们使用了ftp搭建服务器,并对他做了压力测试 搭建ftp服务器 首先我们介绍一下 Quick Easy FTP Serv

测试工具---JMeter

1.       引言 JMeter是一种基于Java的压力测试工具.用于对软件做压力测试,它可以用于测试静态和动态资源,例如静态文件.Java 小服务程序.CGI 脚本.Java 对象.数据库.FTP 服务器等等.JMeter 可以用于对服务器.网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能.另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果.为了最大限度的灵活性,JMeter允许使用正则表达式创建断言. 2.  

JMeter软件测试工具介绍及压力测试基本教程

一.工具介绍 (一)简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动态资源,例如静态文件.Java 小服务程序.CGI 脚本.Java 对象.数据库.FTP 服务器, 等等.JMeter 可以用于对服务器.网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能.另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你

使用测试工具解决产品问题(译)

标准的网站监控工具能接通网页并证明他们正在响应,而他们不会向你警告一个问题.但是你能使用压力测试技术去监测你的网站,通过跑一个交互脚本能检测出问题并生成必要的邮件.它像一位安静的哨兵持续运行,从来不睡觉或者休一个假,提升了你的网站可靠性. 我们的网站包含了一个用户登录,用户认证过程偶尔被停止.我们标准的网站监控工具能接通主页并验证网页在响应,但是可能与不在我们适当放置的工具外的网页交互.当客户向我们警告一个真实的问题时我们只能了解它.这是不可接受的,我们不得不找到一个更好的办法. 我们之前使用一

使用 JMeter 进行压力测试

原文链接:https://www.cnblogs.com/stulzq/p/8971531.html 一.前言 压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率:预估系统的承载能力,使我们能根据其做出一些应对措施.所以压力测试是一个非常重要的步骤,下面我带大家来使用一款压力测试工具JMeter. 二.关于JMeter Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它