目 录

JMeter教程

JMeter是一个开放源码的测试软件。它是100%纯Java应用程序的负载和性能测试。

JMeter旨在覆盖的测试类型,如负载,功能,性能,回归,等类别,它需要JDK5 或 更高版本。

本教程会让你了解 JMeter 框架需要测试的企业级应用提供健壮性和可靠性。

读者

 

本教程是专为软件专业人员,学习JMeter 框架,简单轻松的步骤。本教程会让你了解 JMeter 框架概念,并完成本教程后,可以把自己的专业知识水平较高的专业技术水平。

前提条件

在继续本教程之前,您应该有一个基本的了解Java编程语言,文本编辑器和执行计划,等,因为你要使用JMeter来处理Java项目测试各级(回归,功能,负载,性能等),所以它会是很好的,如果你有知识,软件开发和软件测试过程。

 

在学习使用 JMeter 之前,我们先来了解一些术语大多与任何应用程序的测试。

  • 性能测试: 此测试设置“最好的可能”根据一个给定的配置基础设施的性能期望。它还强调,早在测试过程中,应用程序进入生产前需要作出改变。

  • 负载测试:这个测试基本上是用于行使\顶部负载下系统发现它被设计为下运作。

  • 压力测试:这个测试是企图破坏系统不堪重负资源。


 

JMeter是什么?

JMeter是一个软件,使负载测试或业绩为导向的业务(功能)测试不同的协议或技术。 Apache软件基金会的Stefano Mazzocchi JMeter的最初的开发。他写道:它主要对 Apache JServ(现在称为如Apache Tomcat项目)的性能进行测试。Apache后来重新设计JMeter 增强的图形用户界面和添加功能测试能力。

这是一个具有图形界面,使用Swing 图形API 的 Java 桌面应用程序,因此可以运行在任何环境/工作站接受一个Java 虚拟机,例如:在Windows,Linux,MAC等。

JMeter 支持的协议是:

  • web:HTTP,HTTPS站点的Web1.0的Web 2.0 (ajax, flex and flex-ws-amf)
  • Web Services: SOAP / XML-RPC
  • 通过JDBC驱动程序的数据库
  • 目录: LDAP
  • 面向消息的服务通过JMS
  • Service: POP3, IMAP, SMTP
  • FTP 服务

JMeter 特点

以下是一些 JMeter 的特点:


  • 它是免费的。开放源码软件。

  • 它具有简单,直观的图形用户界面。

  • JMeter中负载和性能测试许多不同的服务器类型:网站 - HTTP,HTTPS,SOAP,数据库通过JDBC,LDAP,JMS,邮件 - POP3

  • 它是独立于平台的工具。在Linux / UNIX,JMeter中JMeter中shell脚本点击可以调用。在Windows上,它可以调用启动jmeter.bat文件。

  • 它具有完整的Swing和轻量级组件支持(预编译的JAR使用包javax.swing中*)。

  • JMeter 测试计划存储为XML格式。这意味着可以使用文本编辑器生成一个测试计划。

  • 它的完整的多线程框架,允许并发多线程和同步采样不同的功能由单独的线程组采样。

  • 它是高度可扩展的。

  • 也可用于执行应用程序的自动化测试和功能测试。

JMeter是如何工作的?

JMeter中模拟一组用户发送到目标服务器的请求和回报目标服务器/应用程序的性能/功能的统计数字表明,通过表格,图形等下图描述了这个过程:

jmeter

 


JMeter 是基于 Java 的框架,所以第一个要求是JDK安装在机器上。

系统要求

JDK 1.6 +
内存 不限
硬盘空间 不限
操作系统 不限

第1步 - 验证Java安装在你的机器上

现在,打开控制台并执行以下 java 命令。

OS任务命令
Windows Open Command Console c:\> java -version
Linux Open Command Terminal $ java -version
Mac Open Terminal machine:~ joseph$ java -version

让我们来验证所有的操作系统的输出:

OS输出
Windows java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
Linux java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
Mac java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

如果没有安装Java,可以从以下网址:http://www.oracle.com/technetwork/java/javase/downloads/index.htmll 下载并安装Java软件开发工具包(SDK)。本教程中使用Java1.7.0_25。

