RunnerGo测试平台的安装和使用

news2025/1/11 12:39:41

文章适用于想RunnerGo入门的同学,本人主要是后端,这里做一个入门的学习记录。想深入适用RunnerGo的同学可以参考官网文档: https://wiki.runnergo.cn/docs/

这里我测试的代码是之前搭建的一个前后端分离小demo,代码地址是https://gitee.com/lihao2/error-demo.git

安装

RunnerGo是一款全栈式测试平台,目前实现了接口测试、场景自动化测试、性能测试等测试能力。

我的安装环境的虚拟机下Linux centos7,注意内存需要8G,在Linux下创建终端运行下面命令

wget  https://img.cdn.apipost.cn/running_go/img/wiki/runnergo.tar && tar xf  runnergo.tar   && bash install.sh

出现以下内容表示安装完成

++ '[' 0 -eq 0 ']'
++ echo 'RunnerGo 启动完成'
RunnerGo 启动完成
++ break
++ echo ---------------------------------------------------------------------
---------------------------------------------------------------------
++ echo 'RunnerGo安装完成 浏览器访问IP+端口 默认端口号9998'
RunnerGo安装完成 浏览器访问IP+端口 默认端口号9998

在安装的时候可能会卡住,这时候可以使用ls命令查看相关组件是下载完毕,就是runnergo.tar包,如果没有下载好则执行最开始的命令,如果下载完可以运行命令bash install.sh或者./install.sh命令重新走下安装。如果有其他问题可以参考官方文档:https://wiki.runnergo.cn/docs/zd2

安装完毕后注意开放下端口,我这里由于是本地Linux环境,所以直接关闭的防火墙

sudo systemctl stop firewalld
sudo systemctl disable firewalld

在浏览器访问对应账号http://系统IP:9998,即可进入

默认超管账号runnergo 密码runnergo

使用

安装完成后进入首先需要创建一个团队,然后点击进入团队就可以进行API的测试了

在这里插入图片描述
首先可以点击环境管理创建环境,这里的环境其实就是你要测试的API地址,定义好后方便后期测试接口,当然不定义每次写测试对象的时候直接写入全部地址也行,就是有些麻烦。

注意因为runnergo是在Linux下,不是在本地这里,所以如果要测试本地接口,需要接口测试时写入本地IP,不能是localhost和127.0.0.1,除非代码和runnergo是在一个Linux上

测试对象

定义好后创建点击测试对象创建测试用的接口,这里用于填写要测试的后台接口,整体内容有点像postMain,按照需求写入就好。我的后端接口如下

@RestController
@RequestMapping("item")
public class ItemController {

    @Autowired
    private ItemService itemService;

    @PostMapping("page")
    public PageInfo<ItemResult> page(@RequestBody ItemParam param)
    {
        Integer pageNum = param.getPageNum();
        Integer pageSize = param.getPageSize();
        PageHelper.startPage(pageNum, pageSize);
        List<ItemResult> list = itemService.page();
        return new PageInfo<>(list);
    }

}

根据接口创建测试对象,这里的关联提取用于提取响应参数的值,主要是在场景里面使用

在这里插入图片描述

场景管理

场景用于多个接口的综合处理,根据业务可以定义多个接口进行统一调用测试,并且可以设置控制器在测试时进行逻辑判断。

点击 引入测试对象 就可以导入刚才创建的测试接口,这里也可以直接定义

在这里插入图片描述

点击接口可以选择多种不同的模式

错误率模式:如果场景中某一接口超过设置的错误率阈值,则计划自动停止;如到达最大并发数后,错误率仍没有超过错误率阈值,则继续运行稳定持续时长所设置的时长运行后结束该计划

响应时间模式:响应时间为准,如果其中有一个接口达到大于设定的阈值后则并发数不再增加,并运行稳定持续时长所设置的时长运行后结束该计划;如果到达最大并发数后仍未达到设定的阈值,则继续运行稳定持续时长所设置的时长运行后结束该计划

每秒应答模式:每秒钟发送并响应的接口数量(RPS),计算方式:RPS=接口的总请求数*接口的并发数/响应总耗时,约等于:接口的并发数/平均响应时间(s)。如果RPS大于所设阈值时,并发数会增加到最大并发数,小于阈值时,会根据设置逐渐增加

