开源 基于Nodejs的RESTful Api 测试工具 - 更新 v0.1.3
发布于 1 个月前 作者 brookshi 999 次浏览 最后一次编辑是 2 小时前 来自 分享

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

在线体验: http://www.hitchhiker-api.com/, 可以用 try without login 来免登录使用。

这次版本主要增加一个重磅功能 - 参数化请求:

参数化请求

什么是参数化请求,就是把一个Api里可变的点提取出来,参数化,这样就可以用一个Case覆盖到所有可变请求。

参考下图(比较大,可能会比较慢出来):parameters就是用来构建参数化请求的,请求通常有很多参数,比如query string, body里的变化点等,这些参数可能会有不止一个值,每个都要覆盖的话需要写很多request。

举个例子:比如一个request有三个可变的参数A, B, C,每个参数又分别有3个值,A的1,2,3, B的4,5,6, C的7,8,9,这样随机组合下来会有3*3*3=27个request:

147 148 148 157 158 159 167 168 169
247 248 248 257 258 259 267 268 269
347 348 348 357 358 359 367 368 369

很麻烦有没有,如果再多两个参数呢,轻松过百了呀,想想都头大,但其实它们之间只是一点不同,何必要费这么大劲呢,参数化请求可以帮你做这个事,只需要把可变的参数写在parameter里面,Hitchhiker会自动构建出所有request。

parameters有两种组合方式,一种是所有组合Many to Many,另一种是一对一组合One to One,上面生个27个request的就是ManytoMany,如果用一对一组合的话就只有3个,分别是:147, 258, 369

Parameters的格式是一个json对象,对象的下一层是变量以及它的值:数组。看个例子:

{
    "A": [1, 2, 3],
    "B": [3, 4, 5], 
    "C": [7, 8, 9]
}

使用的方式同变量一样,用{{}}包起来。

下图就展示了参数化请求的使用方式,可变的三个参数namepwdagename有两个值:tomjerrypwd有两个值:123456age也是两个值:2018,使用OnetoOne时会生成两个请求:name:tom, pwd:123, age:20name:jerry, pwd:456, age:18,一一对应的,可以分别请求,也可以一起请求。 如果选了ManytoMany就会有8个请求,这里就不一一列举出来。 参数化请求的request保存后左边对应的item里会显示出请求的真正个数,如图中的8。 参数化请求跑schedule一样没问题,会自动拆分开跑和显示。

大图:右键新标签打开图片

处理对比数据

Hitchhiker的一个重要功能就是可以对比不同环境的返回数据,之前是直接对比response,但实际上往往想要对比的是其中一部分或去掉可变部分,考虑一种情况,返回的response里带有一个当前时间,也就表示每次返回的数据都是不同的,因为时间肯定不一样,这样就影响了对比结果,但是这个时间没什么对比意义,所以我们需要在对比前把它去掉,这时可以用这个功能了。

具体用法:在test里用js处理responseObj,然后用$export$(data)函数导出处理后的数据(data就是处理后的数据),然后跑schedule时就会用导出的数据进行对比了。

默认Headers

之前有加一个header收藏功能,方便使用一些常用的header,但是有些server会校验一些请求头,比如Accept,UserAgent等,这个是每个请求都需要带的,每个request都写也有些麻烦,现在可以配置一些默认header,这些header可以在根目录下的appconfig.json里配置,默认定义的是这些:

"defaultHeaders": [
    "Accept:*/*",
    "User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36",
    "Cache-Control:no-cache"
]

可以根据需要自行修改。

后续计划

本来的计划是两周一版本,其中一周做小版本的新功能和改bug,另一周做大版本的压力测试。不过这次参数化请求比预想的要麻烦些,上面两周时间基本都花这上面了,压力测试这块就没进展,下两周除了改bug外就全力做压力测试这块,希望国庆过后能做到差不多。

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

v0.1.2

