JMeter学习笔记Word文件下载.docx

上传人:b****3 文档编号:14424385 上传时间:2022-10-22 格式:DOCX 页数:24 大小:359.19KB
下载 相关 举报
JMeter学习笔记Word文件下载.docx_第1页
第1页 / 共24页
JMeter学习笔记Word文件下载.docx_第2页
第2页 / 共24页
JMeter学习笔记Word文件下载.docx_第3页
第3页 / 共24页
JMeter学习笔记Word文件下载.docx_第4页
第4页 / 共24页
JMeter学习笔记Word文件下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

JMeter学习笔记Word文件下载.docx

《JMeter学习笔记Word文件下载.docx》由会员分享,可在线阅读,更多相关《JMeter学习笔记Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。

JMeter学习笔记Word文件下载.docx

“E:

\jakarta-jmeter-2.3.2”。

4.设置环境变量:

i.在用户变量中,新建变量名“JMETER_HOME”,变量值为:

\jakarta-jmeter-2.3.2;

ii.修改“CLASSPATH”,添加:

“%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;

%JMETER_HOME%\lib\jorphan.jar;

%JMETER_HOME%\lib\logkit-1.2.jar;

5.运行jmeter:

直接打开E:

\jakarta-jmeter-2.3.2\bin\jmeter.bat即可。

2.JMeter的主要测试组件总结如下:

1.测试计划是使用JMeter进行测试的起点,它是其它JMeter测试元件的容器。

2.线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。

实际的请求容在Sampler中定义,它被线程组包含。

3.监听器负责收集测试结果,同时也被告知了结果显示的方式。

4.逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。

5.断言可以用来判断请求响应的结果是否如用户所期望的。

它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。

这个限制对于有效的测试是非常有用的。

6.配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的容。

7.前置处理器和后置处理器负责在生成请求之前和之后完成工作。

前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。

8.定时器负责定义请求之间的延迟间隔。

3.常用测试

本文以这三种节点为例,介绍如何使用JMeter来完成针对于它们的压力测试。

3.1Web服务器

对于大多数的项目来说,并不会自行开发一个Web服务器,因此Web服务器压力测试的对象实际就是--发布到Web服务器中的软件。

最简单的Web测试计划只需要三个JMeter的测试元件,如下图:

其中:

∙在线程组中定义线程数、产生线程发生的时间和测试循环次数。

∙在请求中定义服务器、端口、协议和方法、请求路径等。

∙表格监听器负责收集和显示结果。

这种设置对于包含了安全机制的web应用是不够的,典型的web应用一般都会:

1.有一个登录页,它是整个应用的入口。

当用户登录之后,应用会将用户相关的安全信息放到session中。

2.有一个filter,它拦截请求,检查每个请求相关的session中是否包含有用户安全信息。

如果没有,那么请求被重定向到登录页,要求用户提供安全信息。

在这种配置下应用上面的测试计划,那么除了登录页之外的其它请求都将因为缺少用户安全信息,而使请际定位到登录页。

如果不加断言,那么在监听器看来所有的请求都是成功。

而实际上,这些请求最终都没有到达它们应该去的地方。

显然,这种测试结果不是我们所期望的。

为了成功的测试,至少有2种方法:

∙方法一,去掉程序的安全设置,如filter,使得不需要用户安全信息也能访问受限容;

∙方法二,不修改程序,使用JMeter提供的"

URL重写修饰符"

或"

Cookie管理器"

对于第一种方法,有其局限性:

∙需要修改程序配置,如去掉web.xml中关于安全filter的设置。

需要维护多个版本的web.xml,如压力测试和功能测试分别各自的web.xml,增加了维护成本,而且有可能会在测试之后忘记将web.xml修改回来。

∙对于一些需要用户安全信息的页面无能为力,如某些业务审计操作需要用户安全信息来记录。

因为缺少这样的信息,注定了测试的失败。

如果解决为了这个问题进一步的修改程序,那么因为存在多个版本的程序,那么其维护难度将大大增加。

虽然,第二种方法配置难度增加了,但是它不用修改程序。

而且还可将测试计划保存成文件,以便重复使用。

因此,选用第二种方法是较为理想的做法。

下面以一个简化的例子说明使用方法二的配置步骤。

1.例子由以下几个文件组成:

∙AuthorizenFilter.java,过滤器负责检验session中是否存在用户信息。

如果没有,那么就转向到login.jsp。