测试接口时有些参数不想设置成固定的可以定义成文档传入runnerGo,读取数据进行测试

在这里插入图片描述

文档可以是csv文件或者txt文件,第一行为标题,每行作为一个数据,多个数据之间逗号隔开,txt文件可以直接创建笔记本去写,如果比较多最好使用csv文件,可以通过创建一个Excel文件然后另存为csv文件。

我需要的参数是pageNum,所以创建的文件内容如下。

在这里插入图片描述

点击添加文件即可,在需要使用参数的位置使用双括号声明 例如{{pageNum}}

在这里插入图片描述

计划管理

计划其实就是场景的集合,主要就是批量的运行场景。和前面的差不多,可以直接导入场景,然后在任务配置中可以线程等相关配置。

在这里插入图片描述

其中控制模式分为单独模式和集中模式,两者都会先启动所有并发,不同的是单独模式是一个线程走完后立即启动一个新的,集中模式是等待设置的线程数全结束后,再启动设置的进行触发,两者就是看小说,单独是作者更了一章就看了一章,集中是养一养再一起看完。

测压模式共有6种。时间单位为秒

**并发模式:**模拟多个并发用户同时发送请求,适用于需要评估系统并发处理能力的场景

参数
持续时长:模拟并发用户操作的持续时间
并发数:发送请求的并发用户数量

**阶梯模式:**逐渐增加并发用户数量,模拟系统负载逐渐增加的情况

参数
起始并发数:开始时的用户数量
并发数步长:每个阶梯增加的并发用户数量
步长持续时长:每个阶梯增加并发用户数量所持续的时间,期间负载不断增加直到下一阶梯
最大并发数:允许的最大并发用户数量,当压测达到最大并发数后,不再增加并发用户数量
持续时长:压测过程的时间长度

**错误率模式:**用于测试系统在高错误率下的性能和稳定性。系统发送一定比例的错误请求,以场景中单个接口的错误率为测试目标,可自定义错误率,如果场景中某一接口超过设置的错误率阈值,则计划自动停止。

需要设置接口为错误率模式。参数和阶梯模式一样

**响应时间模式:**用于测量系统对请求的响应时间,该模式下,测试工具会记录每个请求的响应时间,并生成相应的统计数据和报告,以评估系统的性能和响应能力。

每个接口的响应时间和设定的阀值相比。如果其中有一个接口达到大于设定的阈值后则并发数不再增加,并运行稳定持续时长所设置的时长运行后结束该计划;如果到达最大并发数后仍未达到设定的阈值,则继续运行稳定持续时长所设置的时长运行后结束该计划。

需要设置接口模式为响应时间模式。参数和阶梯模式一样

**每秒应答数模式:**用于测试系统在单位时间内能够处理的请求数量,根据预设的每秒请求数量发送请求,以评估系统的负载能力和吞吐量。适用于需要测试系统在高负载下的性能和承载能力的场景

**轮次模式:**模拟多个测试轮次或迭代的情况,适用于需要进行持久性能测试、负载测试和压力测试的场景

参数
轮次:执行的迭代次数
并发数:同时发送请求的并发用户数量
报告列表

开始测试后就会在报告列表中显示本次的测试报告,点击即可查看详情信息

在这里插入图片描述

每秒应答数:系统在单位时间内处理请求并返回响应的能力,衡量了系统每秒钟能够成功处理并响应的客户端请求数量。

每秒应答成功数:系统在单位时间内成功处理并返回响应的客户端请求数量。关联到用户体验和系统稳定性

吞吐量:实际传输数据的速率,每秒完成的事务数

成功数吞吐量:单位时间内成功处理并响应的请求数量。这个指标不仅考虑了接口处理请求的速度,还强调了请求的成功率

除此之外runnerGO提供线形图显示各个数据

50%响应时间线:表示有一半的请求在这个时间或更短的时间内得到了响应,用于了解API的基础性能

90%响应时间线:表示90%的请求在这个时间或更短的时间内得到了响应,用于评估API在大多数情况下的性能表现

95%响应时间线:用于评估API在极端情况下的性能表现,如果95%的响应时间过高,那么可能意味着有少量请求遇到了严重的性能问题或延迟,这可能会影响到用户体验或系统稳定性