第2步:设置JAVA环境

设置 JAVA_HOME 环境变量指向的基本目录的位置,在机器上安装Java。例如;

OS输出
Windows Set the environment variable JAVA_HOME to C:\Program Files\Java\jdk1.7.0_25
Linux export JAVA_HOME=/usr/local/java-current
Mac export JAVA_HOME=/Library/Java/Home

附加 Java编译器的位置到系统路径。

OS输出
Windows Append the string; C:\Program Files\Java\jdk1.7.0_25\bin to the end of the system variable, Path.
Linux export PATH=$PATH:$JAVA_HOME/bin/
Mac not required

验证Java安装使用命令java-version如上所述。

第3步:下载JMeter

下载JMeter最新版本,从 http://jmeter.apache.org/download_jmeter.cgi。在写这篇教程的时候,下载的Apache JMeter2.9,并将它复制到 C:\>JMeter 目录中:

目录结构看起来应该像如下:


  • apache-jmeter-2.9


  • apache-jmeter-2.9\bin


  • apache-jmeter-2.9\docs


  • apache-jmeter-2.9\extras


  • apache-jmeter-2.9\lib\


  • apache-jmeter-2.9\lib\ext


  • apache-jmeter-2.9\lib\junit


  • apache-jmeter-2.9\printable_docs

可以重命名的父目录(即Apache的JMeter2.9),但不改变子目录名称。

第4步:运行JMeter

一旦下载JMeter,跳转到bin目录。在我们本教程中,这将是 /home/manisha/apache-jmeter-2.9/bin。现在点击以下:

OS输出
Windows jmeter.bat
Linux jmeter.sh
Mac jmeter.sh

JMeter的GUI点击上述文件后,经过短暂的停顿,应该会出现在下面的图片中看到,这是一个Swing应用程序:

jmeter

 

这是主页面,默认页面的工具。


测试计划是什么?

测试计划定义如何和测试,并提供了一个布局。例如,Web应用程序以及客户端服务器应用程序。它可以被看作作为容器运行测试。一个完整的测试计划将包括一个或多个元素,如线程组,逻辑控制器,样品产生控制器,监听器,定时器,断言和配置元素。测试计划必须至少有一个线程组。在下一章中,我们将讨论这些元素的细节 测试计划元素.

按照下面的步骤来写一个测试计划:

启动JMeter窗口

打开JMeter窗口通过点击 /home/manisha/apache-jmeter-2.9/bin/jmeter.sh。 JMeter窗口会出现如下图:

JMeter GUI这个JMeter窗口什么都还没有添加。上述窗口的详细信息如下:


  • 保持真正的测试计划,测试计划节点。


  • 工作台节点只是提供了一个地方暂时存放在不使用时,测试元素复制/粘贴的目的。当您保存测试计划,工作台项目将不保存它。

添加/删除元素

通过右键点击测试计划节点,并从“add”列表中选择一个新的元素,元素(将在下一章测试计划要素讨论),可以添加一个测试计划。

另外,元素可以从文件中加载,并通过选择“merge”或“open”选项添加。

例如,让我们添加一个线程组元件测试计划如下所示:

Add Thread Group

要删除一个元素,确保元素被选中,右键单击该元素,然后选择“remove”选项。 

Remove Element

加载和保存元素

从文件加载一个元素,右键单击您要添加的加载元件对现有树元素,并选择“merge”选项。选择文件保存元素。 JMeter会合并的元素,放到树上。

Load Element

为了保存树元素,元素上点击右键并选择选择另存为...选项。 JMeter会保存选定的元素,再加上它下面的所有子元素。默认情况下,不保存JMeter 的元素,需要明确地保存它,如前面提到的。

配置树元素

目前在JMeter 右手帧的控制,可配置的测试计划中的任何元素。这些控件允许配置特定的测试元件的行为。例如线程组可配置的用户数量上升期等如下:

Add Thread Group

保存测试计划

您可以保存整个测试计划,可以通过使用“Save ”或“Save Test Plan As ....”从“文件”菜单。

