JMeter入门(4):Java Request实例

目的:对Java程序进行测试

  一、核心步骤

  1.创建一个Java工程;

  2.将JMeter的lib目录下的jar文件添加进此工程的Build Path;

  3.创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写:


public Arguments getDefaultParameters():设置可用参数及的默认值;

public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作

public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;

public void teardownTest(JavaSamplerContext arg0):测试结束时调用;

4.Export为Runnable Jar File;

  5.将此jar包放入JMETER_HOME\lib\ext目录;

  6.以管理员身份打开JMeter;

  7.创建线程组、Java Request、结果树,进行测试;

  二、实例

  利用JMeter对服务进行性能测试,服务为:将输入的两个参数通过IO存入文件;

  1、编写Java代码

  服务:


package test;

import java.io.File;

import java.io.PrintWriter;

public class OutputService {

public static void output(String filename,int a, int b) throws Exception {

PrintWriter out = new PrintWriter(new File(filename));

out.write(a+":"+b);

out.close();

}

}

  测试类:


package test;

import org.apache.jmeter.config.Arguments;

import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;

import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;

import org.apache.jmeter.samplers.SampleResult;

public class PerformenceTest implements JavaSamplerClient {

private SampleResult results;

private String a;

private String b;

private String filename;

// 设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中

public Arguments getDefaultParameters() {

Arguments params = new Arguments();

params.addArgument("filename", "0");//设置参数,并赋予默认值0

params.addArgument("a", "0");//设置参数,并赋予默认值0

params.addArgument("b", "0");//设置参数,并赋予默认值0

return params;

}

// 初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行

public void setupTest(JavaSamplerContext arg0) {

results = new SampleResult();

}

// 测试执行的循环体,根据线程数和循环次数的不同可执行多次

@Override

public SampleResult runTest(JavaSamplerContext arg0) {

b = arg0.getParameter("b"); // 获取在Jmeter中设置的参数值

a = arg0.getParameter("a"); // 获取在Jmeter中设置的参数值

filename = arg0.getParameter("filename"); // 获取在Jmeter中设置的参数值

results.sampleStart();// jmeter 开始统计响应时间标记

try {

OutputService test = new OutputService();

test.output(filename,Integer.parseInt(a), Integer.parseInt(b));

results.setSuccessful(true);

// 被测对象调用

} catch (Throwable e) {

results.setSuccessful(false);

e.printStackTrace();

} finally {

results.sampleEnd();// jmeter 结束统计响应时间标记

}

return results;

}

// 结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行

public void teardownTest(JavaSamplerContext arg0) {

}

public static void main(String[] args) {

// TODO Auto-generated method stub

Arguments params = new Arguments();

params.addArgument("a", "0");//设置参数,并赋予默认值0

params.addArgument("b", "0");//设置参数,并赋予默认值0

JavaSamplerContext arg0 = new JavaSamplerContext(params);

PerformenceTest test = new PerformenceTest();

test.setupTest(arg0);

test.runTest(arg0);

test.teardownTest(arg0);

}

}

Export 为 Runnable Jar File;

2、设置JMeter

  以管理员身份打开JMeter,并创建Java Request后,结构如下图所示:

  在Java请求中发现了自己新建的测试类:

  我们在JMeter中发现参数有三个:

  我们在响应的数值中填入:

  大家一定很奇怪,怎么会有一些看不懂的东西,这是JMeter提供的函数,我们可以在

  因为我们要做的是性能测试,因此我们需要开多个线程并发测试,因此随机数很重要;

  常用的函数为:

  (1)_Random生成随机整数;

  (2)_RandomString生成随机字符串;

  在线程组中设置并发线程数为10000,保存后即可运行;

  图形结果如下所示:

聚合报告:

  表格查看结果:

  结果成功,成功生成了接近10000个文件:

  3.期间遇到的问题

  3.1 Export为Jar File导致Java Request的类名称无法找到;

  3.2 JMeter java.lang.OutOfMemoryError: PermGen space问题:

  在JMeter.bat 中修改:

  set HEAP=-Xms512m -Xmx1024m

  set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m

  set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%

  set TENURING=-XX:MaxTenuringThreshold=2

  set RMIGC=-Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000

  set PERM=-XX:PermSize=256m -XX:MaxPermSize=512m

  3.3 JMeter需要以管理员身份打开,否则会出现:

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-21 07:59:22

