开源测试工具 Hitchhiker 学习:源代码部署及调试

zyanycall · 2018年02月12日 · 最后由 Lihuazhang 回复于 2018年02月27日 · 1241 次阅读

首先,向开发者@brookshi 致敬。没有他的工作,我们就没有机会见到这么棒的工具。
其次,我前端技术栈不深,以学习心态写此篇,遇到错误多多批评。

github:[https://github.com/brookshi/Hitchhiker]

背景铺垫

  • 我是要做一个web端的测试平台,主要是压力测试。而Hitchhiker 正巧是web界面操作的,正好了。
  • 之前我测评了一把Locust,让我对Python语言实现平台存疑,想看看其它技术栈,B格更高一点儿。
  • 通过 Hitchhiker 见识到了真正的前端工作,很好。

开发环境

WS(WebStorm)

推荐最新版的WS,之前版本的调试 Node 出现卡顿。
我是Java技术栈的,用VSC(Visual Studio Code) 没有 WebStorm 顺手,如:

  1. WS提供的全局搜索,比较顺手。
  2. WS的快捷键,包括代码补全。
  3. 其它管理等。

WS是收费的,但是也有免费的方式,如果是老版本的WS,免费还是比较方便的,具体google。

下载源代码和代码目录简单解释

  1. .vscode : 应该是 IDE 的配置文件。
  2. api:核心API源代码根目录,类似于master的代码。
  3. build:TypeScript 的编译后的文件根目录。
  4. client:类似于slave端的源代码,用于分布式部署。
  5. cn:中文文档。
  6. deploy:部署使用文件,如docker部署需要的。
  7. doc :文档所需要的。
  8. en:英文文档。
  9. logs:编译TypeScript时的日志文件。
  10. node_modules:node编译时导入的包。
  • 还有一些重要文件解释:
  1. appconfig.json:apiTest环境的配置文件,json格式书写便于导入。是作者自定义的。
  2. gulpfile.js:gulp 部署的指导文件。
  3. logconfig.json:项目log4j的配置文件(Log4js.configure(Path.join(__dirname, '../../logconfig.json'));)
  4. mail.json:和邮件相关的。
  5. package.json:Node项目的部署指导文件,其中定义了node编译时需要导入什么包,什么版本等,具体百度。
  6. tsconfig.json:TypeScript的配置文件,包括编译的目录名字等,具体百度。
  7. tslint.json:TypeScript 的格式要求,具体百度。

安装配置Node.js 和 TypeScript

参考:
[https://segmentfault.com/a/1190000006124164]
可以配置cnpm:
[https://npm.taobao.org/]

导入npm包

直接在 Hitchhiker 下执行npm install 就可以了,自动根据其下载包文件,到 node_modules 目录下,需要翻墙:

如果之前安装了阿里的国内的源cnpm,同理,但是我自测,还是npm好一些。

同理在 client 目录下同样执行一遍,如:

WS 中的配置

  • File | Settings | Languages & Frameworks | JavaScript 设置 ECMAScript 6:

  • File | Settings | Languages & Frameworks | Node.js and NPM 设置node地址:

  • File | Settings | Languages & Frameworks | TypeScript 设置 TypeScript ,作者默认是要求2.3.3的,我还不知道其深意:

我没设置git等。

配置/安装mysql5.7

作者要求一定是5.7版本的mysql,因为其支持json数据类型。

我的方式是本地(windows)安装了一个mysql5.7,安装还是比较快的且内存占用不高,亲测可以。
参考:[http://blog.csdn.net/tanghong1996/article/details/71330666]

默认应该是开机自启动的,停止也简单(net stop mysql)。

  • 之后修改项目的mysql配置:appconfig.json 中:

作者定义了开发库 hitchhiker 和正式库 hitchhiker-prod

我的做法是本地都生成了。

开始编译

  • Hitchhiker 根目录 和 client 执行tsc
    这是编译tsc文件,具体配置 tsconfig.json 中都写好了,需要翻墙。

  • 执行gulp 的build, release, compilerClient。

    WS中直接双击就行。
    这样应该用的是正式库,具体细节我还没有深究。

启动调试

增加一个Node 的 debug,配置如下

然后启动debug。

登录断点进入截图如下:

亲测,ts 和 js 的代码断点都能进入。

本地环境截图:

调试JavaScript

参考:[http://blog.csdn.net/sujun10/article/details/54139560]

简单本地测试及思考

基于当前版本 v0.9

  • 自测创造压力的能力不及Locust,同时压测图形比较简单。

几个接口测试重要场景是我经常遇到的,分享下:

  • 以文件夹为单位执行接口测试,即基于流程的接口测试,同时生成测试报告。

目的:整个系统的全流程回归 + 业务梳理 + 告诉别人我做了这么多的工作是有价值的。

  • 两个环境接口测试(大量)结果对比。

大量有两层意思:接口返回数据非常多 + 大量的接口(至少上百个)。这样的需求返回接口数据对比,一般是很困难的。
目的:系统升级后,需要对比新逻辑接口返回值不能变化。
(后续我可能会分享下我基于Jmeter的报告是怎么做的,很高效)。

后续

每一个工具肯定有其适用范围,也不一定适合所有人。
Hitchhiker 是个好工具,我还会继续学习。

共收到 4 条回复 时间 点赞

感谢评测,非常中肯,测试工具确实很难真的做到全面,特别我的目的是想让没有编程基础的QA使用,易用性是比较首要的,所以功能上的能力还非常有待改进,压力测试基于node的分布式压测还在测试中,这块对创造压力应该会有提升。
Hitchhiker确实还有不少缺点有待改进,比如细节,比如稳定性,比如楼主所说的适用性,可扩展性,也依赖社区发现bug或提供改进的意见,这样工具才能持续进步和发展,这也是开源的意义。

brookshi 回复

感谢肯定,前端我还有太多东西需要学习,向你学习。

#1楼 @brookshi 能否汉化一下?还有 能否给jmeter对接一下呢 毕竟目前压测用的还是jmeter比较多

—— 来自TesterHome官方 安卓客户端

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册