Jmeter入门基础实践

Jmeter简介

1、JMeter是一款使用Java开发的可用于性能测试、功能测试、自动化测试的开源免费工具
2、支持数十种协议(如我们常见的应用协议http/https,jdbc,soap,smtp等等,还包括网络协议TCP,UDP)
3、同时支持即插即用脚本和二次开发
4、几乎可以适用任何测试场景

Jmeter目录介绍

bin:放置各项配置文件(如日志设置、JVM设置)、启动文件、启动Jar包、示例脚本等
docs:放置JMeter API的离线帮助文档
extras:JMeter辅助功能,提供与Ant、Jenkins提成的可能性,用来构建性能测试自动化框架
lib:JMeter组件以Jar包的形式放置在lib/ext目录下,如果要扩展JMeter组件,Jar包就放在此目录下,JMeter启动时会加载此目录下的Jar包
printable_docs:放置JMeter的离线帮助文件,可用来学习JMeter

Jmeter入门基础实践

Jmeter体系结构

取样器:用来模拟用户操作,向服务器发出请求
断言:用来验证请求返回结果是否正确
监听器:收集Jmeter的测试结果
前置处理器:配置测试需要提前准备的数据
配置元件:参数化等Jmeter提供的众多函数
后置处理器:一般放在取样器之后,用来处理服务器的返回结果
控制器:逻辑控制器
定时器:集合点,模拟请求同一时刻发送
线程组:生成虚拟用户数、运行场景、循环次数及运行时间;一个线程表示一个用户
工作台:不直接参与运行,在Jmeter录制脚本时会用到,也可以用来备份脚本

Jmeter运行逻辑

1、使用线程组来设置运行场景
2、利用取样器模拟用户操作
3、利用监听器来收集测试结果

Jmeter工作原理

1、Jmeter是以线程的方式来运行,运行在JVM虚拟机上
2、JMeter通过线程组来驱动多个线程(虚拟用户)运行测试脚本对被测服务器发起负载
3、每一个负载机上都可以运行多个线程组

Jmeter查询业务场景示例

添加线程组

Jmeter入门基础实践
Jmeter入门基础实践

说明:
继续:当取样器错误时继续执行
线程属性组合值:创建一个虚拟用户运行场景并循环1次

添加HTTP请求默认值

Jmeter入门基础实践

说明:
在同一个线程组下HTTP消息公用的信息可以在HTTP请求默认值页面配置
当HTTP请求默认值与HTTP消息同时设置的情况下,优先使用HTTP消息里面的设置

添加HTTP信息头管理器

Jmeter入门基础实践
Jmeter入门基础实践

说明:
在浏览器开发者模式下可以获取 名称列的值 与 值列的值
参考下图,点击上图的 Add from Clipboard 可实现自动生成名称列的值 与 值列的值

Jmeter入门基础实践

HTTP Cookie 管理器

Jmeter入门基础实践
Jmeter入门基础实践

说明:
名称: 参考下图,在开发者模式下找到对应Cookies中的Name值
值: 参考下图,在开发者模式下找到对应Cookies中的Value值
域: 参考下图,在开发者模式下找到对应Cookies中的Domian值
路径:参考下图,在开发者模式下找到对应Cookies中的Paht值

Jmeter入门基础实践
添加HTTP请求

Jmeter入门基础实践
Jmeter入门基础实践

说明:(因为Fiddler中可以将参数直接复制过来,开发者模式下复制的有问题)
方法 / 路径:参考下图1,在Fiddler中找到对应Request Headers中的 GET值 与 /api/ip/ipmim/mimlist值
Parameters:
名称 / 值:参考下图2,在Fiddler中找到对应WebForms中的全选复制,并点击 Add from Clipboard 即可自动生成上图效果

Jmeter入门基础实践

Jmeter入门基础实践
添加响应断言

Jmeter入门基础实践
Jmeter入门基础实践

说明:
在响应文本中包含 “status” : true 则表示成功,否则失败

添加查看结果树

Jmeter入门基础实践
添加聚合报告

Jmeter入门基础实践
线程组效果图 并保存

Jmeter入门基础实践

Jmeter入门基础实践

运行

Jmeter入门基础实践
查看测试结果

Jmeter入门基础实践
Jmeter入门基础实践

聚合报告参数说明:

Label:每个请求的名称
#Samples:发给服务器的请求数量
Average:单个请求的平均响应时间
Median:50%请求的响应时间
90%Line:90%请求响应时间
95%Line:95%请求响应时间
99%Line:99%请求的响应时间
Min:最小的响应时间
Max:最大的响应时间
Error%:错误率=错误的请求的数量/请求的总数
Throughput:吞吐量即表示每秒完成的请求数
Received KB/sec:每秒从服务器端接收到的数据量
Sent KB/sec:每秒从客户端发送的请求的数量

处理乱码问题

\apache-jmeter-2.13\bin\jmeter.properties 检索sampleresult.default.encoding
去掉默认的注释,并将默认值修改为utf-8 然后重启下Jmeter即可解决乱码问题

Jmeter入门基础实践

Jmeter入门基础实践

Jmeter经验总结

如果取样器中有参数化需求,可以通过配置元件或者前置处理器来完成;
如果取样器中有关联需求,可以通过后置处理器来完成;
如果要模拟负载场景,比如模拟多少用户,运动多长时间,可以通过线程组完成;
如果要模拟并发场景,可以通过定时器来完成;
如果要控制业务的执行逻辑,比如登录只运行一次,可以通过控制器来完成;