JMeter入门(4):Java Request实例的相关文章

asp入门教程:ASP Request 简单介绍

asp入门教程:ASP Request 简单介绍,在ASP Request对象是用来获取信息的用户.它有两种方法form 与querystring的, 下面我们来看看request.from 这里是专门用于表单如. <form name=a action=? > <input name=b value='this is request.form' /> </form> asp代码如下. <% response.write request.from("b&

WTP1.0开发WebService之Java Class实例

在创建web service 之前,确定你已经安装Tomcat.(本文使用Tomcat5.0) 1.创建一个动态web工程(dynamic web project)取名为ConverterProj.配置全部默认. 2.在package wtp下建立java文件Converter.java Converter.java package wtp; public class Converter { public float celsiusToFarenheit(float celsius){ retu

Zend Framework开发入门经典教程_php实例

本文讲述了Zend Framework开发入门相关知识点.分享给大家供大家参考,具体如下: Zend Framework发布了!虽然仍处于开发初期,这个教程仍突出讲解目前几个最好的功能,并指导你完成一个简单程序的构建. Zend最早在社区里发布了ZF.基于同样的想法,这个教程写来用于展示ZF现有的功能.由于这个教程是在线发布,我将在ZF变化时对其进行更新,以便尽可能有效. 要求 Zend Framework要求PHP5.为了更好利用本教程的代码,你还需要Apache网页服务器.因为示范程序(一个

java 框架 spring-请问Spring是怎么个意思?我写了个java小实例 还是不太明白~(新手菜鸟)

问题描述 请问Spring是怎么个意思?我写了个java小实例 还是不太明白~(新手菜鸟) port org.springframework.*; import org.springframework.context.support.FileSystemXmlApplicationContext; 难道.* 不 包括后面那一串吗?为啥注释了长的import 报错FileSystemXmlApplicationContext cannot be resolved to a type 解决方案 im

php入门教程:php rtrim()实例教程

php入门教程:php rtrim()实例教程 定义和用法 该rtrim ( )函数将删除空格或其他预先确定的性质从右侧的一个字符串. 语法 rtrim(string,charlist) 参数说明字符串必需.指定的字符串检查charlist可选.指定的字符删除字符串.如果省略,所有的下列字符被删除: " 0 " -空" T "型-标签" ñ " -新的生产线" x0B " -垂直标签" r "开始-回车&q

java类实例定义为全局变量

问题描述 怎么把java类实例定义为全局变量比如classtext{}texta=newtext();怎么把a定义成全局变量 解决方案 解决方案二:publicclasstext{publicvoid方法(){}}classtext1{texta=newtext();publicvoid方法1(){a.方法();}publicvoid方法2(){a.方法();}} 解决方案三:publicstatictexta;a=newtext();设置成静态的解决方案四:3楼不对,我已用其他方法,谢谢大家解

Java 多线程实例讲解(一)_java

Java多线程(一) 多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的. 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点.掌握了上图中的各知识点,Java中的多线程也就基本上掌握了.主要包括: Java线程具有五中基本状态 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread(); 就绪状态(Runnable):当调用线程对象的

Java单例模式实例简述_java

本文实例讲述了Java的单例模式,是Java程序设计中非常重要的概念.分享给大家供大家参考.具体分析如下: 所谓单子模式就是在整个应用过程中只向外界提供唯一的一份实例,也就是说在应用时只有一个实例,这样也就不用反反复复的创建实例了.那么根据他的要求,看下面一个最简单的单例模式的代码: public class Singleton { private static Singleton single = new Singleton(); private Singleton(){ } public s

flash入门教程:Flash Sound实例教程

flash入门教程:Flash Sound实例教程 第1步 选择文件> "导入导入一个声音文件.找到声音文件并点击打开.的声音文件将被保存在图书馆. 第2步 单击第一帧的"图层1 "的时间表.选择窗口" >小组"声从顶部的菜单中. 第3步 在弹出窗口(声音)选择你的声音进口的声场.选择流中的同步字段.关闭弹出窗口. 第4步 到50帧的时间.请右击并选择插入帧. 第5步 选择控制" >测试影片从顶部的菜单中测试您的Flash影片.