这次版本主要是增加一些体验方面的更新:

request的header提示及自动完成

request的header种类基本就那些,但纯靠手写有时会写错,导致请求不到数据,很麻烦。于是把常用header加到自动提示里面,方便使用。

header的收藏功能

一个项目的request的header其实用来用去都是那几个,每个request都去写这些重复的即使有提示也显得麻烦,这时可以添加到收藏,下次再用直接选进来就可以了。(可以右键选新标签中打开图片,看起来清楚些)

tests的全局函数

很多request的tests里会用到同样功能的函数,每个都写的话麻烦不说,维护起来也不方便,考虑像写代码一样,应该提取共同部分,所以增加了一个全局脚本,可以在Project里定义,其下的Request可以直接使用。

清除本地Cache功能

Hitchhiker会把用户所有的更改都记在浏览器的indexDB中,但有时会有一些情况比如说想放弃所有更改,可以清除本地cache,所有数据全部用最新的数据库里的。

UI调整

主要是字体改了,之前统一用的adobe开源的一款SourceCodePro字体,因为是等宽字体,有朋友反应说看起来不舒服,想想有道理,所以把除了代码之外的都使用系统字体,看起来紧凑点。

后续计划

0.2大版本的分布式压力测试还是开发中,测试tool用go写的,代码基本差不多,接下来主要是通信方面。

0.1.3小版本的主要还是小功能和体验上的改进,计划引入一个比较有用的新功能:参数化请求,因为很多需要测试的api大体上差不多,只是query或者body里变了一点,如果重复添加request的话显得麻烦且维护不便,参数化可以把这些变化封装到参数里,一个request就可以了,系统根据参数自动生成多个请求。


v0.1.1

Hitchhiker 是一款开源的 Restful Api 集成测试工具,你可以在轻松部署到本地,和你的team成员一起协作管理Api。

先上图看看:

https://github.com/brookshi/Hitchhiker/raw/master/doc/images/collection.png

https://github.com/brookshi/Hitchhiker/raw/master/doc/images/history.png

https://github.com/brookshi/Hitchhiker/raw/master/doc/images/env.png

https://github.com/brookshi/Hitchhiker/raw/master/doc/images/schedule.png

能做什么

  • Team协作开发Api

  • Api历史修改记录及支持diff展示

  • 支持多环境变量及运行时变量

  • 支持Schedule及批量run

  • 不同环境下的请求数据对比 (eg: stage vs product)

  • 易部署 (支持 docker, windows, linux), 数据都存在自己这里,不会上传及丢失

  • 会记往任何修改,不用怕没保存时session失效或系统重启

  • 支持导入Postman v1 collections

  • 性能测试 (开发中…)

  • Api文档 (计划中…)

如何部署

首推使用 docker 部署,简单快捷,具体操作参考 deploy with docker

如果没有docker环境也可以使用源码部署,也很简单

linux 请参考 deploy to linux

windows 请参考 deploy to win

如何使用

参考 使用说明

用到的技术

前后端分离,前端采用 React + Redux + AntDesign,后端基于 Nodejs, 采用 Koajs + TypeORM + MySQL。

语言统一用的 Typescript。

测试的话,前端用Jest,覆盖了逻辑最多的 reducer,后端使用的就是本工具来测试自己,这对时间有限的我来说算是最有性价比的选择。

开源

可以访问 http://www.hitchhiker-api.com/ 来使用,点击 try without login 免注册登录,另外,为了免备案,服务器在海外的,所以速度上可能会有点慢,抽疯时甚至可能访问不了,请谅解。

当然最好还是在本地局域网部署,用起来会比较爽。

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

7 回复

看起来不错的样子

先mark

来自酷炫的 CNodeMD

更新 v0.1.2

@yuu2lee4 暂时可以认为是实现了一部分postman pro功能的内部部署版

@brookshi 加油,看好你

@i5ting 谢谢狼叔支持

回到顶部