Apache Jmeter是一款轻量化的、优秀的软件性能测试工具,在软件开发测试中经常会用到,这里简单介绍一下它的使用方法。
1、接口准备
随便写一个用来测试的接口,打印当前请求线程的名称,并统计各线程数。
@RestController
@RequestMapping("/jmeter")
public class TestJmeterController {
private static Map<String,Integer> MAP = new HashMap<>();
@RequestMapping("/test1")
public void test1(){
System.out.println("线程统计结果:");
Set<String> set = MAP.keySet();
for(Iterator<String> it = set.iterator(); it.hasNext();) {
String threadName = it.next();
Integer threadCount = MAP.get(threadName);
System.out.println(threadName+":"+threadCount);
}
}
@RequestMapping("/test2")
public String test2(){
String threadName = Thread.currentThread().getName();//线程名称
System.out.println(threadName);
Integer count = MAP.get(threadName);
if (count == null){
MAP.put(threadName,1);
}else {
MAP.put(threadName,count+1);
}
return "SUCCESS";
}
}
2、Jmeter准备
Jmeter下载地址:http://jmeter.apache.org/download_jmeter.cgi
下载后解压如下:
准备好JDK环境,最新jmeter要求java版本在1.6及以上:
双击Jmeter解压目录/bin/jmeter.bat,会弹出两个窗口,注意黑色命令窗口不要关闭:
3、开始测试
3.1、创建线程组
TestPlan上右键 > Add > Threads(Users) > Thread Group
三个主要参数:
Number of Threads(Users):线程数(标识虚拟用户个数)
Ramp-Up Period(in Seconds):全部线程执行完所用时间
Loop Count:循环次数
在测试之前我们要确定好这三个参数,比如我依次填写20;10;5,即有20个虚拟用户,每次要10秒全部执行完,循环次数为5次。
3.2、创建HTTP请求
Thread Group上右键 > Add > Sampler > HTTP Request
设置测试接口地址:
3.3、创建监听器
为了便于观察执行结果,需要添加一个监听器。这里添加【用表格查看结果】监听器。
HTTP Request上右键 > Add > Listener > View Results in Table
3.4、运行测试
print:
http-nio-8080-exec-2
http-nio-8080-exec-1
http-nio-8080-exec-4
http-nio-8080-exec-5
http-nio-8080-exec-7
http-nio-8080-exec-8
http-nio-8080-exec-10
http-nio-8080-exec-2
http-nio-8080-exec-4
http-nio-8080-exec-6
http-nio-8080-exec-9
……
调用http://localhost:8080/jmeter/test1
接口打印统计结果:
线程统计结果:
http-nio-8080-exec-2:12
http-nio-8080-exec-1:8
http-nio-8080-exec-4:11
http-nio-8080-exec-3:8
http-nio-8080-exec-10:9
http-nio-8080-exec-9:9
http-nio-8080-exec-6:10
http-nio-8080-exec-5:11
http-nio-8080-exec-8:13
http-nio-8080-exec-7:9