Save Test Plan

运行一个测试计划

您可以运行您的测试计划从Run菜单项中选择“Start ”(控制+ R)。当运行JMeter是,它显示了一个绿色的小盒子,右手端的部分,只是在菜单栏下。

Run Test Plan

左侧的绿色方块的数字是活动线程/线程总数的数量。这些只适用于本地运行的测试,他们不包括任何远程系统上使用客户 - 服务器模式时启动的线程。

停止测试

停止测试方法有两种:

  • 使用stop(Control + '.')。这立即停止线程如果可能的话。

  • 使用shutdown(Control + ',')。这就要求线程停止在任何当前工作的结束。

 


创建JMeter测试计划 -- 数据库测试

 

在本章中,我们将看到如何创建一个简单的测试计划,测试数据库服务器。对于我们的测试目的,我们使用MySQL数据库服务器。您可以使用任何其他数据库进行测试。MYSQ的安装和创建表,请参阅 MYSQL教程

安装MySQL以后,请按照以下步骤设置数据库:

  • 创建一个数据库名称 "tutorial".

  • 创建一个表 tutorials_tbl.

  • 插入记录到 tutorials_tbl :

    mysql> use TUTORIALS; Database changed mysql> INSERT INTO tutorials_tbl ->(tutorial_title, tutorial_author, submission_date) ->VALUES ->("Learn PHP", "John Poul", NOW()); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO tutorials_tbl ->(tutorial_title, tutorial_author, submission_date) ->VALUES ->("Learn MySQL", "Abdul S", NOW()); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO tutorials_tbl ->(tutorial_title, tutorial_author, submission_date) ->VALUES ->("JAVA Tutorial", "Sanjay", '2007-05-06'); Query OK, 1 row affected (0.01 sec) mysql>

  • 复制JDBC驱动程序到 /home/manisha/apache-jmeter-2.9/lib.

首先,让我们启动JMeter  /home/manisha/apache-jmeter-2.9/bin/jmeter.sh.

添加用户

现在,创建一个线程组,右键点击 Test Plan > Add> Threads(Users)> Thread Group. 根据测试计划节点将添加线程组。重命名此线程为JDBC用户。

Thread Group Added

我们不会改变线程组的默认属性。

添加JDBC请求

现在,我们已经定义了我们的用户,它是时间来定义,他们将要执行的任务。在本节中将指定JDBC请求执行。 JDBC Users元件上右击,选择 Add > Config Element > JDBC Connection Configuration.

设置以下字段(我们使用的是MySQL数据库教程):

  • 变量名绑定到池。这需要唯一地标识该配置。它是用来由JDBC采样器,以确定要使用的配置。作为测试,我们把它命名为 test


  • Database URL: jdbc:mysql://localhost:3306/tutorial

  • JDBC Driver class: com.mysql.jdbc.Driver

  • 用户名: root

  • 密码: root的密码

在屏幕上的其他领域,可以留为默认值,如下所示:

JDBC Configuration Pool

添加一个JDBC请求是指上面定义的JDBC配置池。选择JDBC Users元件,单击鼠标右键得到添加菜单,然后选择 Add > Sampler > JDBC Request. 然后,选择这个新的元素,以查看它的控制面板。编辑属性如下:

  • 变量名绑定到池。这需要唯一地标识该配置。它是用来由JDBC采样器,以确定要使用的配置。我们将其命名为 test

  • Name: Learn

  • Enter the Pool Name: test (same as in the configuration element)

  • Query Type: Select statement

  • Enter the SQL Query String field.

JDBC Request

创建侦听器

现在添加Listener元素。此元素负责存储所有JDBC请求的结果,在一个文件中,并呈现出可视化的数据模型。

选择JDBC Users元件,并添加一个查看结果树监听器(Add > Listener > View Results Tree).

JDBC Test Listener

保存并执行测试计划

现在保存的以上测试计划db_test.jmx。执行本测试计划使用 Run > Start 选项.

校验输出

JDBC Test OutputJDBC Test OutputJDBC Test Output

在最后图像,可以看到,2条记录被选择。

 


 

创建JMeter测试计划 -- FTP测试

 

