性能测试四十九:ngrinder压测平台

直接上ngrinder官网下载

ngrinder工作原理:这里的controller就是ngrinder平台

部署(以windows为例):

把下载下来的ngrinder-controller.war重命名为ngrinder.war放到tomcat下面,启动tomcat

启动完浏览器访问:http://localhost:8080/ngrinder

默认用户名admin,密码admin,选择中文

登录成功后下载agent和monitor

解压并启动agent

在机器足够的情况下,应该把agent单独部到一台机器上,由于机器有限这里和ngrinder部到同一台机器

先编辑配置文件:__agent.conf,修改ngrinder所在的ip和端口号(默认端口号16001)

双击启动文件,下面这样就算启动成功了

把前面下载的monitor上传至服务器,并解压

进入到该目录,里面的东西和agent一样

启动,这里第一次报错,说没有找到本机路由,后来查看,是因为当前host里面没有配置当前使用的这个ip

改host文件

再次启动,成功

回到ngrinder,编写脚本

这里对java和python哪个熟一点就选哪个

先确认接口是通的:

Groovy(java版):

点创建后会生成如下代码:

import static net.grinder.script.Grinder.grinder
import static org.junit.Assert.*
import static org.hamcrest.Matchers.*
import net.grinder.plugin.http.HTTPRequest
import net.grinder.plugin.http.HTTPPluginControl
import net.grinder.script.GTest
import net.grinder.script.Grinder
import net.grinder.scriptengine.groovy.junit.GrinderRunner
import net.grinder.scriptengine.groovy.junit.annotation.BeforeProcess
import net.grinder.scriptengine.groovy.junit.annotation.BeforeThread
// import static net.grinder.util.GrinderUtils.* // You can use this if you‘re using nGrinder after 3.2.3
import org.junit.Before
import org.junit.BeforeClass
import org.junit.Test
import org.junit.runner.RunWith

import java.util.Date
import java.util.List
import java.util.ArrayList

import HTTPClient.Cookie
import HTTPClient.CookieModule
import HTTPClient.HTTPResponse
import HTTPClient.NVPair

/**
* A simple example using the HTTP plugin that shows the retrieval of a
* single page via HTTP.
*
* This script is automatically generated by ngrinder.
*
* @author admin
*/
@RunWith(GrinderRunner)
class TestRunner {

public static GTest test
public static HTTPRequest request
public static NVPair[] headers = []
public static NVPair[] params = []
public static Cookie[] cookies = []

@BeforeProcess
public static void beforeProcess() {
HTTPPluginControl.getConnectionDefaults().timeout = 6000
test = new GTest(1, "192.168.1.163")
request = new HTTPRequest()
// Set header datas
List<NVPair> headerList = new ArrayList<NVPair>()
headerList.add(new NVPair("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0"))
headers = headerList.toArray()
// Set param datas
List<NVPair> paramList = new ArrayList<NVPair>()
paramList.add(new NVPair("", ""))
params = paramList.toArray()
// Set cookie datas
List<Cookie> cookieList = new ArrayList<Cookie>()
cookieList.add(new Cookie("uid", "abc", "192.168.1.163", "/", new Date(32503647599000L), false))
cookies = cookieList.toArray()
grinder.logger.info("before process.");
}

@BeforeThread
public void beforeThread() {
test.record(this, "test")
grinder.statistics.delayReports=true;
grinder.logger.info("before thread.");
}

@Before
public void before() {
request.setHeaders(headers)
cookies.each { CookieModule.addCookie(it, HTTPPluginControl.getThreadHTTPClientContext()) }
grinder.logger.info("before thread. init headers and cookies");
}

@Test
public void test(){
HTTPResponse result = request.GET("http://192.168.1.163:8080/PerfTeach/TimeMonitor?id=1", params)

if (result.statusCode == 301 || result.statusCode == 302) {
grinder.logger.warn("Warning. The response may not be correct. The response code was {}.", result.statusCode);
} else {
assertThat(result.statusCode, is(200));
}
}
}

点验证脚本,在控制台最下面有日志,可以看到通不通过

上面那个日志比较乱,为了方便确认接口是否通过,可以在代码里面加断言

调试阶段(脚本调通以后,就删掉这行代码):在请求完成后,打印响应文本

在else里面,把原来的断言注释掉,加一个响应文本与应该返回的文本的断言

再次验证脚本,看日志,通过

删除掉打印响应文本那行代码,并保存

在性能测试中,创建测试

设计相关场景

设置好以后,点保存并运行,这里会弹框选择马上运行还是预约运行,这里选马上运行就可以了

agent里面的日志

ngrinder这里也有相应的指标数据

跑完过后,会自动生成测试报告,点详细测试报告,可以看到详细指标

在首页这里,还可以输入url快速开始

原文地址:https://www.cnblogs.com/zhongyehai/p/10386478.html

时间: 2024-10-13 10:20:34

性能测试四十九:ngrinder压测平台的相关文章

无限互联奖学金文章连载北京总部四十九期胡梦川 第一篇

无限互联奖学金文章连载北京总部四十九期胡梦川 第一篇: 今天是来到无限互联的第四天,严格来说已经第六天了,刚来就是开班典礼,给人一种很好的氛围.老师讲了很多关于以后学习的技巧和规定,我的第一感觉是,比备战高考还要严格,不过这才能体现一个组织的负责任.正式开讲才感觉到这个班级的大神无处不在,不努力根本赶不上,就是这个学习氛围和高强度的练习很重要.多用心你才能感觉到有些事其实很简单.关于学习时间大家基本都是一天不动的在敲代码,等于给自己一个机会吧.时间飞逝,抓住机会才重要.刚来第一周,感受最深就是好

