RunnerGo测试平台的安装和使用

文章适用于想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 {@Autowiredprivate 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://xiahunao.cn/news/2871523.html

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

相关文章

Rocket MQ 从入门到实践

为什么要使用消息队列&#xff0c;解决什么问题&#xff1f;&#xff08;消峰、解藕、异步&#xff09; 消峰填谷 客户端》 网关 〉 消息队列》秒杀服务 异步解耦 消息队列中的重要概念理解。&#xff08;主题、消费组、队列&#xff0c;游标&#xff1f;&#xff09; 主题&…

Vulnhub - Toppo

希望和各位大佬一起学习&#xff0c;如果文章内容有错请多多指正&#xff0c;谢谢&#xff01; 个人博客链接&#xff1a;CH4SER的个人BLOG – Welcome To Ch4sers Blog Toppo 靶机下载地址&#xff1a;Toppo: 1 ~ VulnHub 搭建&#xff1a;创建任意虚拟机&#xff0c;然后…

【网络编程基础(一)】网络基础和SOCKET

这里写目录标题 1、网络三要素2、IPV4和IPV6区别3、网络交互3.1、交互模型图3.2、基础通信协议3.3、OSI参考模型与TCP/IP参考模型对应关系 4、SOCKET网络套接字4.1、SOCKET分类4.2、基于流式套接字的编程流程4.3、网络通信雏形4.4、socket函数4.4.1、socket函数示例 4.5、bind函…

idea 的基本配置

一、安装目录介绍 其中&#xff1a;bin 目录下&#xff1a; 二、配置信息目录结构 这是 IDEA 的各种配置的保存目录。这个设置目录有一个特性&#xff0c;就是你删除掉整个目录之后&#xff0c;重新启动 IntelliJ IDEA 会再自动帮你生成一个全新的默认配置&#xff0c;所以很多…

串的模式匹配(简单匹配、KMP以及手工算next/nextval)

简单模式匹配 思路&#xff1a;主串和字串进行匹配&#xff0c;设置i、j、k&#xff08;主串、子串和匹配起始下标&#xff09;主串和子串一开始都是从第一个位置&#xff08;k i&#xff09;&#xff0c;若当前主串和子串匹配成功那么i、j&#xff0c;若匹配不成功k、j 1&am…

24计算机考研调剂 | 宁波大学

北京信息科技大学接收调剂研究生 2024中国科学院宁波材料所与高校联合培养硕士研究生项目介绍 考研调剂招生信息 中国科学院宁波材料技术与工程研究所&#xff08;简称“宁波材料所”&#xff09;成立于2004年4月&#xff0c;是由中国科学院、浙江省人民政府、宁波市人民政府三…

算法第二十九天-森林中的兔子

森林中的兔子 题目要求 解题思路 重点&#xff1a;某个兔子回答x的时候&#xff0c;那么数组中最多循序x1个同花色的兔子同时回答x 我们可以通过举例子得出一下的规律&#xff1a; 我们统计数组中所有回答x的兔子的数量n&#xff1a; 若n%(x1)0&#xff0c;说明我们此时只需…

每日一题——LeetCode1694.重新格式化电话号码

方法一 模拟&#xff1a; 首先去除number里面的破折号和空格&#xff0c;取出纯数字组成的字符串str。 对于str每三个数分成一组&#xff0c;加一个破折号&#xff0c;当str的长度小于等于4时再分情况讨论&#xff0c;如果等于4就分为22形式&#xff0c;如果小于4&#xff0c…

哥斯拉流量webshell分析-->ASP/PHP

哥斯拉流量webshell分析 哥斯拉是继菜刀、蚁剑、冰蝎之后的又一个webshell利器&#xff0c;这里就不过多介绍了。 哥斯拉GitHub地址&#xff1a;https://github.com/BeichenDream/Godzilla 很多一线师傅不太了解其中的加解密手法&#xff0c;无法进行解密&#xff0c;这篇文章…

zabbix配置

1 下载zabbix 1 配置yum源 rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release- 5.0-1.el7.noarch.rpm yum clean all yum makecache fast 完成后会出现zabbix.repo文件 2安装zabbix服务 yum -y install zabbix-server-mysql zabbix-web-mysql z…

OpenHarmony—自适应布局

针对常见的开发场景&#xff0c;方舟开发框架提炼了七种自适应布局能力&#xff0c;这些布局可以独立使用&#xff0c;也可多种布局叠加使用。 下面我们依次介绍这几种自适应布局能力。 拉伸能力 拉伸能力是指容器组件尺寸发生变化时&#xff0c;增加或减小的空间全部分配给容…

继承 ResponseEntityExceptionHandler

目录 作用概述 示例-HttpRequestMethodNotSupportedException 示例-自定义异常处理 总示例 使用了ResponseEntityExceptionHandler后&#xff0c;为什么发生了异常后返回体为空 方法执行顺序 作用概述 这是一个方便的基类&#xff0c;用于希望通过 ExceptionHandler 方法…

【C语言_字符函数和字符串函数_复习篇】

目录 一、字符函数 1.1 字符分类函数 1.2 字符转换函数 二、字符串函数 2.1 strlen函数 2.1.1 strlen函数的使用 2.1.2 strlen函数的模拟实现 2.2 strcpy函数 2.2.1 strcpy函数的使用 2.2.2 strcpy函数的模拟实现 2.3 strcat函数 2.3.1 strcat函数的使用 2.3.2 strcat函数的…

基于深度学习LSTM+NLP情感分析电影数据爬虫可视化分析推荐系统(深度学习LSTM+机器学习双推荐算法+scrapy爬虫+NLP情感分析+数据分析可视化)

文章目录 基于深度学习LSTMNLP情感分析电影数据爬虫可视化分析推荐系统&#xff08;深度学习LSTM机器学习双推荐算法scrapy爬虫NLP情感分析数据分析可视化&#xff09;项目概述深度学习长短时记忆网络&#xff08;Long Short-Term Memory&#xff0c;LSTM&#xff09;机器学习协…

ISIS默认层级实验简述

ISIS被划分为三个层级&#xff1a;Level 1、Level 2和Level 1-2。 默认情况下&#xff0c;ISIS路由器属于level 1-2,是指同时支持Level 1和Level 2的路由器。路由器既可以在同一个自治系统内部进行路由选择&#xff0c;也可以将路由信息传递到其他自治系统。 实验拓扑图&#…

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

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

execl/python读取数据库( Access、MySQL)

目录 一 、读取access数据库 &#xff08;一&#xff09;execl读取数据库 1.搜索ODBC&#xff08;注意自己的execl是64位还是32位&#xff09; 2.安装数据源的驱动程序 3.打开execl 4. 补充&#xff1a;选择数据源时&#xff0c;也可以直接在execl中选择数据源 &#xff…

如何实现队列和栈的转化(c语言)

文章目录 一.什么是栈二.什么是队列三.怎么把栈变成队列&#xff08;力扣&#xff09;四.怎么把队列变成栈&#xff08;力扣&#xff09;总结 一.什么是栈 栈&#xff08;stack&#xff09;又名堆栈&#xff0c;它是一种运算受限的线性表。限定权在表尾进行插入和删除操作的线性…

Git——本地使用详解

目录 Git1、开始版本控制1.1、初始化Repository1.2、使目录脱离Git控制 2、把文件交给Git管控2.1、创建文件后交给Git2.2、git add之后再次修改文件2.3、git add "--all"与"."参数区别2.4、把暂存区的内容提交到存储库里存档 3、工作区、暂存区与存储库3.1…

生成式AI竞赛:开源还是闭源,谁将主宰未来?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…