场景:测试java程序模块的性能(就是那种用JAVA语言编写且可以独立打包成JAR包的功能模块的性能测试,一般的测试工具是无法提供对这样的对象的性能测试的支持的,当然通过JMETER来测试,也是需要进行一定的辅助开发才行。);
1、右击测试计划-> 添加 -> Threads(Users) -> 线程组
2、设置线程属性,用于并发请求。
介绍:
线程数: 10
Ramp-Up Period(in seconds) : 2
循环次数: 3
含义:2秒种(内)启动10个线程,每个线程循环调用3次java请求 。(所以总体来说就是要执行30次请求。)
3、线程组右击 -> 添加 -> Sampler -> Java请求
以上是设置JMETER性能测试场景,而在这之前需要建立辅助测试类:
建立测试辅助类也有几个要点需要注意;
A.在JAVA工程中引入需要使用到的JMETER所属的核心的类包文件,ApacheJMeter_java.jar ,ApacheJMeter_core.jar ,这2个jar包在 %JMETER_HOME%/lib/ext/下,即在JMETER的资源目录的/lib/ext/可以找到;(原因:因为你将要写的辅助测试类将会使用到里面的一些方法,诸如SampleResult ,AbstractJavaSamplerClient,JavaSamplerContext等);
B.将写好并编辑测试无误的测试辅助类的工程打包成JAR包,然后再放回JMETER的资源目录的/lib/ext/下;(原因:这样,重新启动JMETER后,JMETER工具将会自动识别你刚加入的JAVA请求测试对象。在其“JAVA请求”—>”类名称”下拉选择框中就会出现你编写的测试辅助类,如果没有出现,请仔细检查以上的操作步骤;要不就无法接下来的测试工作。)
以下贴出我写的测试辅助类:(并不是所有的都适用,但可以作为概要,提示参考)
package com.test.jmeter;
import java.util.Random;
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;
public class jmeterForCommunication extends AbstractJavaSamplerClient{
private static long start = 0;
private static long end = 0;
/**
* 重写构造函数
*/
@Override
public void setupTest(JavaSamplerContext context) {
// TODO Auto-generated method stub
super.setupTest(context);
start = System.currentTimeMillis();
}
/**
* 重写析构函数
*/
@Override
public void teardownTest(JavaSamplerContext context) {
// TODO Auto-generated method stub
super.teardownTest(context);
end = System.currentTimeMillis();
// 总体耗时
System.err.println("cost time:" + (end - start) / 1000 + "秒。");
}
/**
* 用户后续调用计算产生随机数
*/
public static double computer(double a,double b){
return a * b / a * a;
}
/**
* JMeter界面中可手工输入参数,代码里面通过此方法获取
*/
public Arguments getDefaultParameters() {
Arguments args = new Arguments();
return args;
}
/**
* 重写JMETER的runTest启动方法,测试用例的入口,相当于JAVA程序的main方法;
*/
@Override
public SampleResult runTest(JavaSamplerContext arg0) {
// TODO Auto-generated method stub
SampleResult sr = new SampleResult();
sr.sampleStart();
Random random = new Random();
for(int i=0; i<10000; i++){
computer(random.nextDouble(),random.nextDouble());
}
sr.setSuccessful(true);
sr.sampleEnd();
return sr;
}
/**
public static void main(String []args){
}
*/
PS:另外通过测试类调用要测试的JAR包的功能的代码,我这里就不贴出来了,一是因为每个人的会不一样,二是也涉及到公司的信息也不能外传;
4、线程组右击 -> 添加 -> 监听器 -> 用表格察看结果:(有很多种监听器,但也不是所有的都要打开使用到,一般打开2到3个足以,因为开多了也会一定程度上影响JMETER的测试收集数据的准确性。)
备注提示:
有一些快捷键操作可以方便快速使用,比如:
Ctrl + R,开始运行,
Ctrl + E,清除历史结果
PS:期间也参考了一些其他很多资料,再次对参考的N人贴表示感谢~!祝合家幸福安康~!