ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:381.85KB ,
资源ID:3858298      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3858298.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JMeter学习笔记.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JMeter学习笔记.docx

1、JMeter学习笔记JMeter学习笔记1. 安装JMeter1.安装JDK1.4以上版本。2.设置环境变量:i.在用户变量中,新建变量名“JAVA_HOME”,变量值为:安装JDK的目录,如我的为:“C:Program FilesJavajdk1.5.0;” ii.再新建变量名为“CLASSPATH”,变量值为:“%JAVA_HOME%libdt.jar; %JAVA_HOME%libtools.jar; %JAVA_HOME%bin;” 。iii.在系统变量的“Path”变量值后加上:“%JAVA_HOME%bin;”。3.安装Jmeter,解压“jakarta-jmeter-2.3.2.

2、zip”到E盘根目录下:“E:jakarta-jmeter-2.3.2”。4.设置环境变量:i.在用户变量中,新建变量名“JMETER_HOME”,变量值为:“E:jakarta-jmeter-2.3.2;”。ii.修改“CLASSPATH”,添加:“%JMETER_HOME%libextApacheJMeter_core.jar;%JMETER_HOME%libjorphan.jar;%JMETER_HOME%liblogkit-1.2.jar;”。5.运行jmeter: 直接打开 E:jakarta-jmeter-2.3.2binjmeter.bat 即可。2. JMeter 的主要测试组

3、件总结如下:1. 测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。3. 监听器负责收集测试结果,同时也被告知了结果显示的方式。4. 逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。5. 断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。6. 配置元件维护Sampler需要的配置信息,并根据

4、实际的需要会修改请求的内容。7. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。8. 定时器负责定义请求之间的延迟间隔。3. 常用测试本文以这三种节点为例,介绍如何使用 JMeter 来完成针对于它们的压力测试。3.1 Web 服务器对于大多数的项目来说,并不会自行开发一个Web服务器,因此Web服务器压力测试的对象实际就是-发布到Web服务器中的软件。最简单的Web测试计划只需要三个 JMeter 的测试元件,如下图:其中:在线程组中定义线程数、产生线程发生的时间和测试循环次数。在http请求中定义服务器、端口、

5、协议和方法、请求路径等。表格监听器负责收集和显示结果。这种设置对于包含了安全机制的 web 应用是不够的,典型的 web 应用一般都会:1. 有一个登录页,它是整个应用的入口。当用户登录之后,应用会将用户相关的安全信息放到 session 中。2. 有一个 filter,它拦截请求,检查每个请求相关的 session 中是否包含有用户安全信息。如果没有,那么请求被重定向到登录页,要求用户提供安全信息。在这种配置下应用上面的测试计划,那么除了登录页之外的其它请求都将因为缺少用户安全信息,而使请求实际定位到登录页。如果不加断言,那么在监听器看来所有的请求都是成功。而实际上,这些请求最终都没有到达它

6、们应该去的地方。显然,这种测试结果不是我们所期望的。为了成功的测试,至少有2种方法:方法一,去掉程序的安全设置,如filter,使得不需要用户安全信息也能访问受限内容;方法二,不修改程序,使用JMeter提供的Http URL重写修饰符或Http Cookie管理器。对于第一种方法,有其局限性:需要修改程序配置,如去掉web.xml中关于安全filter的设置。需要维护多个版本的web.xml,如压力测试和功能测试分别各自的web.xml,增加了维护成本,而且有可能会在测试之后忘记将web.xml修改回来。对于一些需要用户安全信息的页面无能为力,如某些业务审计操作需要用户安全信息来记录。因为缺

7、少这样的信息,注定了测试的失败。如果解决为了这个问题进一步的修改程序,那么因为存在多个版本的程序,那么其维护难度将大大增加。虽然,第二种方法配置难度增加了,但是它不用修改程序。而且还可将测试计划保存成文件,以便重复使用。因此,选用第二种方法是较为理想的做法。下面以一个简化的例子说明使用方法二的配置步骤。1. 例子由以下几个文件组成:AuthorizenFilter.java,过滤器负责检验session中是否存在用户信息。如果没有,那么就转向到 login.jsp。它的主要方法 doFilter 内容如下:public void doFilter(ServletRequest request,

8、 ServletResponse response, FilterChain chain) throws IOException, ServletException HttpServletRequest req = (HttpServletRequest)request; HttpServletResponse res = (HttpServletResponse)response; HttpSession session= req.getSession(); User user = (User)session.getAttribute(user); if(null = user) Strin

