一、JMeter基础知识介绍和压测实操
1、JMeter基本介绍和使用场景
1)压测不同的协议和应用
- Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
- SOAP / REST Webservices
- FTP
- Database via JDBC
- LDAP 轻量目录访问协议
- Message-oriented middleware (MOM) via JMS
- Mail - SMTP(S), POP3(S) and IMAP(S)
- TCP等等
2)使用场景及优点
- 功能测试
- 压力测试
- 分布式压力测试
- 纯java开发
- 上手容易,高性能
- 提供测试数据分析
- 各种报表数据图形展示
2、window环境快速安装JMeter5.x
强制依赖: JDK
官方下载地址: jmeter.apache.org/download_jm…
官方文档地址: jmeter.apache.org/usermanual/…
3、JMeter核心目录文件介绍
bin目录: 核心可执行文件以及核心配置文件
- jmeter.bat: windows启动文件:
- jmeter: mac或者linux启动文件:
- jmeter-server.bat:window分布式压测使用的启动文件
- jmeter.properties: 核心配置文件 extras目录: 插件拓展的包
lib目录: 核心的依赖包
- ext核心包
- junit单元测试包
4、JMeter中英文切换
方式一: 控制台修改(临时有效)
menu -> options -> choose language
方式二: 配置文件修改(永久有效)
JMeter bin目录 -> jmeter.properties
5、使用SpringBoot 2.0快速编写API测试接口
复制代码
@RestController @RequestMapping(value = "userController") public class UserController { @GetMapping(value = "getUserList") public List<String> getUserList() { return Arrays.asList("tom","marry","jack"); } @PostMapping(value = "login") public Map<String,Object> login(String name,String pwd){ Map<String,Object> map = new HashMap<>(); map.put("name",name); if ("123".equals(pwd)){ map.put("status",0); }else{ map.put("status",-1); } return map; } }
6、创建Jmeter测试计划,快速压测接口
1)创建一个setup线程组
2)设置setup线程组的名称以及请求线程数、请求时间、请求循环次数
3)创建一个http请求
4)编写http请求的url
5)添加察看结果树
6)设置结果树名称并运行该线程组、查看结果树
二、Jmeter核心组件介绍和实操
1、JMeter基础功能组件介绍
1)线程组Thread Group(一个线程组里可以添加多个取样器)
- Name:线程组名称
- Comments:对线程组的描述
- Number of Threads(users):虚拟用户数,一个虚拟用户占用一个进程或线程
- Ramp-Up Period(in seconds):准备时长,全部线程启动的时长,比如100个线程,启动时长20s,则表示20秒内100个线程都要启动完成,每秒启动5个线程
- Loop Count:循环次数,每个线程发送的次数,假如该值为5,100个线程,则会发送500次请求,可以勾选永远循环
2)取样器Sampler(以http请求为例)
- Name:取样器名称
- Comments:对取样器的描述
- Protocol[http]:协议名称,默认是http协议
- Server Name or IP:服务器名称或IP,请求的目标服务器名称或IP地址
- Port Number:端口号,默认是80
- Method:方法请求类型
- Path:服务器请求url
3)监听器Listener(以察看结果树为例)
- Name:结果树名称
- Comments:对结果树的描述
- Text:请求结果列表
- Sampler result:取样器结果
- Request:请求,包括请求头与请求体
- Response data:响应数据,包括响应头与响应体
2、JMeter的断言基本使用
1)给http请求添加响应断言
- Name:断言名称
- Comments:对断言的描述
- Apply to:应用范围,Main sample only表示仅对当前父取样器 进行断言,一般是一个请求,如果发一个请求会触发多个请求,则就勾选sub sample(比较少用)
- Field to Test:要测试的响应字段,Text Response(响应文本),即响应的数据,比如json等文本,Response Code(响应代码),http的响应状态码,比如200,302,404等,Response Message(响应信息),http响应代码对应的响应信息,例如:OK, Found,Response Header(响应头),Http的响应头
- Pattern Matching Rules:模式匹配规则,Contains(包括),包含在里面就成功,Matches(匹配),响应内容完全匹配,不区分大小写,equals,完全匹配,区分大小写
2)断言结果监听器
断言失败,查看结果树任务,结果颜色标红(通过结果树里面双击不通过的记录,可以看到错误信息)
3)每个sampler下面可以加单独的结果树,然后同时加多个断言,最外层可以加个结果树进行汇总
3、JMeter实战之压测结果聚合报告分析
新增聚合报告
- Lable:sampler名称
- #Samples:一共发出去多少个请求,例如10个用户,循环10次,则是100
- Average:平均响应时间
- Median:中位数,也就是50%用户的响应时间
- 90% Line:90%用户的响应时间不会超过该时间
- 95% Line:95%用户的响应时间不会超过该时间
- 99% Line:99%用户的响应时间不会超过该时间
- Min:最小响应时间
- Maximum:最大响应时间
- Error%:错误的请求的数量/请求的总数
- Throughput:吞吐量,默认情况下表示每秒完成的请求数(Request per Second),可类比为qps
- Received KB/sec:每秒接收数据量
- Sent KB/Sec:每秒发送数据量
4、JMeter压测脚本JMX讲解
复制代码
<?xml version="1.0" encoding="UTF-8"?> <jmeterTestPlan version="1.2" properties="5.0" jmeter="5.1.1 r1855137"> <ha