它的主要方法doFilter容如下:

publicvoiddoFilter(ServletRequestrequest,

ServletResponseresponse,

FilterChainchain)

throwsIOException,ServletException{

ServletRequestreq=(ServletRequest)request;

ServletResponseres=(ServletResponse)response;

Sessionsession=req.getSession();

Useruser=(User)session.getAttribute("

user"

);

if(null==user){

Stringuri=req.getRequestURI();

//如果请求页是登录页,不转向

if(uri.equalsIgnoreCase("

/gWeb/login.jsp"

)){

chain.doFilter(request,response);

}else{

res.sendRedirect("

}

}else{

}

}

∙User.java,用户类负责记录用户的信息。

为了简化,这里的登录操作只允许指定用户名和密码。

主要容如下:

publicclassUser{

privateStringuser;

privateStringpwd;

publicUser(Stringuser,Stringpwd){

this.user=user;

this.pwd=pwd;

}

publicbooleanlogin(){

returnuser.equals("

foxgem"

)&

&

pwd.equals("

12345678"

publicStringgetUser(){

returnuser;

publicvoidsetUser(Stringuser){

∙Login.jsp和welcome.jsp。

其中login.jsp负责生成User对象,并调用User的login。

当login返回为true时转向到welcome.jsp。

其验证部分的代码:

<

%

if(request.getParameter("

Submit"

)!

=null){

Userur=newUser(request.getParameter("

),request.getParameter("

pwd"

));

if(ur.login()){

session.setAttribute("

ur);

response.sendRedirect("

/gWeb/welcome.jsp"

}else{

session.setAttribute("

LOGIN_ERROR_MSG"

"

无效的用户,可能原因:

用户不存在或被禁用。

/gWeb/index.jsp"

return;

%>

∙web.xml,配置filter拦截所有访问JSP页面的请求:

filter>

<

filter-name>

authorizen<

/filter-name>

filter-class>

org.foxgem.jmeter.AuthorizenFilter<

/filter-class>

/filter>

filter-mapping>

url-pattern>

*.jsp<

/url-pattern>

/filter-mapping>

2.创建如下结构的Web测试计划:

其中主要测试元件说明如下:

∙请求默认值负责记录请求的默认值,如服务器、协议、端口等。

∙第一个请求,请求login.jsp,并附加验证所需要的参数(user=foxgem,pwd=12345678,Submit=Submit);

其包含的响应断言验证url中包含"

welcome.jsp"

,这一点可以从程序中反应。

∙第二个请求,请welcome.jsp;

其包含的响应断言验证响应文本中包含"

,它是welcome.jsp页面逻辑的一部分。

∙cookie管理器负责管理整个测试过程中使用的cookie,它不需要设置任何属性。

∙循环控制器设置发送第二个请求的循环次数,表格监听器负责收集和显示第二个请求的测试结果。

启动测试计划之后,执行的顺序是:

首先,第一个请求登录页进行登录;

成功登录之后,使用循环控制器执行第二个请求。

请求welcome.jsp时,响应断言用来验证是否确实是welocme.jsp来处理请求,而不是因为其它页。

在这个测试计划中需要注意的是cookie管理器。

正是由于它的作用,使得第二个请求能顺利的发送到welcome.jsp进行处理,而不是因为缺少用户安全信息转发到login.jsp。

在这个例子中,我们并没有在程序中使用cookie(使用的是session),那么cookie管理器怎么会起作用呢?

这是因为在servlet/jsp规中对于session的状态跟踪有2种方式:

∙使用cookie,保留和传递sessionid。

它不要求程序对于url有什么特殊的处理,但是要求浏览器允许cookie。

在这个例子中,就是这种情形。

∙使用url重写,每次显式的在浏览器和服务器之间传递sessionid。

它要求程序对url进行编码,对浏览器没有要求。

对于第二种情形,可以使用JMeter前置管理器中的url重写修饰符来完成。

对于Tomcat,Session参数是jsessionid,路径扩展使用"

使用url编码时需要注意,必须将浏览器的cookie功能关闭。

因为url编码函数,如encodeURL,会判断是否需要将sessionid编码到url中。

当浏览器允许cookie时,就不会进行编码。

如果cookie而不是session来保存用户安全信息,那么直接使用cookie管理器就行了。

此时,需要将使用的cookie参数和值直接写到管理器中,由它负责管理。

对于其它的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1