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

Posted zhongyehai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能测试四十九: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快速开始

技术图片

技术图片

 







































































以上是关于性能测试四十九:ngrinder压测平台的主要内容,如果未能解决你的问题,请参考以下文章

性能测试——nGrinder的简易使用

性能测试——nGrinder的简易使用

Jmeter(四十九)_常用的性能测试监听器

性能测试之工具对比-ngrinder jmeter loadunner

性能工具之 nGrinder Post 请求脚本

性能工具之 nGrinder 区域配置