作为一名测试行业的老兵,17年开始接触性能测试,从此就迷失在跳动的数据的世界里,距今为止已有5个年头了。
性能测试就是通过全方位的测试数据去评估系统的承受能力,从而找到系统瓶颈通过优化手段来提高系统的可用性。当然,任何架构都存在缺陷,不存在可以承受无限压力的系统,只是需要针对业务进行取舍。
说到性能测试,我们就不得不提jmeter,一款伟大的性能测试工具(当然不仅仅只能做性能),为中国的互联网事业做出了巨大的贡献(仅代表个人观点)。很多人都是使用jmeter进入了性能测试领域,也有很多公司以它为引擎开发了性能测试平台,它基本能满足所有初入性能测试领域的人对性能测试认知的要求。
越来越有种感觉性能测试做的时间越长,越感到自己什么都不会,越像个小白。
在做性能过程中,经常会遇到无法测,无法真实评估数据准确性的问题。因为无法真实模拟用户使用的场景,通常我们只会将主流程或者重要的接口进行压测。
收集性能测试数据也是比较麻烦的事儿,需要繁琐的配置,并且由于每个公司或每个业务关注的性能指标不同,让我们测试起来,更加的感觉难以入手。
性能测试相对在测试行业是有比较高的门槛,没有人带,没有项目实战,很难入门,不是参加个培训班,培训课就能解决的问题。听很多人说过,报了班报了课,找到的工作还是功能测试或者其他的,很少有能转去做性能测试。
基于种种原因(以上只是很小一部分原因),我想自己开发一套性能测试工具,让我们更方便,更全面,更简单的去做性能测试。
今年有幸遇到了这种机会,并顺利参与了核心的开发工作。
基于go语言的一体化性能压测工具
RunnerGo是一款国内开发者自研的性能压测工具,可以进行接口测试、场景自动化测试、性能压测等一系列功能。
工具特性:
- go语言运行:基于go语言开发,运行速度快、更节省资源
- 智能调度算法:自研的调度算法,合理利用服务器资源,降低资源消耗
- 实时生成测试报告:运行任务后,可实时查看执行结果,快速诊断服务病症
- 丰富的报告图表:全方位展示各个指标运行曲线图
- 实时修改:可根据压测模式实时修改并发数、持续时长等
- 实时日志:可在压测过程中开启日志模式,查看请求响应信息
- 可编辑报告:可在任务运行结束后,针对测试结果进行测试分析,实时编写报告
- Flow场景流:可视化的业务流,通过连线就可快速搭建起来自己的业务流,还可直接调试运行场景,电流般的业务流转
- 多种压测模式:支持并发模式、阶梯模式、错误率模式、响应时间模式、每秒请求时间模式等多种压测模式,满足所有业务需求
生成报告
官网地址
快速开始
代码语言:javascript复制#下载代码
git clone https://github.com/Runner-Go-Team/runner-go.git
# 启动
cd kunpeng # 进入到github 目录
docker-compose up -d # 启动
docker-compose down -v # 删除
目录说明
代码语言:javascript复制├── collector
│ ├── build.sh
│ ├── Dockerfile
│ ├── entrypoint.sh
│ └── wait-for-it.sh
├── config
│ ├── config.env
├── docker-compose.yaml
├── file-server
│ ├── data
│ ├── Dockerfile
│ ├── file-server
│ └── file-server.tar.gz
├── kafka
├── manage
│ ├── Dockerfile
│ ├── entrypoint.sh
│ ├── manage
│ └── wait-for-it.sh
├── mongo
│ ├── data
│ └── init-mongo.sh
├── mysql
│ ├── data
│ ├── Dockerfile
│ ├── mysql.cnf
│ └── mysql.sql
├── nginx
│ ├── data
│ ├── Dockerfile
│ ├── entrypoint.sh
│ └── runner.conf
├── redis
│ └── data
└── runner
├── build.sh
├── Dockerfile
├── entrypoint.sh
└── wait-for-it.sh
技术栈
- 后端: GoLang
- 前端: React.js
- 中间件: MySQL, MongoDB, Kafka, ZooKeeper, Redis
- 基础设施: Docker
- 测试引擎: GoLang