Java请求:就是用来对java项目的类进行压测
例子:将输入的两个参数通过IO存入文件
1、创建Java工程,工程目录如下
2、将Jmeter-lib下面的所有jar包导入java工程,
3、创建一个测试类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写:
- public Arguments getDefaultParameters():设置可用参数及的默认值;
- public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;
- public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;
- public void teardownTest(JavaSamplerContext arg0):测试结束时调用;
具体代码:
输入参数类:
1 package com.test; 2 3 import java.io.File; 4 import java.io.PrintWriter; 5 6 /** 7 * Created by Administrator on 2017/4/20. 8 */ 9 public class OutputService { 10 public static void output(String filename,int a,int b,int c) throws Exception{ 11 PrintWriter out=new PrintWriter(new File(filename)); 12 out.write(a+":"+b+":"+c); 13 out.close(); 14 } 15 }
测试类
1 package com.test; 2 3 import org.apache.jmeter.config.Arguments; 4 import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient; 5 import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; 6 import org.apache.jmeter.samplers.SampleResult; 7 8 /** 9 * Created by Administrator on 2017/4/20. 10 */ 11 public class PerformenceTest implements JavaSamplerClient { 12 private SampleResult results; 13 private String a; 14 private String b; 15 private String c; 16 private String filename; 17 18 public static void main(String[] args) { 19 // TODO Auto-generated method stub 20 Arguments params = new Arguments(); 21 params.addArgument("filename","0"); 22 params.addArgument("a", "0");//设置参数,并赋予默认值0 23 params.addArgument("b", "0");//设置参数,并赋予默认值0 24 params.addArgument("c", "0"); 25 JavaSamplerContext arg0 = new JavaSamplerContext(params); 26 PerformenceTest test = new PerformenceTest(); 27 test.setupTest(arg0); 28 test.runTest(arg0); 29 test.teardownTest(arg0); 30 } 31 // 设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中 32 public Arguments getDefaultParameters() { 33 Arguments params = new Arguments(); 34 params.addArgument("filename", "0");//设置参数,并赋予默认值0 35 params.addArgument("a", "0");//设置参数,并赋予默认值0 36 params.addArgument("b", "0");//设置参数,并赋予默认值0 37 params.addArgument("c","0"); 38 return params; 39 } 40 41 42 // 初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行 43 public void setupTest(JavaSamplerContext arg0) { 44 results = new SampleResult(); 45 } 46 47 48 // 测试执行的循环体,根据线程数和循环次数的不同可执行多次 49 @Override 50 public SampleResult runTest(JavaSamplerContext arg0) { 51 a = arg0.getParameter("a"); // 获取在Jmeter中设置的参数值 52 b = arg0.getParameter("b"); // 获取在Jmeter中设置的参数值 53 c = arg0.getParameter("c"); 54 filename = arg0.getParameter("filename"); // 获取在Jmeter中设置的参数值 55 results.sampleStart();// jmeter 开始统计响应时间标记 56 try { 57 OutputService test = new OutputService(); 58 test.output(filename,Integer.parseInt(a), Integer.parseInt(b),Integer.parseInt(c)); 59 results.setSuccessful(true); 60 // 被测对象调用 61 } catch (Throwable e) { 62 results.setSuccessful(false); 63 e.printStackTrace(); 64 } finally { 65 results.sampleEnd();// jmeter 结束统计响应时间标记 66 } 67 return results; 68 } 69 70 71 // 结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行 72 public void teardownTest(JavaSamplerContext arg0) { 73 } 74 75 }
4、把该工程以jar包形式导出,选择File—Project Structure,如图所示,配置完成,点击应用:
然后,选择Build,打开刚才配置的jar包路径,就看到导出的jar包
5、然后把导出的jar包复制到Jmeter的libext目录下,重启Jmeter
6、打开测试计划,添加线程组--Java请求,选择测试类,会自动加载出类中的参数,如图
给参数赋值
执行压测,并发数设为1000,运行结果如图所示
聚合报告
表格察看结果
图形结果
生成的文件