|
目的:对Java程序进行测试
目录
一、核心步骤
二、实例
三、JMeter Java Sampler介绍
四、自带Java Request Sampler
一、核心步骤
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、查看结果树,进行测试;
二、实例
1.在eclipse里面新建一个工程:JavaForJMeter
2.把{Jmeter_home}\lib目录下的所有jar添加进此工程的Build Path;
3.添加类Hello,代码如下:
复制代码
- package com.test.webservice;
- public class Hello {
- public String sayHello()
- {
- return "Hello";
- }
- public String sayHelloToPerson(String s)
- {
- if(s == null || s.equals(""))
- s = "nobody";
- return (new StringBuilder()).append("Hello ").append(s).toString();
- }
- public int sum(int a,int b)
- {
- return a+b;
- }
- }
复制代码
复制代码
4.添加类perftest,并继承AbstractJavaSamplerClient,并添加代码如下:
注意:System.out等的输出会显示在启动JMeter时的命令窗口内,但过多的输出会影响性能的准确性。
复制代码
- package com.test.webservice;
- import org.apache.jmeter.config.Arguments;
- import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
- import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
- import org.apache.jmeter.samplers.SampleResult;
- import com.test.webservice.Hello;
- public class perftest extends AbstractJavaSamplerClient {
- private String a;
- private String b;
- /** Holds the result data (shown as Response Data in the Tree display). */
- private String resultData;
- // 这个方法是用来自定义java方法入参的。
- // params.addArgument("num1","");表示入参名字叫num1,默认值为空。
- //设置可用参数及的默认值;
- public Arguments getDefaultParameters() {
- Arguments params = new Arguments();
- params.addArgument("num1", "");
- params.addArgument("num2", "");
- return params;
- }
- //每个线程测试前执行一次,做一些初始化工作;
- public void setupTest(JavaSamplerContext arg0) {
- }
- //开始测试,从arg0参数可以获得参数值;
- public SampleResult runTest(JavaSamplerContext arg0) {
- a = arg0.getParameter("num1");
- b = arg0.getParameter("num2");
- SampleResult sr = new SampleResult();
- sr.setSampleLabel( "Java请求哦");
- try {
- sr.sampleStart();// jmeter 开始统计响应时间标记
- Hello test = new Hello();
- // 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。
- resultData = String.valueOf(test.sum(Integer.parseInt(a), Integer
- .parseInt(b)));
- if (resultData != null && resultData.length() > 0) {
- sr.setResponseData("结果是:"+resultData, null);
- sr.setDataType(SampleResult.TEXT);
- }
- // System.out.println(resultData);
- sr.setSuccessful(true);
- } catch (Throwable e) {
- sr.setSuccessful(false);
- e.printStackTrace();
- } finally {
- sr.sampleEnd();// jmeter 结束统计响应时间标记
- }
- return sr;
- }
- //测试结束时调用;
- public void teardownTest(JavaSamplerContext arg0) {
- // System.out.println(end);
- // System.out.println("The cost is"+(end-start)/1000);
- }
-
- // main只是为了调试用,最后打jar包的时候注释掉。
- /*
- public static void main(String[] args)
- { // TODO Auto-generated method stub
- Arguments params = new Arguments();
- params.addArgument("num1", "1");//设置参数,并赋予默认值1
- params.addArgument("num2", "2");//设置参数,并赋予默认值2
- JavaSamplerContext arg0 = new JavaSamplerContext(params);
- perftestbbb test = new perftestbbb();
- test.setupTest(arg0);
- test.runTest(arg0);
- test.teardownTest(arg0);
- }
- */
- }
复制代码
复制代码
5.Export为Runnable Jar File:hello.jar
6.将此hello.jar包放入JMETER_HOME\lib\ext目录;
7.打开JMeter,添加线程组,添加Java请求,查看结果树。
三、JMeter Java Sampler介绍
- Arguments
- getDefaultParameters() 用于获取界面的参数
- SampleResult
- runTest(JavaSamplerContext context) 类似于LR的Action,result.sampleStart()一个事务开始,result.sampleEnd()一个事务 结束
- void
- setupTest(JavaSamplerContext context) 初始化方法,类似于LR的init和Junit中的setUp()
- void
- teardownTest(JavaSamplerContext context) 类似于LR的end和Junit中的tearDown()
复制代码
执行的先后顺序为:
getDefaultParameters() --> setupTest(JavaSamplerContext context) --> runTest(JavaSamplerContext context) --> teardownTest(JavaSamplerContext context)
常用的方法:
①、addArgument("name", "value") 定义参数
②、sampleStart() 定义事务的开始,类似于LR的lr_start_transaction,和LR一样事务间不要放无关代码
③、sampleEnd() 定义事务的结束,类似于LR的lr_end_transaction
④、setSuccessful(true、false) 设置运行结果的成功或失败,Jmeter统计成功失败的次数,在聚合报告中能够体现。
四、自带Java Request Sampler
JMeter默认实现了两个Java Request Sampler:SleepTest Sampler和JavaTest Sampler。
JavaTest Sampler不向服务器发送数据请求,一般被用作调试目的使用。
至此,这已讲解完了。
|
|