一、Jmeter简介
- Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试。
- Jmeter具备高移植性,可以实现跨平台运行。
- Jmeter可以实现分布式负载。
- Jmeter采用多线程,允许通过多个线程并发取样或通过独立的线程对不同的功能同时取样。
- Jmeter具有较高扩展性。
Windows下安装Jmeter
因为Jmeter是用java编写的,因此要想使用必须要安装JDK,JDK的安装就不做赘述了
下载成功后,解压
到解压文件夹中的bin目录下双击jmeter.bat
弹出这样的框说明运行成功了
最开始打开时是英文的,那么为了使用方便,可以将其设置成中文的
设置Jmeter语言为中文环境
1、临时设置
Jmeter菜单栏选择Options–>Choose Language–>Chinese (Simplified)
这种方法,重启软件后又变为英文环境了。
2、永久设置
进入apache-jmeter-5.2.1\bin目录,找到“jmeter.properties”文件,在文件的第37行后添加“language=zh_CN”,保存之后再打开jmeter就永久变为中文环境了。
设置完成之后重启软件, 就会变成中文的了
Jmeter简单使用
- 创建线程组
- 设置线程组
- 创建http请求
要调用的接口地址为http://127.0.0.1:8080/api/v3/userinfo/list, 请求方法为GET请求, 可以以此来对照一下对应的配置
右击并启动就能进行测试了
简单进行并发测试
简单创建一个springboot项目
创建一个Conrtroller
package come.pangting.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.atomic.AtomicInteger;
@RestController("userInfoController")
@RequestMapping( "api/v3/userinfo")
public class UserInfoController {
public static final String CTRL_PRODUCE = "application/json;charset=UTF-8, text/plain;charset=UTF-8";
private static volatile AtomicInteger atomicInteger = new AtomicInteger();
private static Integer count = 0;
@RequestMapping(value = "/list", method = RequestMethod.GET, produces = CTRL_PRODUCE)
public Object userList() {
atomicInteger.addAndGet(1);//线程安全
count++;//线程不安全
System.out.println( "正确请求数: " + atomicInteger.get() + "; 存在线程安全的请求数:" + count);
return null;
}
}
我们都知道自增的操作是线程不安全的, 而我们利用原子类AtomicInteger 和volatile关键字修饰变量atomicInteger ,从而保证线程安全.接下来我们启动Jmeter进行测试
可以看到最终的结果