Hitchhiker 是一款开源的支持多人协做的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持上传脚本定制请求,能够轻松部署到本地,和你的team成员一块儿协做测试Api。html
详细介绍请看: doc.hitchhiker-api.com/cn/introduc…git
在线体验: www.hitchhiker-api.com/, 能够用 try without login
来免登陆使用 (在线演示不支持压力测试和上传js,虚拟机单核的,撑不住)。github
Hitchhiker 以前的压力测试节点是一个基于Go的 Hitchhiker-Node,早期阶段Hitchhiker的脚本功能并不复杂,不支持上传js库,async/await,以及文件读取保存等,而Go的高并发很是有吸引力,作了下调研后,使用otto作为js解释器,是能够知足那时的脚本运行逻辑的,因此选用了Go作压力测试的节点,在早期是够用的。web
后来Hitchhiker开始支持更多复杂的脚本功能,好比自定义js库,由于npm里的不少js库都基于Nodejs,而目前的Go以及otto知足不了这种需求,除非再加一个Node进程来执行脚本,然而这样又过于复杂,还不如直接使用Nodejs来写,因此综合考虑后仍是使用Nodejs重写了压力测试点。npm
重写以后的压力测试是集成在Server一块儿的,也就是不用再部署其余的程序,并且支持现有全部的脚本功能。api
Go的高并发以及goroutine使得写起这种压力程序时很是之轻松,性能也颇有保障,缺点仍是在于Hitchhiker的脚本是js,因此Go执行这些脚本比较费劲,也所以目前基于Go的压力点不支持Hitchiker脚本的高级特性。浏览器
Nodejs写这种压力测试程序就比较费劲,须要本身管理多进程,以及进程间通讯,还无法精确控制1秒的请求数,也就是压力测试的参数QPS对Nodejs的压力点是没用的,不过好在Hitchhiker Server也是基于Nodejs的,因此能够重用请求处理的逻辑,并且Api的压力测试本质上是高IO的,因此Nodejs的性能也很不错。不过Nodejs的程序目前还不支持分布式,稍后会加上去,主体功能已经完成。websocket
稍微比较了下二者的性能,在单机上基本旗鼓至关。并发
目前是以基于Nodejs的版本为默认的,也能够选用Go的,不过Go的暂时会中止维护,除非Go有了基于Node的js解释器,那时再考虑移回来。curl
以前的请求流程有点乱,致使有些问题不容易发现,好比环境变量没应用到Test脚本里,因此在改这个bug时重构了下代码,把流程理清下:
这个是有朋友在github上提出来的,以前我是想不到有人会用这个工具来请求图片,因此也没关注这块,不过有人使用,说明有需求(不止一人),因此实现了这个功能,若是response header有image/*
的话就直接展现图片而不是图片内容(一片乱码)
短时间内仍是以增长测试新功能为主,好比curl生成请求,请求生成代码等,长期的一个是文档,一个是Mock,开始根据需求来决定下一个模块。
Github: https://github.com/brookshi/Hitchhiker, 以为不错的话麻烦 Star 支持下,谢谢。