目录
一、Jmeter介绍
二、Jmeter文件目录介绍
1.1 bin目录
1.2 docs目录
1.3 printable_docs目录
1.4 lib目录
三、Jmeter的基础配置
汉化设置
主题修改
四、Jmeter的基本操作
基本元件
作用域
元件的执行顺序
Jemter重要的三个组件
五、Jmeter参数化常用方式
用户定义的变量
用户参数
CSV Data Set Config
函数
六、Jmeter断言
响应断言
Json断言
断言持续时间:
七、Jmeter关联(提取器、数据库、逻辑控制器等)
提取器
八、Jmeter数据库连接与操作
连接准备:
直连数据库使用:
九、Jmeter的逻辑控制器
if控制器
循环控制器
ForEach控制器
十、Jmeter定时器
同步定时器
常数吞吐量定时器
十一、Jmeter的分布式
原理:
分布式相关注意事项:
分布式配置
jmeter是Apache组织基于java开发的一款性能测试软件。是一款开源、小巧、支持多协议(HTTP/HTTPS、JDBC、JAVA...等等)、众多插件为一体的强大工具。
它不仅做性能测试,还可以做接口的自动化测试。
优点
1.开源免费
2.体积小
3.有丰富的第三方插件
缺点
1.不支持ip欺骗
2.报表的精度比LR要差
存放可执行文件和配置文件
jmeter.bat:windows的启动文件
jmeter.log:日志文件
jmeter.sh:linux的启动文件
jmeter-properties:系统配置文件
jmeter-server.bat:windows分布式测试要用到的服务器配置
jmeter-server:linux分布式测试要用到的服务器配置
docs:是Jmeter的api文档,可打开api/index.html页面来查看
printable_docs的usermanual子目录下的内容是Jmeter的用户手册文档。
usermanual下component_reference.html是最常用到的核心元件帮助文档。
提示:printable_docs的demos子目录下有些常用Jmeter脚本案例,可以参考。
该目录用来存放Jmeter依赖的jar包和用户扩展所依赖的jar包。
临时修改:
options--->language--->choose language--->Chinese
永久修改:
打开jmeter.properties
修改language=zh_CN
重启jmeter
选项--->主题--->选择对应的主题,重启jmeter
线程组:模拟用户的。
配置元件:进行测试环境和测试数据初始化--->比如自动化脚本中setup
前置处理器:对要发送请求进行预处理--->比如自动化脚本中参数化
取样器:往服务器发送请求--->比如自动化脚本中发请求的代码
后置处理器:对收到服务器的响应进行数据提取--->比如自动化脚本中获取响应中特定字段语句
断言:将收到响应结果又预期结果做对比--->比如自动化脚本中断言
监听器:查看测试脚本运行后结果和日志--->比如自动化脚本中测试报告
定时器:等待一段时间--->比如自动化脚本中sleep
测试片段:封装基本功能,不单独执行,需要通过脚本的调用才能执行--->比如自动化脚本中封装函数
核心:根据测试计划中的树形结构的父子节点来确定的
原则:
顺序:配置元件--->前置处理器--->定时器--->取样器--->后置处理器--->断言--->监听器
注意:
线程组
作用:通过配置线程组中的线程数来模拟用户。线程数就是用户数,线程组是用户组
特点:
线程组的分类:
线程组的属性
线程数:模拟虚拟用户数
Ramp-up时间:虚拟用户启动所需要的时间
循环次数:
http请求
http协议:可以填写为HTTP或者HTTPS,默认不填写为HTTP协议
http主机名/ip: 如:http://baidu.com 80
端口:可以填写为任意值。默认不填写时为80端口
请求发方法:HTTP协议所有支持的所有方法
路径:目录+参数
编码格式:默认IOS国际标准,推荐使用utf-8
查看结果树
取样器结果:统计请求相关的信息
请求:HTTP请求的请求头和请求体的详情信息
响应:HTTP响应的响应头和响应体的详情信息
jmeter响应中出现乱码时:
添加:线程组--->配置元件--->用户自定义变量
配置:参数名+参数值
使用:在HTTP请求的取样器中引用定义变量。$(参数名)
配置:在测试计划中去配置用户定义变量
使用:在HTTP请求的取样器中引用定义变量。$(参数名)
应用场景:当大量脚本中的参数值需要修改时候,直接修改用户定义变量中值会更方便
添加:线程组--->前置处理器--->用户参数
配置:
使用:在HTTP请求的取样器中引用定义的变量。$(参数名)
应用场景:可以针对不同的用户获取到不同的参数值
添加:线程组--->配置元件--->CSV数据文件设置
编写CSV数据文件(.csv作为后缀):
配置:
counter:
引用:在取样器中使用$(__counter(FALSE,))来引用对应值
建议大家使用函数方式
作用:让脚本自动化执行过程中,能够自动判定执行结果是否符合要求时候,需要添加断言
添加:线程组--->HTTP请求--->断言--->响应断言
配置:
适用于返回的HTTP响应为JSON格式
添加:线程组--->HTTP请求--->断言--->JSON断言
配置:
适用于性能测试时,检查HTTP请求的响应时间是否超过预期值
添加:线程组--->HTTP请求--->断言--->断言持续时间
配置:预期时间
当多个请求之间有依赖关系,后一个请求的参数需要使用前一个请求的响应数据时,需要用到关联。
分类:
正则提取器
添加:线程组--->HTTP请求--->后置处理器--->正则表达式提取器
配置:
(.*?)
,"()"里是要保存的数据
xpath提取器
添加:线程组--->HTTP请求--->后置处理器--->xpath提取器
配置:
json提取器
添加:线程组--->HTTP请求--->后置处理器--->json提取器
配置:
引用:直接引用变量名即可
控制元件的执行顺序
添加:线程组--->逻辑控制器--->if控制器
配置:
指定HTTP请求执行特定的次数
添加:线程组--->逻辑控制器--->循环控制器
配置:次数
循环控制器中的循环次数配置m与线程组中的循环次数n配置对比:
与用户定义的变量或正则表达式提取器配合使用,循环读取返回的变量值,执行一次或多次。
与用户定义的变量配合
添加:线程组--->逻辑控制器--->ForEach控制器
配置:
用户定义的变量
ForEach控制器
HTTP请求:
与正则表达式配合使用
需要进行大量用户的并发测试时,为了让用户能真正同时执行,添加"同步定时器"使其阻塞线程,直到线程达到了预先设置数值,才开始进行取样器操作。
配置:
并发数:同事达到多少用户才开始发请求
超时时间:
用于性能测试中模拟用户产生业务压力,通过给定QPS来对服务器发送固定频率要求。
添加:线程组--->HTTP取样器--->常数吞吐量定时器
配置:吞吐量的值QPS*60
配置
运行