分享

平替版 JMeter,一款用 Go 写的测试好帮手

 黄爸爸好 2023-04-25 发布于上海

测试工作在保障软件开发质量与提升用户体验中占据重要角色。

例如,性能测试是软件质量保障的关键环节之一,它可以评估软件开发的可靠性、稳定性及响应时间。然而,测试过程中往往需要投入大量的时间与资源,因此为了节约资源、提高开发效率选择一款合适的测试工具尤为重要。

最近,马建仓在 Gitee 上看到一款高效的性能测试工具——RunnerGo,不仅能减少开发人员的工作量,同时还能快速识别应用中的性能瓶颈问题。值得一提的是,该项目目前已经成为 Gitee 的 GVP 项目。

是什么?

开源许可证:Apache-2.0

项目地址:

https:///Runner-Go-Team/RunnerGo

是什么?

RunnerGo 是一款由国内开发者自研、基于 Go 编写的性能压测工具。该工具致力于打造成一款全栈式测试平台,主要采用模块化设计,目前实现了接口测试、场景自动化测试、性能测试等测试能力。

同时,其性能测试模块中还提供计划管理、报告管理、预设配置,可以根据需求构建多个测试场景和测试用例方便管理。

值得关注的是,RunnerGo 内置了各种工具,它与 Apache 旗下的开源测试工具 JMeter 需要下载插件不同,在配置脚本时可以选择阶梯模式,并发模式等压测模式,更加简单易懂轻量级。同时,还支持实时查看服务器状态、测试报告、Debug 日志并且支持发送测试报告到指定邮箱。

技术架构

Image

功能与特性

  • 智能调度算法:自研的调度算法,合理利用服务器资源,降低资源消耗

  • 实时生成测试报告:运行任务后,可实时查看执行结果,快速诊断服务病症

  • 丰富的报告图表:全方位展示各个指标运行曲线图

  • 实时修改:可根据压测模式实时修改并发数、持续时长等

  • 实时日志:可在压测过程中开启日志模式,查看请求响应信息

  • 可编辑报告:可在任务运行结束后,针对测试结果进行测试分析,实时编写报告

  • Flow 场景流:可视化的业务流,通过连线就可快速搭建起来自己的业务流,还可直接调试运行场景,电流般的业务流转

  • 多种压测模式:支持并发模式、阶梯模式、错误率模式、响应时间模式、每秒应答数模式等多种压测模式,满足所有业务需求

  • 支持接口自动化,采用用例集概念,生成丰富的自动化报告

业务整体流转结构

Image

如何安装?

  • 自动安装

不需要安装 Docker,会自动安装

curl -sSL https:///https://raw./Runner-Go-Team/runnerGo/main/quick_start.sh | bash

curl -sSL https:///https:///Runner-Go-Team/RunnerGo/blob/main/quick_start.sh | bash
  • 手动安装

准备 docker 和 docker-compose 环境

git clone https:///Runner-Go-Team/RunnerGo.git

进入目录

├── config.env           #  环境变量配置文件
├── docker-compose.yaml  # docker-compose 文件
├── mongo                # mongo 初始化相关脚本
│   └── init-mongo.sh 
└── mysql                 # MySQL相关配置和脚本
    ├── mysql.cnf
    └── mysql.sql

配置文件修改