在本章中,我们将看到如何使用JMeter 测试FTP站点。让我们创建一个测试计划,测试FTP站点。

重命名测试计划

通过点击启动 JMeter 窗口 /home/manisha/apache-jmeter-2.9/bin/jmeter.sh. 点击测试计划节点上。重命名此测试计划节点 TestFTPSite.

添加线程组

添加一个线程组,这是所有其他元素,如取样器,控制器,监听的占位符。右键单击 TestFTPSite(our Test Plan) > Add > Threads(Users) > Thread Group. 线程组将添加根据测试计划(TestFTPSite)的节点。

接下来,让我们修改线程组的默认属性,以满足我们的测试。改变以下属性:

Name: FTPusers

线程数(用户): 4

Ramp-Up Period: 离开默认值0秒。

Loop Count:1

FTP Test Users

添加采样器的FTP请求

现在,我们已经定义了我们的用户,它是时间来定义,他们将要执行的任务。我们将添加FTP请求元素。我们将添加两个FTP请求元素,将检索一个文件,将FTP站点上的文件。开始由选择FTPUSERS元素。点击鼠标右键得到添加菜单,然后选择 Add > Sampler > FTP Request. 然后,选择FTP请求树中的元素,并在下面的图片编辑下列属性:

FTP Request Get

这个元素中输入下列详细信息:

Name: FTP Request Get

Server Name or IP: 184.118.14.9

Remote File: /home/manisha/sample_ftp.txt

Local File:sample_ftp.txt

Select get(RETR)

Username:manisha

Password:manispass32

现在添加另一个FTP请求,并在下面的图片编辑的属性:

FTP Request Put

这个元素中输入下列详细信息:

Name: FTP Request Put

Server Name or IP: 184.168.74.29

Remote File: /home/manisha/examplefile.txt

Local File: /home/manisha/work/examplefile.txt

Select put(STOR)

Username:manisha

Password:manisha123

添加监听器

需要添加到测试计划中的最后一个元素是一个监听器。此元素是负责为FTP请求的所有结果存储在一个文件中,呈现出可视化的数据模型。

选择 FTPusers 元素,并添加一个查看结果树监听器  (Add > Listener > View Results Tree).

FTP Test Listener

运行此测试计划

现在保存的以上测试计划 ftpsite_test.jmx。执行本测试计划使用 Run > Start 选项。

查看输出

下面的输出,在监听器中。

FTP Test ResultFTP Test ResultFTP Test ResultFTP Test Result

可以看到,四点要求的每个FTP请求测试成功。 GET请求检索文件存储在bin文件夹中。在我们的例子中,这将是 /home/manisha/apache-jmeter-2.9/bin/. PUT请求,上传文件的路径为 /home/manisha/.

 


jMeter Webservice测试计划

 

 

在本章中,我们将学习如何创建一个测试计划,测试一个WebService。对于我们的测试目的,我们已经创建了一个简单的 Web 服务项目,并将其部署在 Tomcat 服务器上本地。

创建WebService项目

要创建一个 Web 服务项目中,我们使用了Eclipse IDE。首先编写服务端接口 HelloWorld 包下com.yiibai.ws。 HelloWorld.java 的内容如下:

package com.yiibai.ws; import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import javax.jws.soap.SOAPBinding.Style; //Service Endpoint Interface @WebService @SOAPBinding(style = Style.RPC) public interface HelloWorld{ @WebMethod String getHelloWorldMessage(String string); }

这个服务有一个的方法 getHelloWorldMessage 需要字符串 参数。

下一步创建实现类 HelloWorldImpl.java 在包 com.yiibai.ws 下。

package com.yiibai.ws; import javax.jws.WebService; @WebService(endpointInterface="com.yiibai.ws.HelloWorld") public class HelloWorldImpl implements HelloWorld { @Override public String getHelloWorldMessage(String myName){ return("Hello "+myName+" to JAX WS world"); } }

作为下一个步骤,让本地发布此Web服务通过创建端点出版商和公开此服务的服务器上。

