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 支持下,谢谢。

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

  1. 开源API集成测试工具 Hitchhiker v0.2更新 - 压力测试

    Hitchhiker 是一款开源的 Restful Api 集成测试工具,支持Schedule, 数据对比,压力测试,可以轻松部署到本地,和你的team成员一起管理Api. 详细介绍请看: http: ...

  2. 开源API集成测试工具 Hitchhiker v0.3更新 - 自动同步

    Hitchhiker 是一款开源的 Restful Api 集成测试工具,支持Schedule, 数据对比,压力测试,可以轻松部署到本地,和你的team成员一起管理Api. 详细介绍请看: http: ...

  3. 开源API测试工具 Hitchhiker v0.4更新 - 没有做不到,只有想不到

    Hitchhiker 是一款开源的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持上传脚本定制请求,可以轻松部署到本地,和你的team成员一起管理Api. 详细介绍 ...

  4. 开源API测试工具 Hitchhiker v0.5更新 - 完善细节

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

  5. 开源API测试工具 Hitchhiker v0.7更新 - Schedule的对比diff

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

  6. 开源API集成测试工具 Hitchhiker v0.1.3 - 参数化请求

    Hitchhiker 是一款开源的 Restful Api 集成测试工具,你可以轻松部署到本地,和你的team成员一起管理Api. 详细介绍请看: http://www.cnblogs.com/bro ...

  7. 开源API测试工具 Hitchhiker v0.8 - 自动化测试结果统计

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

  8. 开源API测试工具 Hitchhiker v0.10 - 中文版

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

  9. 强大的API测试工具Hitchhiker v0.9 基于UI的断言测试,回顾2017

    v0.9是Hitchhiker在2017农历年的最后一个版本,而起点正是刚过完2016农历年,农历2018即将到来,一年轮回,今天写点东西稍微回顾下hitchhiker的2017. 先还是说v0.9, ...

随机推荐

  1. Ubuntu配置OpenStack 二:配置时间同步NTP和安装数据库Maridb以及问题总结

    继上一节Ubuntu配置OpenStack 一:配置主机环境,下面继续为安装时间同步,以及配置openstack的安装包源和安装数据库Maridb.(全文截图都是由自己徒手搭建完成并且截图) 一.安装 ...

  2. Python文件夹备份

    Python文件夹备份 import os,shutil def file_copy(path1,path2): f2 = [filename1 for filename1 in os.listdir ...

  3. 14.javaweb AJAX技术详解

    一.简介 1,  ajax:在不重新加载网页的前提下,与服务器交换数据并更新部分网页的技巧,但其本身并不是一种新技术 2,  核心:XMLHttpRequest对象.AJAX技术主要是通过此对象完成的 ...

  4. Linux 基本命令-----常用操作分类

    Linux/Unix 命令格式: 命令名 [选项] [参数] 注:[]中的内容代表内容可以省略 例:$ ls $ ls -l #-l 是选项 开始符号: 文件名 或 文件夹名 .当前文件夹 ..上一级 ...

  5. Android开发之漫漫长途 Ⅴ——Activity的显示之ViewRootImpl的PreMeasure、WindowLayout、EndMeasure、Layout、Draw

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  6. apply和call的区别

    每一个javascript中的Function对象都有一个apply()方法和call()方法,他们的基本用法为: /*apply()方法*/ function.apply(thisObj[, arg ...

  7. Tomcat部署项目乱码问题总结

    打包好的war包放在tomcat下,有时会出现中文乱码的情况.首先应当确定项目的编码格式,tomcat的编码格式,以及cmd命令行的编码格式. 项目编码 将要输出到控制台或日志的字符串转为UTF-8 ...

  8. TEXT和BLOB区别

    A BLOB is a binary large object that can hold a variable amount of data. The four BLOB types are TIN ...

  9. 【RabbitMQ+Python入门经典】兔子和兔子窝 笔记

    RabbitMQ工业级的消息队列服务器. 兔子和兔子窝 动机来源:从生产环境的电子邮件处理流程当中分支出一个特定的离线分析流程. 解决方案1: 开始使用MySQL处理,将要处理的东西放在表里面,另一个 ...

  10. git打包

    git help tag #tag的用法git taggit tag -d xxx #删除taggit tag v1.1 #新增taggit describe --tag #