一、下载
可以自行到官网找到下载链接或者使用下面的链接进行下载:
http://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-5.2.1.zip
AI写代码
下载后直接解压,目录结构如下:
bin:可执行脚本文件
docs:JMeter提供的api的文档
extras:额外的文件
lib:JMeter本身所依赖的jar包
licenses:JMeter依赖的jar包的license
printable_docs:JMeter的介绍和使用手册
JMeter既提供了GUI界面方便用户使用也提供了命令行的方式让用户操作,我们先在windows下使用JMeter。
二、准备工作
2.1、运行环境
JMeter5需要至少JDK8,如果你的机器还没有安装JDK,请先安装
2.2、创建接口
这里我们使用springboot来快速构建一个接口,主要代码如下:
@GetMapping(value = "/test")
public String performanceTest(@RequestParam(value="name", defaultValue="") String name) {
log.info("进入测试,参数name的值为:{}", name);
if (StringUtils.isEmpty(name)) {
return "name cannot be null";
} else {
return RandomUtil.generateRandomString(16);
}
}
AI写代码
其中generateRandomString是一个生成指定长度随机字符的方法。
在application.properties中简单地指定一下log文件:
logging.file=spring.log
AI写代码
然后打包部署到linux下,启动命令如下:
java -jar stress-testing-0.0.1-SNAPSHOT.jar
AI写代码
然后用curl命令分别访问有参数和无参数的接口,也可以在浏览器访问
三、使用JMeter测试HTTP
3.1、创建测试计划
我们双击打开bin/jmeter.bat,等待JMeter的GUI程序启动,成功后如下。初次启动默认语言是英语,你可以在菜单栏的Options->Choose Language->Chinese(Simplified)切换成简体中文
右键点击TestPlan->添加->线程(用户)->线程组,完成后选择Thread Group,在这个线程组上点击右键,添加->取样器->HTTP请求;再选择HTTP请求,在这个HTTP请求上点击右键,添加->监听器->察看结果树;再次选择HTTP请求,在这个HTTP请求上点击右键,添加->监听器->聚合报告。完成后如图所示
下面来解释一下这些概念:
TestPlan:测试计划,相当于一个工程,需要测试什么,怎么测就是定义在一个测试计划中
Thread Group:线程组,相当于模拟的请求数。一个线程相当于一个用户请求
察看结果树:监听发送请求时各个请求的状态
聚合报告:把一次测试的数据汇总
3.2、配置参数
测试计划
选择左侧的Test Plan,右侧的名称就是测试计划的名字,注释就相当于代码中的注释,没什么好说的。下面有个独立运行每个线程组,在一个测试计划中可以创建多个线程组(目前我们只有一个),比如我们不同的接口的并发量是不一样的,这时可以根据需要创建多个线程组,分开测试。好了我们先默认不作修改。
Thread Group
选择左侧的Thread Group,线程组也有名称和注释,比如我们可以填写一些并发级别之类的信息,反正就是给人看的。下面的线程属性就是核心配置了,前面也提到,一个线程相当于一个用户请求。比如线程数填10,Ramp-up时间填5,循环次数填1,就表示在5秒内发送10次请求,执行一次。
HTTP请求
选择左侧的HTTP请求,这里我们关注Web服务器和HTTP请求这两个属性。协议就是请求的协议,默认是http,ip填服务器地址,也可以填域名,端口号是8080;因为刚才写的test接口只支持GET请求,方法选择GET,路径为url的请求路径,GET请求的参数可以直接带在路径上,也可以写到下面的参数那里,通过点击“添加”按钮来添加请求参数。
另外值得注意的是,左侧的节点很多时候是可以重复的,但是作用域不相同。比如当前察看结果树和聚合报告都是在HTTP请求下创建的,那么这个察看结果树和聚合报告监听的就是这个HTTP的结果。一个线程组下可以有多个HTTP请求,比如我们有一个H5页面要测试,打开这个页面可能会同时请求多个接口,在这种情况下就需要创建多个HTTP请求了。当察看结果树和聚合报告创建在Thread Group下,那么就是监听这个线程组下所有HTTP请求的结果。
3.3、测试
点击界面工具栏的绿色三角按钮开始压测,这时可以看到spring.log文件会不断输出信息
等待压测结束后,我们可以选择左侧的察看结果树,就可以看到本轮测试的请求情况
选择其中的请求可以在右边看到这个请求的详细信息,包括时间,请求数据长度,请求地址等等。
选择聚合报告可以看到本轮测试的数据报告
解释一下这份报告:
样本:请求的次数,计算公式是线程数*循环次数,如果线程组配置勾选了永远,那么就是你停止测试时实际发送的请求数
平均值:响应时间的平均用时,单位是毫秒。比如这里的平均响应时间是38毫秒
中位数:响应时间的中位数,单位是毫秒。
90%百分位:90%的响应时间小于该数值,单位是毫秒。这里有90%的响应时间小于22毫秒
95%百分位:含义和90%类似
99%百分位:含义和90%类似
最小值:本轮测试最小响应时间,单位是毫秒。
最大值:本轮测试最大响应时间,单位是毫秒。
异常%:本轮测试出现异常的请求比例。
吞吐量:可以理解为QPS,即是我们测试的接口处理请求的能力。比如这里是平均每秒可以处理2.2次请求
接收KB/Sec:响应数据的接收速率
发送KB/Sec:请求数据的发送速率
到此为止,你是不是觉得刚才我们写的接口很完美,服务也运行得毫无破绽?好了,我们选择界面左侧的Thread Group(线程组),然后把线程数改为5000,其它不变,模拟在5秒内有5000个用户来访问我们的接口。然后先点击界面上方的一个齿轮加两把扫帚的按钮来把结果树和聚合报告清除,然后再点击绿色的启动按钮,测试结果如下
————————————————
版权声明:本文为优快云博主「Mestyle_gil」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/csdn_te_Blog_007/article/details/151580459
3918

被折叠的 条评论
为什么被折叠?



