Giter Club home page Giter Club logo

runnergo's Introduction

logo

基于go语言的一体化性能压测工具

RunnerGo致力于打造成一款全栈式测试平台,采用了较为宽松的Apache-2.0 license开源协议,方便志同道合的朋友一起为开源贡献力量,目前实现了接口测试、场景自动化测试、性能测试等测试能力。随着不断的迭代,我们将会推出更多的测试功能。我们的目的是为研发赋能,让测试更简单。

工具特性:

  • go语言运行:基于go语言开发,运行速度快、更节省资源
  • 智能调度算法:自研的调度算法,合理利用服务器资源,降低资源消耗
  • 实时生成测试报告:运行任务后,可实时查看执行结果,快速诊断服务病症
  • 丰富的报告图表: 全方位展示各个指标运行曲线图
  • 实时修改: 可根据压测模式实时修改并发数、持续时长等
  • 实时日志: 可在压测过程中开启日志模式,查看请求响应信息
  • 可编辑报告:可在任务运行结束后,针对测试结果进行测试分析,实时编写报告
  • Flow场景流:可视化的业务流,通过连线就可快速搭建起来自己的业务流,还可直接调试运行场景,电流般的业务流转
  • 多种压测模式:支持并发模式、阶梯模式、错误率模式、响应时间模式、每秒应答数模式等多种压测模式,满足所有业务需求
  • 自持接口自动化,采用用例集概念,生成丰富的自动化报告

首页展示

interface

性能测试报告报告

report

自动化测试报告

report

官网地址

http://www.runnergo.com/

快速开始

自动安装: 可自行下载docker自行安装runnergo并启动 或者 curl -sSL https://ghproxy.com/https://raw.githubusercontent.com/Runner-Go-Team/runnerGo/main/quick_start.sh | bash 快速安装docker并启动runnergo服务

手动安装: 仅限linux和macos, 建议使用8c16g配置以上的服务器,配置较低的服务器,可能会报资源不足!!!

  1. 准备docker 和 docker-compose 环境
  2. 从github 下载Runnergo 开源版本 git clone https://github.com/Runner-Go-Team/RunnerGo.git
  3. cd runnergo 进入到目录

目录说明

├── config.env           #  环境变量配置文件
├── docker-compose.yaml  # docker-compose 文件
├── mongo                # mongo 初始化相关脚本
│   └── init-mongo.sh 
└── mysql                 # MySQL相关配置和脚本
    ├── mysql.cnf
    └── mysql.sql
  1. 配置文件修改, 默认基本可以不用改config.env
# 数据库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://${MONGO_INITDB_USERNAME}:${MONGO_INITDB_PASSWORD}@mongo-db:27017/${MONGO_INITDB_DATABASE}
RG_MONGO_DATABASE=${MONGO_INITDB_DATABASE}
RG_REDIS_ADDRESS=redis-db:6379
RG_REDIS_PASSWORD=${REDIS_PASSWD}
RG_REDIS_DB=0
# kafka Topic
RG_KAFKA_TOPIC=report
# kafka 地址(如果使用容器不要更改)
RG_KAFKA_ADDRESS=kafka:9092
# kafka 端口号
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=
# mysql  地址
RG_MYSQL_HOST=mysql-db
# mysql  用户
RG_MYSQL_USERNAME=root
# MySQL 密码
RG_MYSQL_PASSWORD=${MYSQL_ROOT_PASSWORD}
# mysql 数据库
RG_MYSQL_DBNAME=${MYSQL_DATABASE}
# JWT
RG_JWT_ISSUER=asfdasfasdfasfd
RG_JWT_SECRET=sdfaswerwrwerwerwer
# MONG
RG_MONGO_PASSWORD=${MONGO_INITDB_PASSWORD}
#  内部互通参数(不要更改)
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=${RG_KAFKA_NUM}

## KAFKA 配置
KAFKA_ZOOKEEPER_CONNECT="zookeeper:2181/kafka"
KAFKA_LISTENERS="PLAINTEXT://:9092"
KAFKA_BROKER_ID=0
KAFKA_CREATE_TOPICS="${RG_KAFKA_TOPIC}:${RG_KAFKA_NUM}:1"

这里要注意点的是redis 密码 这边修改完毕,需要在docker-compose.yaml文件中修改如下

image.png

  1. 修改应用暴露的端口号

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

  1. 启动runnergo
docker-compose up -d 

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

docker-compose ps 
  1. 关闭runnergo
docker-compse stop  
  1. 删除
docker-compse down -v 

技术栈

  • 后端: GoLang
  • 前端: React.js
  • 中间件: MySQL, MongoDB, Kafka, ZooKeeper, Redis
  • 基础设施: Docker
  • 测试引擎: GoLang

技术架构

struct

业务流转图

flow

联系我们

qrcode

runnergo's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.