publish方法有两个参数:


  • 端点URL字符串。

  • 实现程序对象 HelloWorld 实现类,在这种情况下,这是作为一个Web服务公开在以上参数中提到的由URL标识的端点。

HelloWorldPublisher.java 内容如下所示:

package com.yiibai.endpoint; import javax.xml.ws.Endpoint; import com.yiibai.ws.HelloWorldImpl; public class HelloWorldPublisher { public static void main(String[] args){ Endpoint.publish("http://localhost:9000/ws/hello", new HelloWorldImpl()); } }

接下来修改web.xml如下:

http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">     com.sun.xml.ws.transport.http.servlet.WSServletContextListener    hello  com.sun.xml.ws.transport.http.servlet.WSServlet  1   hello /hello   120  

要部署的 web 服务应用程序,我们需要 sun-jaxws.xml 配置文件,这个文件的内容如下:

  xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">  name="HelloWorld" implementation="com.whoistester.ws.HelloWorldImpl" url-pattern="/hello"/> 

现在,所有文件都准备好目录结构看起来会像下面的图片:

Webservice Dir structure

现在,这个应用程序创建一个WAR文件。选择 project > right click > Export > WAR文件。hello.war 文件保存Tomcat 服务器 webapps文件夹下。现在启动Tomcat服务器。在服务器启动后,你应该能够访问web服务可以通过以下网址:  

http://localhost:8080/hello/hello

创建JMeter测试计划

现在,让我们创建一个测试计划,测试上面的 web服务。

重命名测试计划

通过点击启动JMeter的窗口 /home/manisha/apache-jmeter-2.9/bin/jmeter.sh. 点击测试计划节点上。重命名此测试计划节点 WebserviceTest.

WS Test Plan

添加线程组

添加一个线程组,这是所有其他元素,如取样器,控制器,监听的占位符。右键单击我们的测试计划 WebserviceTest(our Test Plan) > Add > Threads(Users) > Thread Group。线程组将添加根据测试计划(WebserviceTest)的节点。 

接下来,让我们修改线程组的默认属性,以满足我们的测试。改变以下属性:

Name: webservice user

Number of Threads (Users): 2

Ramp-Up Period: leave the the default value of 0 seconds.

Loop Count:2

WS Test Users

添加SAMPLER-SOAP/XML RPC请求

现在,我们已经定义了用户,它是时间定义,他们将要执行的任务。我们将添加 SOAP/ XML-RPC 请求元素。点击鼠标右键得到添加菜单,然后选择 Add > Sampler > SOAP/XML-RPC Request,选择元素树中的SOAP/ XML-RPC请求,并在下面的图片编辑下列属性:

这个元素中输入下列详细信息:

Name: SOAP/XML-RPC Request

URL: http://localhost:8080/hello/hello?wsdl

Soap/XML-RPC Data: Enter the below contents

 xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://t.whoistester.com/">    Manisha   

WS Test request

添加监听器

需要添加到测试计划中的最后一个元素是一个监听器。此元素是负责所有的 HTTP 请求的结果存储在一个文件中,并呈现出可视化的数据模型。

选择 webservice 用户元素,并添加一个查看结果树监听器(Add > Listener > View Results Tree).

WS Test request

运行此测试计划

现在保存的以上测试计划 test_webservice.jmx。执行本测试计划使用 Run > Start  选项。

查看输出

下面的输出,可以看到在监听器中。

WS Test ResultWS Test ResultWS Test Result

可以看到在过去的图像响应消息 "Hello Manisha to JAX WS world".


jMeter JMS测试计划

在本章中,我们将学习如何写一个简单的测试计划,测试JMS(Java消息服务)。谁不知道JMS请阅读本章之前,让自己熟悉的JMS。 JMS支持两种类型的消息:

  • 点到点消息: 一般用于交易发件人期望的响应队列消息。邮件系统是完全不同于普通的HTTP请求。在HTTP中,单个用户发送一个请求并得到响应。

     

  • 主题消息 : 发布/订阅消息被俗称为主题的消息。主题消息一般使用情况下,消息发布由生产者和消费由多个用户。

让我们来看看这些为每个测试的例子。测试JMS的先决条件是:

ActiveMQ Server

  • 我们将在我们的例子中使用的是Apache ActiveMQ。虽然也有其他JMS服务器,如IBM的WebSphere MQ(以前称为MQSeries),TIBCO等下载 Apache网站的ActiveMQ二进制文件.

  • 解压缩归档文件,请解压目录,运行以下命令从命令控制台启动 ActiveMQ 服务器:

    .\bin\activemq  start

    可以验证,如果 ActiveMQ 服务器已经开始在以下地址 http://localhost:8161/admin/ 访问管理界面。如果要求进行身份验证输入用户ID和密码为admin。屏幕将类似于如下:

  • 现在复制activemq-all-x.x.x.jar(XXX的版本而定)从ActiveMQ的解压目录   /home/manisha/apache-jmeter-2.9/lib.

通过上述的设置,让我们构建的测试计划:

 

 

构建一个JMS点到点的测试计划

 

现在,让我们写一个JMeter测试计划,测试JMS点到点对点消息传递解决方案。测试设置1个线程组及1个线程或用户发送2条消息通过请求队列。 

首先,让我们启动JMeter /home/manisha/apache-jmeter-2.9/bin/jmeter.sh.

添加用户

现在,创建一个线程组,右键点击 Test Plan > Add> Threads(Users)> Thread Group. 根据测试计划节点将添加线程组。命名此主题组为 JMSTestPlan-PointtoPoint.

Thread Group Added

我们将改变循环次数为2。其余的线程组的默认属性将被保留。这意味着,一个线程或用户发送一个线程组各2条消息通过请求队列。

加入JMS的点到点取样

现在,我们已经定义了我们的用户,它是时间来定义,他们将要执行的任务。开始采样JMS点到点,点到点元素加入 (Add > Sampler > JMS Point-to-Point). 然后,选择JMS树中的点到点取样元素。以下属性进行更改的JMS点到点取样元素:

属性描述
QueueuConnectionFactory ConnectionFactory 这是默认JNDI条目内ActiveMQ连接工厂。
JNDI Name Request Queue Q.REQ JMeter JNDI名称使连接工厂和队列之间的连接。
JNDI Name Receive Queue Q.REQ JMeter JNDI名称使连接工厂和队列之间的连接。我们都使用相同的响应队列。
Communication Style Request Response 这意味着至少需要服务运行JMeter外,将响应请求。此服务必须侦听请求队列,并发送消息引用的队列由message.getJMSReplyTo()
Use Request message ID checked 可以留下JMeter的使用消息ID请求传入的消息并回收之间的相关性(押金)。
Use Response message ID checked 可以留下使用JMeter的消息标识符响应(恢复)传入的消息和恢复之间的相关性。
Time(milliseconds) 2000 使用此超时的消息时,如果没有收到JMeter的恢复时间(这里2秒),那么该项目将被标记错误。
Content Testing point to point 这仅仅是该消息的内容。
InitialContextFactory org.apache.activemq.jndi
.ActiveMQInitialContextFactory
Active MQ标准InitialContextFactory
queue.Q.REQ example.A 之间的对应关系的队列JNDI名称(Q.REQ)的队列中的ActiveMQ(example.A)真实姓名。
Provider URL tcp://localhost:61616 ActiveMQ地址和端口。

下面的屏幕截图显示,上述配置:

JMS Point to point sampler

CREATE LISTENER

Now add the Listener element. This element is responsible for storing all of the results of your JMS requests in a file and presenting a visual model of the data.

Select the Thread Group element and add a View Results Tree listener (Add > Listener > View Results Tree).

JMS Point to Point Test Listener

SAVE AND EXECUTE TEST PLAN

Now save the above test plan as jmsptp_test.jmx. Execute this test plan using Run > Start option.

VERIFY OUTPUT

JMS PTP Test OutputJMS PTP Test OutputJMS PTP Test Output

Return to the admin console of ActiveMQ, from this we can see message status in the queue.

JMS PTP Admin Console

构建JMS主题测试计划

现在,让我们写一个 JMeter 测试计划,测试JMS提供商。我们将创建一个用户和一个出版商。创建一个线程组,并设置每次一到两个迭代。