在这里插入图片描述

disk_io:磁盘的输入和输出

mem:内存,常会关注内存的读写速度、稳定性以及是否存在内存泄漏

net_io:网络输入输出,也就是网络上的发送和接收情况

在这里插入图片描述

响应时间过高,那么可能意味着有少量请求遇到了严重的性能问题或延迟,这可能会影响到用户体验或系统稳定性
在这里插入图片描述

disk_io:磁盘的输入和输出

mem:内存,常会关注内存的读写速度、稳定性以及是否存在内存泄漏

net_io:网络输入输出,也就是网络上的发送和接收情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1524457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

交流互动系统|基于springboot框架+ Mysql+Java+Tomcat的交流互动系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

【UE5】非持枪趴姿移动混合空间

项目资源文末百度网盘自取 创建角色在非持枪状态趴姿移动的动画混合空间 在BlendSpace文件夹中单击右键选择 动画(Animation) 中的混合空间(Blend Space) 选择SK_Female_Skeleton 命名为BS_NormaProne 打开BS_NormaProne 水平轴表示角色的方向&#xff0c;命名为Directi…

腾讯云服务器配置2核4G5M带宽是什么意思?

腾讯云服务器2核4G5M带宽配置是代表什么&#xff1f;代表2核CPU、4G内存、5M公网带宽&#xff0c;这是一款轻量应用服务器&#xff0c;系统盘为60GB SSD云硬盘&#xff0c;活动页面 txybk.com/go/txy 活动打开如下图&#xff1a; 腾讯云2核4G5M服务器 如上图所示&#xff0c;这…

Linux 用户及用户组管理

目录 1——添加用户&#xff08;useradd&#xff09; 2——删除用户&#xff1a;userdel 3——修改用户&#xff1a;usermod 4——记住用户操作&#xff1a;history 5——查看用户信息&#xff1a;id 6——用户切换&#xff1a;su 问题1&#xff1a;遇到当前的用户不能使…

[蓝桥杯 2021 省 A] 左孩子右兄弟

一、问题描述 P8744 [蓝桥杯 2021 省 A] 左孩子右兄弟 二、问题简析 2.1 左孩子右兄弟 首先&#xff0c;我们要了解怎么通过“左孩子右兄弟”表示法将多叉树转化为二叉树&#xff1a;对于一棵多叉树&#xff0c;一个父节点有多个子节点&#xff0c;将第一个子节点作为父节点…

警惕MKP勒索病毒,您需要知道的预防和恢复方法。

引言&#xff1a; 在网络世界中&#xff0c;.mkp勒索病毒是一股威胁不可小觑的黑暗势力。它以其毒辣的加密手段威胁着我们的数据安全。本文将深入介绍.mkp勒索病毒&#xff0c;揭示如何恢复被其加密的数据文件&#xff0c;并分享一些预防措施&#xff0c;助您在数字世界中安全…

Linux:网络相关概念的认识

文章目录 基本认知数据跨网络传输初识ip地址 端口号端口号的理解 本篇是基于前面对于网络的基本框架搭建&#xff0c;进而进行相关概念的进一步理解&#xff0c;为后续准备 基本认知 那么首先总结一下一些基本的相关结论性的信息 对于任何协议来说&#xff0c;它本身都应该拥…

Langchain-chatchat+ChatGlm3-6b部署

我的环境 台式机 内存&#xff1a;16GB 显卡&#xff1a;GTX1060-6G 1. 基础环境准备 1.1. 安装anaconda&#xff0c;创建环境python版本3.11 conda create -n chatglm3 python3.11 conda activate chatglm3 1.2. 搭建cuda环境 # 查看cuda版本&#xff0c;版本是CUDA V…

如何订阅Midjourney

Midjourney介绍 Midjourney作为目前AI绘画领域效果卓越且备受青睐的工具&#xff0c;对于新用户而言&#xff0c;可能无法享受到免费试用的机会。因此&#xff0c;为了持续利用这款软件进行绘画创作&#xff0c;用户需要购买会员资格并开通订阅服务。那么&#xff0c;关于midj…

Redis数据存储的细节

