持续更新…
标记
文章目录
1. JMeter开始
1.1 JMeter简介
Apache JMeter是Apache组织开发的基于Java的压力测试工具。
适用的测试领域:
- 用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。他可以用于测试静态和动态资源,例如静态文件,Java,小服务程序,CGI(公共网关接口),脚本,Java对象,数据库,FTP,服务器等等;JMeter可以用于对服务器,网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
- JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序是否返回了预期的结果;为了最多限度的灵活性,JMeter允许使用正则表达式创建断言。
- JMeter可以用于对静态和动态资源(文件、Servlet、Perl脚本、Java对象、数据库和查询、FTP服务等等)的性能进行测试
- 接口测试
- 数据库压力测试
- 批量产生测试数据
1.2 安装JMeter
下载JMeter
选一个下载
解压
JMeter是免安装的,所以我们直接将文件夹移动到想要存放的位置即可
配置环境变量
当前我的JMeter的路径为D:\InstalledS\Program Files\apache-jmeter-5.4.1
新建系统变量
变量名:JMETER_HOME
变量值:D:\InstalledS\Program Files\apache-jmeter-5.4.1
配置Path环境变量 %JMETER_HOME%\bin
配置Classpath
添加%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;
测试
启动JMeter
- bat方式
- jar方式
jar的方式,直接双击
使用bat的方式,双击,是在cmd中命令行中打开
cmd窗口关闭,jmeter也关闭
将ApacheJMeter.jar发送到桌面快捷方式,重命名,更改图标
接口文档 docs\api\index.html
:
1.3 JMeter和LoadRunner的区别
- 都是压力测试工具,都可以用来做性能测试,但是JMeter比较轻量级;
- JMeter是用java语言编写的,需要java环境,LR不需要;
- JMeter更偏向于功能和技术,LR更偏向于业务;
- LR有强大的图表系统,但是JMeter这一方面的表现稍弱。
2. JMeter应用
2.1 JMeter发送GET请求
eg:
1)添加线程组
添加->线程(用户)->线程组
2)发起一个HTTP请求
添加->取样器->HTTP请求
3)填写信息
4)添加<察看结果树 >查看请求结果
添加->监听器->察看结果树
5)运行
关于响应结果是乱码的形式
我们这里要进行设置
对配置文件进行修改 bin目录下的jmeter.properties
查找sampleresult.default.encoding将编码方式改为utf-8,将#去掉
保存
重启JMeter,运行,发现已经没有乱码了
2.2 JMeter发送POST请求
eg:
添加<管理员登陆>POST请求
添加HTTP信息头
添加>配置元件->HTTP信息头管理器 Content-Type:application/json
添加<察看结果树>,运行
保存测试计划
文件->保存测试计划为
保存完成后
2.3 JMeter请求参数类型(参数、消息体数据、文件上传)
参数:键值对
参数和消息体数据只能二选一,设置了其中一个就无法设置另一个
消息体数据:可以是json或xml格式的参数
比如下面这种情况:
文件上传
2.4 JMeter的HTTP请求默认值
作用:HTTP请求默认值,会在发送HTTP请求发送的时候,自带参数,当你不填写请求信息的时候生效,填写信息后会取代默认值。
设置了默认值,方便我们后期改动地址。
eg:
添加HTTP请求默认值
添加->配置元件->HTTP请求默认值
由于我们将服务器名称和端口号设置为了HTTP请求默认值
所以<登陆管理员>和<查看指定id的床位信息>请求的服务器名称和端口号都不必填写
运行
2.5 断言(做判断)
eg:
给<登录管理员-POST>请求添加断言
添加>断言>响应断言
匹配模式
- 包括:响应内容包括需要匹配的内容即代表响应成功,支持正则表达式。
- 匹配:响应内容要完全匹配需要匹配的内容即代表响应成功,支持正则表达式。
- 相等:响应内容要完全等于匹配的内容才代表成功,区分大小写,需要匹配的内容是正则表达式。
- 字符串:返回结果包括指定结果的字符串,区分大小写,不支持正则表达式。
- 否:反转检查结果,用于表示不包含,不匹配,不等于,没有和模式字符串相匹配的字符串,不支持正则字符串。
- 或者:一个断言可以添加多个“要测试的模式”,使用or选项后,只要其中有一个模式匹配,断言将会成功;不选择or将默认为and选项,必须所有模式都匹配,断言才会成功。
填写响应断言,选择测试字段<响应文本>,模式匹配选择<包括>,运行
通过
选择测试字段<响应代码>,模式匹配选择<相等>,运行
通过
2.6 设置变量
在请求过程中,我们需要在请求中设置一些变量来测试不同场景。
JMeter中支持以下类型变量:
- 用户自定义变量
- 函数生成变量
- BeanShell变量
- 数据文件变量
2.6.1 用户自定义变量
eg:
以<登陆管理员-POST>为例,添加用户自定义变量
添加>前置处理器>用户参数
添加两个变量,一个用户名,一个密码
用户参数的使用,${变量名}
与postman中不同的是,postman中变量使用{
{变量名}}
运行,通过
在<用户参数>中,我们再添加一个用户
在线程组中,改写线程数,让其请求2次
运行,这实际是一种数据驱动的实现方式
2.6.2 函数生成变量
eg:
JMeter有许多内置函数,比如生成