1、简介
JMeter是Apache组织开发的基于Java的压力测试工具。该工具开源免费、框架灵活、支持多平台等优势。除了压力测试外,JMeter在接口测试方面也有广泛的应用。
如有以下需求可直接访问
Jmeter 正则表达式提取器 的使用:https://mp.csdn.net/console/editor/html/108551693
Jmeter JSON提取器的使用:https://mp.csdn.net/console/editor/html/108555812
Jmeter csv文件数据读取参数化及其他相关功能的使用:https://mp.csdn.net/console/editor/html/108600219
2、安装
访问JMeter官网:https://jmeter.apache.org/download_jmeter.cgi,点击下载后解压缩
3、启动方式:
mac 电脑通过命令启动 打开【终端cmd】进入jmeter的bin目录下 通过sh jmeter启动工具
Windows 启动方式可以在bin目录下打开ApacheJMeter.jar,就可以启动jmeter
bin目录下打开jmeter.bat也可以启动jmeter,但是有个控制台,控制台不能关闭,关闭控制台会把jmeter也关闭了
4、切换页面语言
可以 选项----选择语言----选择习惯的语言
步入正题!接下来我进进行单个接口的测试
我们选取最常见的百度搜索接口:http://www.baidu.com/s?ie=utf-8&wd=jmeter接口测试
请求参数:ie 为编码方式默认为utf-8 ,wd: 搜索词
返回结果:我们可以通过断言来判断校验结果中是否含有搜索词wd来判断本次请求成功或失败。
5、单个接口测试
首先添加线程组:测试计划右键----添加----线程----线程组
我们可以在线程组里面进行配置一些操作 比如:程组名称,线程数,准备时长(Ramp-Up Period(in seconds))循环次数,调度器等参数: 注意:如果我们选择使用调度器 循环测试必须勾选永远直到设置的持续时间完成
线程数:虚拟用户数。设置多少虚拟用户数在这里也就是设置多少个线程数。
Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
循环次数:每个线程发送请求的次数。如果线程数为1,循环次数为5,那么每个线程发送5次请求。总请求数为1*5=5 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
6、添加Http请求
在线程组上面添加http请求 右键:添加----取样器----HTTP请求
我们通过百度的接口进行测试可以参考以下图片
协议:http https 两种 根据实际情况填写
服务器名称或ip:就是你要访问的ip地址
端口号:默认是80 。
http请求:请求方式包括 GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等,可以根据实际情况进行选择请求方式,一般post get方式较多
路径:路径就是ip地址端口号后面的路径剩余部分,注意别多加空格
内容编码:编码方式默认为ISO-8859-1编码,这里配置为utf-8
同请求一起发送参数:在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value),注意参数传入中文时需要勾选“编码”(这里我wd 对应的value 是用户定义的变量关联的,也可以手动输入,用户自定义变量本文后面会有写怎么使用)
7、添加Http Cookie管理器
如果不添加Http Cookie管理器 会出现一种情况就是提示你 no cookie
这里我们就添加百度的cookie,通过F12来获取百度的cookie 注意name 和value 以及域必须要填写正确
8、添加查看结果树
在http请求下面右键:添加----监听器----察看结果树
在这个页面可以查看到是否请求成功,以及响应数据等
9、添加聚合报告
在http请求下面添加:添加----监听器----聚合报告
聚合报告参数详解:
1. Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
2. #Samples:请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
3. Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
4. Median:中位数,也就是 50% 用户的响应时间
5. 90% Line:90% 用户的响应时间
6. Min:最小响应时间
7. Max:最大响应时间
8. Error%:错误率——错误请求数/请求总数
9. Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
10. KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
一般而言,性能测试中我们需要重点关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量。
10、添加响应断言
在响应断言里面添加断言内容来判断请求是否通过这里我选择的是文本 测试模式是通过用户自定义变量关联,当然我们也可以直接填写文字等
http请求右键:添加----断言----响应断言
apply to 工作区域:应用范围,设定匹配的范围,当前我们选择 Main sample only
Main sample and sub-samples:匹配范围为当前父取样器,及子取样器
Main sample only :仅当前父取样器
Sub samples only:仅子取样器
JMeter Variable:变量值进行匹配
测试字段工作区域:针对响应数据不同部分进行匹配
响应文本:响应服务器返回的文本内容,http协议排除header部分
响应代码:匹配响应代码,比如http请求中‘200’代表成功
响应信息:匹配响应信息,处理成功返回‘成功’或者“ok”字样
响应头:匹配响应头中的信息
请求头:匹配请求头中的信息 等等其他的就不一一说明了,我们一般选择响应文本
模式匹配规则区域:
包括:响应内容包括需要匹配的内容就算成功
匹配:响应内容要完全匹配匹配内容,不区分大小写
相等:完全相等,区分大小写
字符串:响应内容包括匹配内容即为成功。
或者:一者匹配成功则通过
可以通过添加断言结果来查看断言的执行情况。
11、添加断言结果
在Http请求下面右键:添加----监听器----断言结果
断言结果通过以及不通过的显示不同的提示是以下第一张图为通过请求5次全部通过 第二张图为不通过请求5次都没有通过
断言不通过这个接口测试也就不通过了,我们也可以在察看结果树页面察看原因,红的表示失败,绿色表示成功
12、添加用户自定义变量
我们可以添加用户自定义变量用以Http请求参数化:线程组右键:添加----配置元件----用户定义的变量
新增一个参数wd,用来存放搜索词:参考如下
并在Http请求中使用该参数,格式为:${wd} 将参数关联起来,也就是说将用户定义的变量页面的值关联到http请求页面wd对应的值
我们在次发送请求,点击绿色三角为启动请求,两个扫把是清除察看结果树页面的请求记录,这个搜索的内容就是用户定义的变量里面wd 对应的值。到这就结束了单个接口测试以及使用 用户定义的变量进行参数化的关联。
本文所涉及的内容,如果有什么意见或建议请在留言区留言,感谢阅读