原文章地址 : 深入学习Redis&#xff08;1&#xff09;&#xff1a;Redis内存模型 - 编程迷思 - 博客园 (cnblogs.com) 1.概述 关于Redis数据存储的细节&#xff0c;涉及到内存分配器&#xff08;如jemalloc&#xff09;、简单动态字符串&#xff08;SDS&#xff09;、5种对象…

Python入门(三)

序列 序列是有顺序的数据集合。序列包含的一个数据被称为元素&#xff0c;序列可以由一个或多个元素组成&#xff0c;也是可以没有任何元素的空序列。 序列的类型 元组&#xff08;定值表&#xff09;&#xff1a;一旦建立&#xff0c;各个元素不可再更变&#xff0c;所以一…

建设IAM/IDM统一身份管理,实现系统之间的单点登录(SSO)

企业实施身份管理的现状&#xff1a; 1.身份存储分散&#xff0c;不能统一供应诸多应用系统&#xff0c;企业用户信息常常存在于多个系统&#xff0c;如HR系统有一套用户信息&#xff0c;OA系统也有一套用户信息&#xff0c;身份存储不集中&#xff0c;不能统一地为诸多应用系…

ChatGPT :确定性AI源自于确定性数据

ChatGPT 幻觉 大模型实际应用落地过程中&#xff0c;会遇到幻觉&#xff08;Hallucination&#xff09;问题。对于语言模型而言&#xff0c;当生成的文本语法正确流畅&#xff0c;但不遵循原文&#xff08;Faithfulness&#xff09;&#xff0c;或不符合事实&#xff08;Factua…

clickhouse学习笔记01(小滴课堂)

老王经历-数据库架构演变历史 你是否能分清OLTP和OLAP系统 急速掌握-数据库里面行存储和列式存储 新一代列式存储ClickHouse介绍和应用场景说明 Linux服务器容器化部署ClickHouse实战 记得要在安全组里配置开放端口号。 到这我们就安装完了。 简单使用&#xff1a; 创建你的第…

C语言基础练习——Day10

目录 选择题 编程题 不用加减乘除做加法 找到所有数组中消失的数字 选择题 1、求函数返回值&#xff0c;传入-1&#xff0c;则在64位机器上函数返回 int func(int x) {int count 0;while (x){count;x x&(x - 1);//与运算}return count; } A 死循环B 64C 32D 16 答案&…

C# 打开文件对话框(OpenFileDialog)

OpenFileDialog&#xff1a;可以打开指定后缀名的文件&#xff0c;既能单个打开文件也能批量打开文件 /// <summary>/// 批量打开文档/// 引用&#xff1a;System.Window.Fomrs.OpenFileDialog/// </summary>public void OpenFile(){OpenFileDialog dialog new Op…

【解读】保障软件供应链安全:SBOM推荐实践指南(含指南获取链接)

2023年11底&#xff0c;美国NSA&#xff08;National Security Agency&#xff09;、CISA&#xff08;Cybersecurity and Infrastructure Security Agency&#xff09;等多个政府机构部门组成的ESF&#xff08;Enduring Security Framework&#xff0c;持久安全框架&#xff09…

力扣L15--- 67.二进制求和(JAVA版)-2024年3月17日

1.题目描述 2.知识点 注1&#xff1a; 二进制用 %2 /2 3.思路和例子 采用竖位相加的方法 4.代码实现 class Solution {public String addBinary(String a, String b) {StringBuilder sbnew StringBuilder();int ia.length()-1;int jb.length()-1;int jinwei0;int digit1,d…

龙芯新世界系统(安同AOCS OS)安装Cinnamon桌面最新版6.0.4

龙芯的新世界系统安同AOCS OS是十分优秀的操作系统&#xff0c;处于纯社区方式运行&#xff0c;她的各组件更新得很及时&#xff0c;很多组件都处于最新的状态&#xff0c;给我们安装使用最新的开源软件提供了很好的基础。由于本人一直使用Cinnamon桌面环境&#xff0c;各方面都…

C++初阶:类与对象(尾篇)

目录 1. 构造函数与初始化列表1.1 对象的创建与构造函数的初始化1.2 初始化列表及构造函数存在的意义1.3 explicit关键字与构造函数的类型转换 2. static成员变量与static成员函数2.1 static成员变量2.2 static成员函数 3. 日期类流插入操作符的重载与友元3.1 友元3.2 友元函数…