9、g uri= req.getRequestURI(); /如果请求页是登录页,不转向 if( uri.equalsIgnoreCase(/gWeb/login.jsp) chain.doFilter(request, response); else res.sendRedirect(/gWeb/login.jsp); else chain.doFilter(request, response); User.java,用户类负责记录用户的信息。为了简化,这里的登录操作只允许指定用户名和密码。主要内容如下:public class User private String user; private

10、 String pwd; public User(String user, String pwd) this.user = user; this.pwd = pwd; public boolean login() return user.equals(foxgem) & pwd.equals(12345678); public String getUser() return user; public void setUser(String user) this.user = user; Login.jsp 和welcome.jsp。其中 login.jsp 负责生成 User 对象,并调用 U

11、ser 的login。当 login 返回为 true 时转向到 welcome.jsp。其验证部分的代码:web.xml,配置 filter 拦截所有访问 JSP 页面的请求: authorizen org.foxgem.jmeter.AuthorizenFilter authorizen *.jsp2. 创建如下结构的Web测试计划:其中主要测试元件说明如下:http请求默认值负责记录请求的默认值,如服务器、协议、端口等。第一个http请求,请求login.jsp,并附加验证所需要的参数(user=foxgem,pwd=12345678,Submit=Submit);其包含的响应断言验证u

12、rl中包含welcome.jsp,这一点可以从程序中反应。第二个http请求,请求是welcome.jsp;其包含的响应断言验证响应文本中包含foxgem,它是welcome.jsp页面逻辑的一部分。http cookie管理器负责管理整个测试过程中使用的cookie,它不需要设置任何属性。循环控制器设置发送第二个请求的循环次数,表格监听器负责收集和显示第二个请求的测试结果。启动测试计划之后,执行的顺序是:首先,第一个请求登录页进行登录;成功登录之后,使用循环控制器执行第二个请求。请求welcome.jsp时,响应断言用来验证是否确实是welocme.jsp来处理请求,而不是因为其它页。在这个

13、测试计划中需要注意的是http cookie管理器。正是由于它的作用,使得第二个请求能顺利的发送到welcome.jsp进行处理,而不是因为缺少用户安全信息转发到login.jsp。在这个例子中,我们并没有在程序中使用cookie(使用的是session),那么http cookie管理器怎么会起作用呢?这是因为在servlet/jsp规范中对于session的状态跟踪有2种方式:使用cookie,保留和传递sessionid。它不要求程序对于url有什么特殊的处理,但是要求浏览器允许cookie。在这个例子中,就是这种情形。使用url重写,每次显式的在浏览器和服务器之间传递sessionid

14、。它要求程序对url进行编码,对浏览器没有要求。对于第二种情形,可以使用JMeter前置管理器中的http url重写修饰符来完成。对于Tomcat,Session参数是jsessionid,路径扩展使用;。使用url编码时需要注意,必须将浏览器的cookie功能关闭。因为url编码函数,如encodeURL,会判断是否需要将sessionid编码到url中。当浏览器允许cookie时,就不会进行编码。如果cookie而不是session来保存用户安全信息,那么直接使用http cookie管理器就行了。此时,需要将使用的cookie参数和值直接写到管理器中,由它负责管理。对于其它的cooki

15、e使用,也是如此操作。登录问题解决之后,对于 Web 服务器的测试就没什么难点了。剩下的就是根据实际需要,灵活运用相关的测试组件搭建编写的测试计划。(当然,对于安全问题还有其它的使用情景。在使用时需要明确:JMeter 是否支持,如果支持使用哪种测试组件解决。)3.2 数据库服务器数据库服务器在大多数企业项目中是不可缺少的,对于它进行压力测试是为了找出:数据库对象是否可以有效地承受来自多个用户的访问。这些对象主要是:索引、触发器、存储过程和锁。通过对于SQL语句和存储过程的测试,JMeter 可以间接的反应数据库对象是否需要优化。JMeter 使用 JDBC 发送请求,完成对于数据库的测试。一

16、个数据库测试计划,建立如下结构即可:其中:JDBC连接配置,负责配置数据库连接相关的信息。如:数据库url、数据库驱动类名、用户名和密码等等。在这些配置中,绑定到池的变量名(Variable Name Bound to Pool)是一个非常重要的属性,这个属性会在JDBC请求中被引用。通过它, JDBC请求和JDBC连接配置建立关联。(测试前,请将所需要的数据库驱动放到JMeter的classpath中)。JDBC请求,负责发送请求进行测试。图形结果,收集显示测试结果。在实际的项目中,至少有2种类型的JDBC请求需要关注:select语句和存储过程。前者反应了select语句是否高效,以及表的

17、索引等是否需要优化;后者则是反应存储过程的算法是否高效。它们如果效率低下,必然会带来响应上的不尽如人意。对于这两种请求,JDBC请求的配置略有区别:Select语句存储过程如果对于Oracle,如果测试的是函数,那么也可以使用select语句来进行配置,此时可以使用:select 函数(入参) from dual形式的语句来测试,其中dual是oracle的关键字,表示哑表。对于其它厂商的数据库产品,请查找手册。3.3 JMS服务器MOM 作为消息数据交换的平台,也是影响应用执行效率的潜在环节。在 Java 程序中,是通过 JMS 与 MOM 进行交互的。作为 Java 实现的压力测试工具,J

18、Meter 也能使用 JMS 对应用的消息交换和相关的数据处理能力进行测试。这一点应该不难理解,因为在整个测试过程中,JMeter 测试的重点应该是消息的产生者和消费者的本身能力,而不是 MOM本身。根据 JMS 规范,消息交换有2种方式:发布/订阅和点对点。JMeter针对这两种情形,分别提供了不同的Sampler进行支持。以下MOM我们使用ActiveMQ 3.2.1,分别描述这两种消息交换方式是如何使用 JMeter 进行测试。1. 测试前的准备(两种情况都适用)下面就是实际使用 jmeter 进行 jms 测试首先需要启动 activemq,直接运行 ACTIVEMQ_HOME/bin

19、/activemq.bat (ACTIVEMQ_HOME即activemq的安装目录)批处理脚本,当看到如下图所示内容,说明 activemq 已经成功启动。下 面开始启动 jmeter。在运行 jmeter 之前需要完成几件事情。由于 jmeter 是通过 jndi 来获得 jms 中相关对象的,如 ConnectionFactory 和 Destination,所以在 jmeter 的 classpath 中需要添加一个 jndi.properties 属性文件,用于配置jndi。这个文件配置的是 activemq 相关的jndi,有关 activemq 与 jndi 的集成可以参考htt

20、p:/activemq.apache.org/jndi-support.html。jndi.properties 文件的内容如下:java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactoryjava.naming.provider.url=tcp:/localhost:61616connectionFactoryNames=connectionFactoryqueue.MyQueue=example.MyQueuequeue.MyQueue2=example.MyQueue2topic.My

21、Topic=example.MyTopic保存并把这个文件复制到 JMETER_HOME/bin (JMETER_HOME为 jmeter 的安装目录)目录中。由于 bin 目录并不在 jmeter 的 classpath 中,所以需要执行一些额外的工作来把 jndi.properties 添加到 jmeter 的classpath 中,这儿使用一种最简单的办法:把 jndi.properties 打包到 jmeter 的启动 jar 包中。 jmeter 的启动 jar 包为 JMETER_HOME/bin/ApacheJMeter.jar,所以需要把 jndi.properties 打包到

22、这个 jar 文件中。执行如下操作,打开命令行窗口,并定位到 JMETER_HOME/bin 目录,运行如下命令 jar uf ApacheJMeter.jar jndi.properties 就可以,如图所示下图是运行 jar uf ApacheJMeter.jar 命令之前,ApacheJMeter.jar 中所包含的目录或文件下图是运行 jar uf ApacheJMeter.jar 命令之后的情况可以看到,ApacheJMeter.jar 文件中已经包含了 jndi.properties 文件。jmeter 在测试 jms 的时候会使用到 activemq 提供的 jms 的实现类,这

23、些类并没有随 jmeter 一起分发,所以需要把这些类添加到 jmeter 的 classpath 中。只要把 ACTIVE_HOME/activemq-all-5.2.0.jar 文件复制到 JMETER_HOME/lib 目录中即可。下面可以运行 jmeter 了,直接运行 JMETER_HOME/bin/jmeter.bat 批处理文件就可以启动 jmeter 了。(jmeter 启动的时候默认会在 JMETER_HOME/bin 目录中生成一个日志文件 jmeter.log,如果运行过程中有什么问题可以查看这个日志文件)jmeter 启动之后如下图所示下面我们来一步一步建立测试计划。首

24、先是创建线程组线程组的具体配置为创建完线程组之后创建 jmspointtopointsamplerjms 配置如下所示最后创建一个监听器下面就可以开始测试了下面两张图片是通过 activemq 基于 web 的管理控制台查看到的 example.MyQueue 队列上等待传递的消息的条数。图1图2可以看到运行这一次测试发送了5条消息,这些消息的内容为上面就是一个简单的使用 jmeter 测试 jms 应用的过程。从 上面准备测试的过程可以看出,在准备 activemq 方面的 jndi 的配置的时候有点麻烦,尤其是需要修改 jndi 配置的时候尤其麻烦,还有就是直接把 activemq 的 j

25、ar 包放到 lib 目录中会使 jmeter 的 jar 包与测试依赖的混在一起,下面就通过修改 jmeter 启动类源代码的方法来解决这两个问题。要通过修改 jmeter 的启动类,在 lib 目录下增加两个目录:user 和 conf,user 目录用于存放测试依赖的 jar 包,conf 用于存放类似 jndi.properties 这样的配置文件,这两个目录都必须添加到 jmeter 运行时的 classpath 中。查看 jmeter.bat 可以知道, 是通过运行 bin 目录中 ApacheJMeter.jar 文件来启动 jmeter 的。查看 ApacheJMeter.ja

26、r 文件的清单文件可知启动类为 org.apache.jmeter.NewDriver。下载 jmeter 的源代码,查看类 org.apache.jmeter.NewDriver。查看 NewDriver 的源代码可知,jmeter 的启动方式是,扫描 lib 目录以及 lib 目录下的子目录 ext 和 junit 下的 jar 包,通过这些 jar 包构建一个 URLClassLoader,然后把这个类加载器设为当前线程的上下文类加载器,然后使用这个类加载器加载类 org.apache.jmeter.JMeterReport,并运行它的 start 方法(activemq 也是以这样的方

27、式来编写启动类的)。下面只要把 user 添加到扫描目录中,并把 conf 目录添加到 classpath 中。修改后的源代码,以及编译打好的包都在附件中,需要的可以下载。只要下载 ApacheJMeter.jar 并把它复制到 bin 目录中,替换 jmeter 原来的 ApacheJMeter.jar 即可,然后在 lib 目录下创建两个子目录 user 和 conf。user 用于存放测试依赖的 jar 包,conf 用于存放配置。2. 发布/订阅在实际测试时,发布者和订阅者并不是需要同时出现的。例如,有时我们可能想测试单位时间内消息发布者的消息产生量,此时就不需要消息发布者,只需要订阅

28、者就可以了。本例为了说明这两种Sampler的使用,因此建立如下的测试计划:其中JMS Publisher和JMS Subscriber的属性:选择使用jndi.properties,连接工厂是connectionFactory,主题是MyTopic,其它使用默认配置。对于JMS Publisher,还需提供测试用的文本消息。启动ActiveMQ,运行测试计划。如果配置正确,那么与ActiveMQ成功连接之后,在JMeter的后台会打印出相关信息。在测试过程中,JMeter 后台打印可能会出现java.lang.InterruptedException 信息,这个是正常现象,不会影响测试过程和

29、结果。这一点可以从 bin 下的 jmeter.log 看出。3. 点对点对于点对点,JMeter只提供了一种Sampler:JMS Point-to-Point。在例子中,建立如下图的测试计划:其中:Communication style是Request Only。对于另一种风格:Request Response,会验证收到消息的JMS Header中的JMSCorrelationID,以判断是否是对请求消息的响应。4. jmeter结果分析采用Jmeter测试工具对web系统作的负载测试,得出的响应报表,数据比较难懂,现作一具体说明以下是在一次具体负载测试中得出的具体数值,测试线程设置情况为:线程数:200,等待时间(ramp-up):0秒,循环次数为永远,另线程组这些元件用于指定运行的线程数和等候周期。每个线程模拟一个用户,而等候周期用于指定创建全部线程的时间。例如,线程数为5,等候时间为10秒,则创建每个线程之间的时间间隔为2秒。循环数定义了线程的运行时间。使用调度器,还可以设置运行的起始时间取样器对于服务器HTTP、FTP或LDAP请求,这些元件是可配置请求。该教程仅侧重于Web Services请求监听器这

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

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