logo资料库

JMeter进行性能测试实例Java请求+参数化.doc

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
JMeter进行性能测试(Java请求)测试实例说明
1.建立测试计划
2.添加线程组
1.添加线程组
2.线程属性
3.添加Java请求
4.添加监听器
5.运行脚本
6.聚合报告分析
7.Jmeter之自定义Java请求编写
8.Jmeter 之参数化
JMeter 进行性能测试(Java 请求)测试实例说明 1.建立测试计划 启动 jmeter 后,jmeter 会自动生成一个空的测试计划,用户可以基于该测试计划 建立自己的测试计划。如图 1: 图 1 2.添加线程组 1.添加线程组 一个性能测试请求负载是基于一个线程组完成的。一个测试计划必须有一个线程组。 测试计划(右键)-->添加-->Threads(Users)--->线程组)中选择线程组即可。
图 2 图 3 2.线程属性 1.线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这 里也就是设置多少个线程数。 2.准备时长: 设置的虚拟用户数需要多长时间全部启动。如果线程数为5 ,准备时长 为10 ,那么需要10秒钟启动5个线程。也就是每2秒钟启动1个线程。 3.循环次数:每个线程发送请求的次数。如果线程数为100 ,循环次数为10 ,那么每个 线程发送10次请求。总请求数为100*10=1000 。如果勾选了“永远”,那么所有线程会 一直发送请求。
3.添加 Java 请求 线程组(右键)--->添加--->Sampler--->Java 请求)选择 Java 请求。对于 jmeter 来 说,取样器(Sampler)是与服务器进行交互的单元。一个取样器通常进行三部分的工 作:1.向服务器发送请求 2.记录服务器的响应数据 3.记录相应时间信息 图 4 图 5 Java 请求的属性相对较少 需要关注的就二个属 1. 类名称:通过点击三角下拉选择所需要的测试的 java 类 这个类需要继承 Jmeter 的 AbstractJavaSamplerClient。 自定义测试的 java 类编写详见第 7 小节 Jmeter 之自定义 Java 请求
2. 同请求参数:jmeter 提供了一个简单的对参数化的方法。用户可以将请求中所有参 数设置在本表中,表中的每一行是一个参数值对(对应请求中的 名称=值),图 5 的参数表中有一个值是${deviceId} 这个涉及到 参数化详见第 8 小节 Jmeter 之参 数化 4.添加监听器 脚本的主要部分设置完成后,需要通过某种方式获得性能测试中的测试结果,这就需 要添加监听器。在这里只介绍添加聚合报告,其它的添加都是一样。聚合报告分析请看 第 6 小节聚合报告分析 线程组(右键)--->添加--->监听器--->聚合报告 中选择聚合报告。 图 6 5.运行脚本 点击工具栏上的运行按钮,或者点击菜单栏“ 运行--->启动 ”或者点击工具栏的启动按钮 或 者使用快捷键 ctrl+r 来运行程序。
图 7 6.聚合报告分析 查看聚合报告的运行结果: 图 8 图 9
7.Jmeter 之自定义 Java 请求编写 1.新建测试项目 创建一个 java 工程 ,在这里我用的工具是 eclipse 图 10 2.引入 JMeter 的 jar 包 从 Jmeter 的安装目录 lib\ext 中拷贝两个文件 ApacheJMeter_core.jar ApacheJMeter_java.jar 在我编写的例子中还有用的其它的 jar 如 jorphan.jar 等直接从从 Jmeter 的安装目录 lib 复制过来. 图 11 3.写测试类 测试类称需要 继承 AbstractJavaSamplerClient 类 类方法说明: getDefaultParameters 方法:主要用于设置传入的参数
setupTest 方法:为初始化方法,用于初始化性能测试时的每个线程 runTest 方法:为性能测试时的线程运行体 teardownTest 方法:为测试结束方法,用于结束性能测试中的每个线程 在 runTest 编写调用 java 程序 1.采样开始:sampleStart(); 2.调用 java 程序 3.采样结束:sampleEnd() 4.返回结果判断:setSuccessful() 类代码如下: //包名和引入包省略。。 public class JmeterScoketTest extends AbstractJavaSamplerClient { // 测试结果 private SampleResult sr; private static String label = "socket"; /** * 为初始化方法,用于初始化性能测试时的每个线程 */ public void setupTest(JavaSamplerContext arg0) { System.out.println("setupTest"); } /** * * 主要用于设置传入的参数 */ public Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument("host", "localhost"); params.addArgument("port", "8090"); params.addArgument("deviceId","123456"); return params; } /** * 为性能测试时的线程运行体 */ @Override public SampleResult runTest(JavaSamplerContext arg0) { String host = arg0.getParameter("host"); String port = arg0.getParameter("port"); String deviceId = arg0.getParameter("deviceId"); sr = new SampleResult(); sr.setSampleLabel(label);
try { sr.sampleStart(); // 记录程序执行时间,以及执行结果 ClientHandlerTest client = new ClientHandlerTest(); client.setDeviceId(deviceId); client.MemMonClient(host,port);//这个是需要调用的操作方法 sr.setSuccessful(true); System.out.println("end"); } catch (Throwable e) { sr.setSuccessful(false); } finally { sr.sampleEnd(); } return sr; } } /** * * 结束 */ public void teardownTest(JavaSamplerContext arg0) { System.out.println("teardownTest"); } 个人经验:自定义 java 请求除继承 AbstractJavaSamplerClient 类 外不要再实现其它类否则 可能 Jmeter 在添加 Java 请求时会找不到自定义类。 4.调用自定义 java 请求 给定义 java 请求工程打包 如 DragonjmeterTestSocket.jar 把打好的包拷贝到 Jmeter 的安装目录 lib\ext 中; 个人经验:工程中引用到的包也需要拷贝到 Jmeter 的安装目录 lib 中,不然可能会报错。 我自己就碰到过报类找不到的错误! 以上这些完成后重新启动 Jmeter 就可以在第三节类名称那里找到 你所编写的自定义类。 8.Jmeter 之参数化 用 Jmeter 包含两种情况的参数,一种是在 url 中,一种是请求中需要发送的参数。 这里主要是介绍请求中需要发送的参数也就是同求参数 见上图 5 Jmeter 参数化方法很多 在这里我只介绍 CSV Data Set Config 方法,但我没有试过,有兴趣 可以自己试一下。除此之外 Jmeter 还有其它的几种参数化的方法有兴趣可以自己去了解。 1.新建 deviceId.csv 文件(.txt/.dat 类型也是可以的我没有测试过有兴趣可以测试下) 下面 是我建的设备编号的参数
分享到:
收藏