开源API测试工具 Hitchhiker v0.6更新

时间:2021-08-19 07:55:40

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

详细介绍请看:

在线体验: , 可以用 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

global function 里的内容在切换模块后会消掉

schedule里的请求返回是图片时,会造成JSON.parse掉败,导致异常,改了图片只生存链接,不生存内容

浏览器里压力测试的websocket有时会掉败,加了重试

schedule的按时跑的记录会有1分钟摆布的误差

改请求的method时name会被重置

后续打算

短期内还是以增加测试新成果为主,好比curl生成请求,请求生成代码等,恒久的一个是文档,一个是Mock,开始按照需求来决定下一个模块。

Github: https://github.com/*shi/Hitchhiker, 感受不错的话麻烦 Star 撑持下,感谢。