JMeter简介以及HTTP协议使用测试
01 JMeter简介
1.JMeter简介
官网
![在这里插入图片描述](https://img-blog.csdnimg.cn/ceefbe4fd7364fbdbadd9b5e0c8b8566.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
2.JMeter的组成
- 取样器:进行脚本逻辑控制。
- 线程组:场景设置。
- 监视器:监控脚本运行,取得性能指标。
![在这里插入图片描述](https://img-blog.csdnimg.cn/f1d4eb7a08b245ce82eb8797f0f5aaa6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_14,color_FFFFFF,t_70,g_se,x_16#pic_center)
3.JMeter操作
(1)启动
![在这里插入图片描述](https://img-blog.csdnimg.cn/e54fc8c978ad49399efd3a8564c25f4c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_17,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/4b65bd74226a43a4a65bd946c6c7cc48.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/8117625f2d9442da9228935a38ade365.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/8d1485b77c474291a899bc8217003b88.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_18,color_FFFFFF,t_70,g_se,x_16#pic_center)
02 JMeter脚本的两种录制方式
1.脚本录制的流程与思路
![在这里插入图片描述](https://img-blog.csdnimg.cn/609542f8c91a4e64bbe7c091ff5d4953.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_19,color_FFFFFF,t_70,g_se,x_16#pic_center)
2.Badbody介绍与演示
(1)Badboy简介
![在这里插入图片描述](https://img-blog.csdnimg.cn/c14f02aa12cf4250ac63cfaf41bd4e12.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_9,color_FFFFFF,t_70,g_se,x_16#pic_center)
官网地址
![在这里插入图片描述](https://img-blog.csdnimg.cn/d83732e7db7045e08d2eebc62a137835.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/76a52fa1e4cd4903895ab9e5c33fd4c4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
(2)使用badboy进行jmeter脚本录制
![在这里插入图片描述](https://img-blog.csdnimg.cn/b6d799d4b89e4c24a68b4d3cc822f16f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
3.Jmeter代理录制
![在这里插入图片描述](https://img-blog.csdnimg.cn/c55032a98dd2455ba6d4fac4fdaf3370.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_14,color_FFFFFF,t_70,g_se,x_16#pic_center)
03 JMeter之HTTP协议测试
1.JMeter的get请求介绍以及使用
(1)提供spring boot的get请求
![在这里插入图片描述](https://img-blog.csdnimg.cn/a61c688688c44ca7bf5b917b1c07e7bc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/fb05989a186b48898534d907cb227a1a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/553bfc154a1c4c56848ac3f7d39e7604.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/7571f8a63a514714bd50e0f540f131c5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
文件结构
![在这里插入图片描述](https://img-blog.csdnimg.cn/207bee1a3c4245edb3fcc8d5eb8d852d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_9,color_FFFFFF,t_70,g_se,x_16#pic_center)
HTTPController类信息
package com.lcz.spring_demo9.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HttpController {
@GetMapping(value = "/getDemo/{username}")
public Object getDemo(@PathVariable String username){
String msg = "你输入的为:"+ username;
return msg;
}
}
测试结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/16eb733df1774901919ba09ffe5bfbd9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_16,color_FFFFFF,t_70,g_se,x_16#pic_center)
(2)JMeter做测试
![在这里插入图片描述](https://img-blog.csdnimg.cn/7c17456bc1414068a47c333db973c7f5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_13,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2a02eef509424952ad8ee9226ae4a57f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_14,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/9f5a1eff8fbd43f6a785b4b0c7930954.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
展示效果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/15860a211b9547aeaba41a8233dcc22c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
(3)Jmeter的函数对话框实现参数化列表
第一步:
打开Jmeter,Tools > 函数助手对话框 下拉框选择_CSVRead ,如下图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/c6d02e2b92b5404c994cfc6e0c2cf5d2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_13,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/1ab11ef477e1440bb5a0af85e4269916.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_17,color_FFFFFF,t_70,g_se,x_16#pic_center)
第二步:
准备一份测试数据,保存在本地盘符里,数据如下图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/52e9f9eee9104365ad52a433a4708664.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_11,color_FFFFFF,t_70,g_se,x_16#pic_center)
第三步,填数据
(1)用于获取值的CSV文件|*别名 填文件路径及文件名 (2)CSV文件列号|netxt|*alias 填要获取的数据列,0为第一项。 填完后点击生成按钮,并把生成的数据拷贝下来,如下图所示。
![在这里插入图片描述](https://img-blog.csdnimg.cn/11951191722c4ba7821d53283eeb170e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_17,color_FFFFFF,t_70,g_se,x_16#pic_center)
第四步,
将拷贝的字符粘贴在Jmeter里,如下图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/01c6003475294379b4d2b3921022fe5b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
展示结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/830dd5b315604bc7bcbc295a89a862a9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
模拟多人请求
在JMeter 中 线程组来设定参数即可。
![在这里插入图片描述](https://img-blog.csdnimg.cn/590263e216854aeb86f52f6aed7a4129.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
测试结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/8ca15a08b1514b4d8f9b57f68bbea773.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/1c62a02a07d646a59c80bb43e3dc1cb3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
2.JMeter的post请求介绍以及使用
(1)提供 springboot的post请求
@PostMapping(value = "/postDemo")
public Object postDemo(@RequestParam String userName){
String msg = userName + "登录了";
return msg;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/8ef6c3b593e54aba987815764c23f873.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
(2)JMeter做测试
在JMeter 中右键新建一个HTTP请求
![在这里插入图片描述](https://img-blog.csdnimg.cn/e163e07cf1cf43f289e05ede036b9879.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
查看结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/25c3959c5f0b434a92169d1f22e919aa.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
(3)json格式的 post请求实战
json格式发送数据,是以User格式或者之类的数据来发送。下面举例来说明:
数据请求
@PostMapping(value = "jsonDemo")
public Object jsonDemo(@RequestBody User user){
User u = new User();
u.setName(user.getName());
u.setClazz(user.getClazz());
return u;
}
postman测试
![在这里插入图片描述](https://img-blog.csdnimg.cn/156755e309144f618e9eacf7e25a39d8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
注意:
Content-Type:application/json
(4)Jmeter实现请求
在jemter 中新建一个http请求。发起请求模拟。
![在这里插入图片描述](https://img-blog.csdnimg.cn/35e982190bb845858194bbed884ca491.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
发起请求模拟之后会出现以下错误。主要原因是:content-type未设置。
![在这里插入图片描述](https://img-blog.csdnimg.cn/43152203248744d5b88eba3a6fc7419b.png#pic_center)
为解决该问题需要。
![在这里插入图片描述](https://img-blog.csdnimg.cn/32acf9fb48ff4b9bb6829cf5ea8153f6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_14,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/e5e4cb49a2094a4aa315e9256cf923f8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
重新模拟请求
![在这里插入图片描述](https://img-blog.csdnimg.cn/d79c7e7673714fb28a79ef8329f3ed9a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbWluZF9wcm9ncmFtbW9ua2V5,size_15,color_FFFFFF,t_70,g_se,x_16#pic_center)
|