V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
brookshi
V2EX  ›  程序员

开源一个 Restful Api 集成测试工具

  •  1
     
  •   brookshi · 2017-08-28 07:35:01 +08:00 · 3805 次点击
    这是一个创建于 2639 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    先上图看看:

    简单介绍

    背景是 Team 在开发一些 Api,这些 Api 依赖于其他 Team 的 Api,依赖的 Api 是比较底层且比较大的,用起来不太方便且没有详细文档。

    在开发 Api 的过程中有一个问题让我比较在意,我们 Team 是我先研究那个依赖的 Api,过程不太容易,需要找文档,找那个 Team 的人协作,找 case 等,研究了一些后做了一些东西,后面隔了一段时间开始陆续有其他同事参与进来,每进来一个都去研究一下那个 Api,包括我做了其他事情后再回来开发 Api 时又得找资料熟悉下,这个过程造成了很大程度的时间和经验的浪费。

    所以我觉得应该有款工具能让 Team 的人一起协作开发 Api,和 Code 一样,每个人研究的东西可以保存下来方便其他开发,这就是开发 Hitchhiker 的第一个引子。

    后来,Api 开始发布出去,为减少 QA 的工作量,需要做一个 Api 的自动化测试工具来保证数据准确性,希望能让测试环境的数据和生产上的数据作对比,这样保证新开发的 Api 不影响到旧的,测试专注于新功能就好,这是第二个引子。

    Api 的性能也是个关键的指标,在大规模使用前也需要对 Api 的性能做测试,所以性能测试是 Hitchhiker 下一个目标。

    如果 Api 是公开的话,文档是必须的,试想如果我们依赖的 Api 文档好的话不仅我们这边容易,他们那边其实也省事不少,至少我们不用去频繁打扰他们了。不过写文档过程是比较痛苦的且更新很麻烦,但如果 Api 的 case 都已经有了的话,文档的主体其实就有了,然后对参数加些说明就可以了,QA 熟悉的话都可以帮着做,所以一个所见即所得并且支持模板的文档也在计划中。

    其实我们之前也是有用过一些测试工具,但不是很满意,就易用性来说,最好用的还是 Postman,所以 Hitchhiker 的 UI 就是模仿它的,用过 Postman 的话会很容易上手。

    能做什么

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

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

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

    18 条回复    2018-03-15 12:50:19 +08:00
    haiyang416
        1
    haiyang416  
       2017-08-28 07:51:34 +08:00
    最近一直在找 API 的管理方案,部署一下试试。
    haiyang416
        2
    haiyang416  
       2017-08-28 07:54:37 +08:00
    @haiyang416 顺带一句,http://hitchhiker-api.com/ 注册不了(包括免登录)。
    brookshi
        3
    brookshi  
    OP
       2017-08-28 08:03:17 +08:00
    @haiyang416 不会吧,我这可以的,要不试下 http://www.hitchhiker-api.com/
    scofieldpeng
        4
    scofieldpeng  
       2017-08-28 08:27:10 +08:00
    同楼上,确实点免费体验无法使用,返回 failed to fetch 错误
    DukeAnn
        5
    DukeAnn  
       2017-08-28 08:45:07 +08:00
    不带 www. 的会报错,无法体验
    brookshi
        6
    brookshi  
    OP
       2017-08-28 08:45:11 +08:00
    @scofieldpeng 确实是我的问题,在另一台机子上是有问题,nginx 没配好,没有 www 会跨域, 麻烦前面加上 www.再试一下请先用下
    haiyang416
        7
    haiyang416  
       2017-08-28 08:46:11 +08:00   ❤️ 1
    @brookshi 貌似基本不支持中文,collection 之类的,有中文都报错。
    brookshi
        8
    brookshi  
    OP
       2017-08-28 08:57:58 +08:00
    @haiyang416 是个 bug,中文当时没考虑,小弟在外企,所以组内用的都是英文,没测试到,不好意思,下个版本把修复下
    xinyewdz
        9
    xinyewdz  
       2017-08-28 09:16:37 +08:00
    用 mysql 会不会太重了。。。。
    brookshi
        10
    brookshi  
    OP
       2017-08-28 09:23:31 +08:00
    @xinyewdz 用 docker 的话其实还好,之前是有考虑 sqlite,不过这个多少是有点并发的,不是单机,所以还是转用 mysql 了
    scofieldpeng
        11
    scofieldpeng  
       2017-08-28 09:29:52 +08:00
    体验了下,还不错,建议弄成多语言版本吧,组内好多童靴英文都不咋地
    brookshi
        12
    brookshi  
    OP
       2017-08-28 09:38:54 +08:00
    @scofieldpeng 嗯,好的,会把多语言加到计划中
    onemorecd
        13
    onemorecd  
       2017-08-28 11:08:08 +08:00
    服务器版的 postman?
    brookshi
        14
    brookshi  
    OP
       2017-08-28 11:40:36 +08:00
    @onemorecd 哈哈,可以说是,相比 postman 的优势在于 postman 多人收费,而这个开源免费的且部署在本地,多少人用都可以,另外支持不同环境数据对比
    brookshi
        15
    brookshi  
    OP
       2017-08-29 00:49:26 +08:00   ❤️ 1
    @haiyang416 中文 bug 的问题解决了,是数据库配置问题,没有用 utf8,谢谢。
    haiyang416
        16
    haiyang416  
       2017-08-29 06:08:25 +08:00 via Android
    @brookshi 赞。
    wzw
        17
    wzw  
       2018-02-26 21:52:14 +08:00
    @brookshi #15 演示站点无法注册了?

    有没有 postman 一键测试所有接口的功能? runner
    brookshi
        18
    brookshi  
    OP
       2018-03-15 12:50:19 +08:00
    @wzw 建个 schedule 就可以了,run 一次就行,也可以定时跑
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1023 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 22:28 · PVG 06:28 · LAX 14:28 · JFK 17:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.