首先,让我们启动JMeter  /home/manisha/apache-jmeter-2.9/bin/jmeter.sh.

添加用户

现在,创建一个线程组,右键点击 Test Plan > Add> Threads(Users)> Thread Group. 根据测试计划节点将添加线程组。命名此主题组作为JMS pub-sub用户。

Thread Group Added

我们将改变循环次数为2。其余的线程组的默认属性将被保留。这意味着一个线程组使用一个线程或用户发送两条消息分别通过一个请求队列。

加入JMS用户和发布

添加发布

接下来,添加采样JMS发布到发布元素 (Add > Sampler > JMS Publisher). 然后,选择JMS发布元素在树中编辑以下属性:

属性描述
Name Sample Publisher 树中显示该元素的描述性名称。
If the JMS provider uses the jndi.properties file check the box 使用jndi.properties。请注意该文件必须在classpath - 例如通过更新user.classpath JMeter的属性。如果这个选项没有被选中,JMeter使用“JNDI初始上下文工厂”和“提供URL”字段创建连接。
InitialContextFactory org.apache.activemq.jndi.ActiveMQInitialContextFactory Name of the context factory.
Provider URL tcp://localhost:61616 JMS提供者的URL。
Connection Factory ConnectionFactory JMS提供者的URL。
Destination dynamicTopics/MyStaticTopic1 消息主题的名称。对于ActiveMQ的动态主题(动态创建主题)。
Number of samples to aggregate 2 聚集的样品数量。
Message source Textarea
在哪里获得消息:
从文件:表示引用的文件,将所有样品读取和重用
随机文件从指定的文件夹如下:指从指定的文件夹下面,将选择一个随机文件,这个文件夹必须包含两种副档名为.dat字节的消息,或带扩展名的文件.txt或.obj对象或文本消息。
文本区域使用文本或对象消息:消息
Message type Text 文字,地图,对象消息或字节消息

其余的属性均保留默认值。下面的屏幕截图显示,上述配置:

JMS publisher sampler添加订阅服务

现在,我们已经定义了我们的用户,它是时间来定义,他们将要执行的任务。开始通过增加采样JMS订阅服务器上认购元素(Add > Sampler > JMS Subscriber). 然后,选择树中的JMS订阅服务器元素的编辑以下属性:

属性描述
Name Sample Subscriber 树中显示该元素的描述性名称。
If the JMS provider uses the jndi.properties file check the box 使用jndi.properties。请注意该文件必须在classpath - 例如通过更新 user.classpath JMeter 属性。如果这个选项没有被选中,JMeter的使用“JNDI初始上下文工厂”和“提供URL”字段创建连接。
InitialContextFactory org.apache.activemq.jndi.ActiveMQInitialContextFactory 名称的上下文厂。
Provider URL tcp://localhost:61616 JMS提供者的URL。
Connection Factory ConnectionFactory JMS提供者的URL。
Destination dynamicTopics/MyStaticTopic1 消息主题的名称。对于ActiveMQ的动态主题(动态创建主题)。
Read response Check Box 采样器读取响应。如果没有,只有响应的长度将被返回。
Timeout 2000 指定的超时时间,以毫秒为单位。 0=null。这是整体的总超时,而不是每个样品。

其余属性均保留默认值。下面的屏幕截图显示,上述配置:

JMS subscriber sampler

创建侦听器

现在添加Listener元素。此元素是负责为您的JMS请求的结果存储在一个文件中,并呈现出可视化的数据模型。

选择线程组元件和添加查看结果树监听器 (Add > Listener > View Results Tree).

JMS Pub Sub Test Listener

保存并执行测试计划

现在保存的以上测试计划 jms_pub_sub.jmx。执行本测试计划使用 Run > Start选项。 option.

校验输出

输出发布者JMS Publish Sub Test OutputJMS Publish Sub Test Output订阅服务器输出JMS Publish Sub Test OutputJMS Publish Sub Test OutputJMS Publish Sub Test Output

返回到管理控制台 ActiveMQ,从这个我们可以看到消息状态下的主题。

JMS Publish Sub Admin Console