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

it2022-05-09  16

下载地址:https://sourceforge.net/projects/ngrinder/files/

 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哪个熟一点就选哪个

先确认接口是通的:http://192.168.1.163:8080/PerfTeach/TimeMonitor?id=1

 

Groovy(java版):

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

 

 

import static net.grinder.script.Grinder.grinderimport static org.junit.Assert.*import static org.hamcrest.Matchers.*import net.grinder.plugin.http.HTTPRequestimport net.grinder.plugin.http.HTTPPluginControlimport net.grinder.script.GTestimport net.grinder.script.Grinderimport net.grinder.scriptengine.groovy.junit.GrinderRunnerimport net.grinder.scriptengine.groovy.junit.annotation.BeforeProcessimport 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.3import org.junit.Beforeimport org.junit.BeforeClassimport org.junit.Testimport org.junit.runner.RunWith

import java.util.Dateimport java.util.Listimport java.util.ArrayList

import HTTPClient.Cookieimport HTTPClient.CookieModuleimport HTTPClient.HTTPResponseimport 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 testpublic static HTTPRequest requestpublic static NVPair[] headers = []public static NVPair[] params = []public static Cookie[] cookies = []

@BeforeProcesspublic static void beforeProcess() {HTTPPluginControl.getConnectionDefaults().timeout = 6000test = new GTest(1, "192.168.1.163")request = new HTTPRequest()// Set header datasList<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 datasList<NVPair> paramList = new ArrayList<NVPair>()paramList.add(new NVPair("", ""))params = paramList.toArray()// Set cookie datasList<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.");}@Beforepublic void before() {request.setHeaders(headers)cookies.each { CookieModule.addCookie(it, HTTPPluginControl.getThreadHTTPClientContext()) }grinder.logger.info("before thread. init headers and cookies");}

@Testpublic 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/malinalian/p/10583327.html

相关资源:数据结构—成绩单生成器

最新回复(0)