# 数据库root 密码
MYSQL_ROOT_PASSWORD=123456
# runnergo 使用的数据库名
MYSQL_DATABASE=runnergo
# redis 初始话
REDIS_PASSWD=mypassword
# Mongo数据管理员的用户名
MONGO_INITDB_ROOT_USERNAME=root
# Mongo 数据库管理员的账号
MONGO_INITDB_ROOT_PASSWORD=root
# runnergo  Mongo使用的数据库名
MONGO_INITDB_DATABASE=runnergo
# runnergo Mongo库的用户名
MONGO_INITDB_USERNAME=runnergo
# runnergo Mongo库的密码
MONGO_INITDB_PASSWORD=hello123456
# 最大并非数
MAX_RUNNER_CONCURRENCY=1000
# 上传文件端口号(非必要不要改,这是容器里的)
FILE_SERVER_PORT=80
# Runnergo 应用mongo 配置
RG_MONGO_DSN=mongodb://runnergo:hello123456@mongo-db:27017/runnergo
RG_MONGO_DATABASE=runnergo
RG_REDIS_ADDRESS=redis-db:6379
RG_REDIS_PASSWORD=mypassword
RG_REDIS_DB=0
# kafka Topic
RG_KAFKA_TOPIC=report
RG_KAFKA_ADDRESS=kafka:9092
RG_KAFKA_PORT=9092
# kafka 分区数,(同时并行跑多少任务)
RG_KAFKA_NUM=2
# engine 日志路径
RG_ENGINE_LOG_PATH=/dev/stdout
# collector 日志路径
RG_COLLECTOR_LOG_PATH=/dev/stdout
# 内部互通参数(不要更改)
RG_MANAGEMENT_NOTIFY_STOP_STRESS=http://manage:30000/management/api/v1/plan/notify_stop_stress
RG_MANAGEMENT_NOTIFY_RUN_FINISH=http://manage:30000/management/api/v1/auto_plan/notify_run_finish
RG_DOMAIN=
RG_MYSQL_HOST=mysql-db
RG_MYSQL_USERNAME=root
RG_MYSQL_PASSWORD=123456
RG_MYSQL_DBNAME=runnergo
# JWT
RG_JWT_ISSUER=asfdasfasdfasfd
RG_JWT_SECRET=sdfaswerwrwerwerwer
# MONG
RG_MONGO_PASSWORD=hello123456
#  内部互通参数(不要更改)
RG_CLIENTS_ENGINE_RUN_API=http://engine:30000/runner/run_api
RG_CLIENTS_ENGINE_RUN_SCENE=http://engine:30000/runner/run_scene
RG_CLIENTS_ENGINE_STOP_SCENE=http://engine:30000/runner/stop_scene
RG_CLIENTS_ENGINE_RUN_PLAN=http://engine:30000/runner/run_plan
RG_CLIENTS_ENGINE_STOP_PLAN=http://engine:30000/runner/stop
RG_REDIS_REPORT_ADDRESS=redis-db:6379
# #初始化压力机可使用分区
RG_CAN_USE_PARTITION_TOTAL_NUM=2

## KAFKA 配置
KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181/kafka
KAFKA_LISTENERS=PLAINTEXT://:9092
KAFKA_BROKER_ID=0
KAFKA_CREATE_TOPICS=report:2:1

## 邮箱配置
# 邮箱服务商
RG_SMTP_HOST=
# 邮箱服务
RG_SMTP_PORT=
# 邮箱
RG_SMTP_EMAIL=
#邮箱密码
RG_SMTP_PASSWORD=


## 邀请链接密钥
RG_INVITE_DATA_AES_SECRET_KEY=qazwsxedcrfvtgby

# 压力机相关配置
RG_MACHINE_ALIVE_TIME=10
RG_INIT_PARTITION_TOTAL_NUM=2
RG_CPU_TOP_LIMIT=80
RG_MEMORY_TOP_LIMIT=80
RG_DISK_TOP_LIMIT=70

注意:

  1. 默认基本可以不用改 config.env

  2. 这里要注意的是 Redis 密码这边修改完毕,需要在 Docker-compose.yaml 文件中修改如下:

Image

修改应用暴露的端口号

默认使用是 tcp 的 9999 端口号,这个是可以修改的

Image

目前用户只能修改这一个对外访问的端口号,我们这里还用到了tcp58888``58889这两个端口号,暂时不可修改,如果本地冲突,则需要看看是否这两个端口号冲突。

启动 RunnerGo

docker-compose up -d 

由于启动的中间件多,请耐心等待2分钟然后使用下面命令查看是否都启动成功。

docker-compose ps 

关闭RunnerGo

docker-compose stop 

登录使用

安装成功后,在浏览器打开以下地址页面,按网页指示完成注册流程,即可使用 RunnerGo。

可使用curl -L tool.lu/ip && curl ipinfo.io查看本机外网地址
地址:http://本机外网地址:9999

Demo 演示

  • 主页
Image
  • 性能测试报告
Image
  • 自动化测试报告
Image

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多