QT开发(四十九)——数据库用户接口层

QT开发(四十九)--数据库用户接口层 用户接口层主要包括Qt SQL模块中的QSqlQueryModel.QSqlTableModel.QSqlRelationalTableModel.用户接口层的类实现了将数据库中的数据链接到窗口部件上,是使用模型/视图框架实现的,是更高层次的抽象,即便不熟悉SQL也可以操作数据库.需要注意的是,在使用用户接口层的类之前必须先实例化QCoreApplication对象. QT中使用了自己的机制来避免使用SQL语句,提供了更简单的数据库操作及数据显示模型,分别

第四十九象 壬子

第四十九象 壬子 谶 曰山谷少人口 欲剿失其巢帝王称弟兄 纷粉是英豪 颂 曰一个或人口内啼分南分北分东西六爻占尽文明见棋布星罗日月济 金圣叹注解:久分必合,久合必分,理数然也,然有文明之象,当不如割据者之纷扰也. 推背图网解: 解图八把刀,显然八位能人各居一方.刀非指武力统治,下文有“文明”象,这里刀在八卦中表兑卦,兑为口,显然是通过舆论宣传法律.社会公德在治理各自的“行政区”. 解谶山谷少人口 欲剿失其巢——“谷”字少了人.口剩下“八”:“剿”少了巢剩下“刀”旁,暗示割据自治有八方.  帝王称

鲁迅散文——随感录四十九

随感录四十九 凡有高等动物,倘若没有遇着意外的变故,总是从幼到壮,从壮到老,从老到死. 我们从幼到壮,既然毫不为奇的过去了:自此以后,自然也该毫不为奇的过去. 可惜有一种人,从幼到壮,居然也毫不为奇的过去了:从壮到老,便有点古怪:从老到死,却更是奇想天开,要占尽了少年的道路,吸尽了少年的空气. 少年在这时候,只能先行萎黄,且待将来老了,神经血管一切变质以后,再来活动.所以社会上的状态,先是"少年老成":直待弯腰曲背时期,才更加"逸兴遄飞",似乎从此以后,才上了做人的

第四十九章

第四十九章1 圣人无心,将心比心 圣人恒无心,以百姓之心为心. 优秀的领导者自己的心是空的,把老百姓的心作为自己的心. 领导者要换位思考,想老板姓所想.要学会将心比心. 各位朋友大家好,今天我们接着来聊<道德经>. 不知道各位双十一过得怎么样?大家都买了很多东西吧?双十一那天我开玩笑,我发一个微博,我还在自己朋友圈里发了个微信,在我朋友圈说,双十一大酬宾了,我讲的<道德经>200多期,全部今天免费.我是搞笑,结果真有的网友留言,真的吗?太好了,我一看我晕了,我说我是开玩笑,他真的一

Python进阶(四十九)-初识Flask Blueprint

Python进阶(四十九)-初识Flask Blueprint 前言   在进行Python Web开发时选择Flask框架.项目模块划分阶段,使用Blueprint(这里暂且称之为“蓝本”).Blueprint通过把实现不同功能的module分开,从而把一个大的application分割成各自实现不同功能的module.在一个Blueprint中可以调用另一个blueprint的view function, 但要加相应的blueprint名.   Blueprint还有其他好处,其本质上来说就

性能测试四十五:性能测试策略

1.项目具体需求,及业务场景:关注真实用户会是怎样的一个业务场景,确定用户的用户习惯. 2.指标:响应时间在多少以内,并发数多少,tps多少,总tps多少,稳定性交易总量多少,事务成功率,交易波动范围,稳定运行时长,资源利用率,测哪些交易,哪些接口,测试哪些场景. 3.环境:生产环境服务器数量,测试环境服务器数量,按照资源配比得出测试指标. 4.协议:系统用什么协议进行通讯. 5.压力机数量:如果并发用户数太多,需要把压力发到不同的压力机,不然可能会存在压力机瓶颈问题,导致tps和响应时间抖动.

七七四十九劫,九九八十一难

蒙差揭谛皈依旨 谨记唐僧难数清 金蝉遭贬第一难 出胎几杀第二难 满月抛江第三难 寻亲报冤第四难 出城逢虎第五难 折从落坑第六难 双叉岭上第七难 两界山头第八难 陡涧换马第九难 夜被火烧第十难 失却袈裟十一难 收降八戒十二难 黄风怪阻十三难 请求灵吉十四难 流沙难渡十五难 收得沙僧十六难 四圣显化十七难 五庄观中十八难 难活人参十九难 贬退心猿二十难 黑松林失散二十一难 宝象国捎书二十二难 金銮殿变虎二十三难 平顶山逢魔二十四难 莲花洞高悬二十五难 乌鸡国救主二十六难 被魔化身二十七难 号山逢怪二

性能测试四十六:Linux 从网卡模拟延时和丢包的实现

Linux 中模拟延时和丢包的实现 使用ifconfig命令查看网卡 Linux 中使用 tc 进行流量管理.具体命令的使用参考 tc 的 man 手册,这里简单记录一下使用 tc 模拟延时和丢包的命令. ping出来的最小单位为1毫秒,在执行压测之前,最好用压力机ping一下服务器,如果延迟很高,就没必要测了,因为请求还没发出去都已经有一段时间的消耗了 1. 延时(1)设置延时:给 eth0 设备发包时添加 30ms 的延时(从网卡).tc qdisc add dev eth0 root ne