文章目录
安装和配置
0. 环境
操作系统:Windows10.
java 版本:1.8
一定要提前下载好java哦!
1. 下载
访问官网http://jmeter.apache.org/download_jmeter.cgi,windows的话就下载zip
解压后,在bin目录下找到jmeter.bat,双击就能使用。
2. 中文界面
参考博客https://blog.csdn.net/xinglongsky/article/details/93753297。
找到bin目录下jmeter.properties文件,默认的language是en,改成zh_CN就可以了。如果此时已经打开了jmeter,重启就可以了
3. 修改背景颜色
在外观中修改背景颜色。
简易使用
参考https://blog.csdn.net/lovesoo/article/details/78579547实现百度结果的查询。
1. 接口地址
如果使用原文中的地址的话好像会报错,我也发现现在百度查询的接口地址变成了https://www.baidu.com/baidu?wd=jemeter&tn=monline_4_dg&ie=utf-8,因此使用的就是这个地址了。
2. 添加线程组(虚拟用户)
右键点击“测试计划” -> “添加” -> “线程(用户)” -> “线程组”
- 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
- Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
- 循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
- Delay Thread creation until needed:直到需要时延迟线程的创建。
- 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
持续时间(秒):测试持续时间,会覆盖结束时间
启动延迟(秒):测试延迟启动时间,会覆盖启动时间
启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。
结束时间:测试结束时间,持续时间会覆盖它。
3. 添加HTTP请求
右键点击“线程组” -> “添加” -> “取样器” -> “HTTP请求”
Http请求主要参数详解:
- Web服务器
协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP
服务器名称或IP :HTTP请求发送的目标服务器名称或IP
端口号:目标服务器的端口号,默认值为80 - Http请求
方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
路径:目标URL路径(URL中去掉服务器地址、端口及参数后剩余部分)
Content encoding :编码方式,默认为ISO-8859-1编码,这里配置为utf-8
同请求一起发送参数
在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value),注意参数传入中文时需要勾选“编码”
根据上面的接口https://www.baidu.com/baidu?wd=jemeter&tn=monline_4_dg&ie=utf-8
,我们可以分别填充协议(http),服务器(www.baidu.com),方法(GET),和路径(/baidu)。Jmeter界面最底部有一个添加的按钮,用来添加参数列表。最终结果如下
4. 添加和查看结果树
右键点击“线程组” -> “添加” -> “监听器” -> “察看结果树”
然后运行HTTP请求,就可以在结果树查看结果了。
这里有一个坑,就是没有清空结果树的按钮。当开启下一轮测试的时候,上一轮的结果还保存至结果树中。
快捷键ctrl+E可清空结果树
后来经过同学提醒,发现这里也可以清空结果树
5. 参数化测试
右键点击“线程组” -> “添加” -> “配置元件” -> “用户定义的变量”
新增一个参数wd,存放搜索词:
并在Http请求中使用该参数,格式为:${wd}
5.1 CSV文件参数化测试
首先创建csv文件,在其中放两列自己需要作为参数传入的变量,如下图:
然后在Jmeter中创建“线程组” -> “添加”-> “配置元件” -> “CSVSet Data Config”
配置CSV Data Set Config,其中:
- Filename: 指保存信息的文件目录,可以相对或者绝对路径。否则会在jmeter日志文件(jmeter.log目录位置D:\Program Files\apache-jmeter-2.13\bin)中提示:系统找不到指定文件,运行脚本后,登录失败。
- File encoding: 保持默认。默认为ANSI
- Variable Names: 给csv文件中各列起个名字(有多列时,用英文逗号隔开列名)便于后面引用
- Delimiter:与 .csv文件的分隔符保持一致。如文件中使用的是逗号分隔,则填写逗号;如使用的是TAB,则填写\t;
- Allow quoted data? :是否允许引用数据,—这个目前还未弄明白,设置成True或者False都能正常引用数据。
- Recycle on EOF?:到了文件尾是否循环,True—继续从文件第一行开始读取,False—不再循环
- Stop thread on EOF? :到了文件尾是否停止线程,True—停止,False—不停止,注:当Recycle on EOF设置为True时,此项设置无效。
Sharing mode:共享模式,All threads –所有线程,Current thread group—当前线程组,Current thread—当前线程。
如上图所示,我将两列命名为了username和password,只要在HTTP请求中设置参数的时候将具体值改为${变量名}
就可以,如下图:
6. 创建检查点
右键点击“访问百度搜索” -> “添加”-> “断言” -> “响应断言”
我们校验返回的文本中是否包含搜索词,添加参数${wd}到要测试的模式中:
右键点击“访问百度搜索” -> “添加”-> “监听器” -> “断言结果”
再次运行HTTP请求,就可以在断言结果中看到文本中是否包含搜索词了。如果在响应断言中添加的字段是${wd} ,断言就不会被触发。如果是一个不会被搜索到的词,比如UncleDong,那就会触发断言。分别用这两个关键词运行,结果如下。
断言结果:
结果树
7. IP欺骗
右键点击“访问百度搜索” -> “添加”-> “配置元件” -> “HTTP信息头管理器”
添加
名称 | 值 |
---|---|
x-Forwarded-For | ${__Random(10,200,)}.${__Random(2,255,)}.${__Random(2,255,)}.${__Random(1,255,)} |
8. 分析测试报告
右键点击“线程组” -> “添加” -> “监听器” -> “聚合报告”,用以存放性能测试报告。
当下次运行的时候,就会生成报告。
聚合报告参数详解:
- Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
- #Samples:请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
- Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
- Median:中位数,也就是 50% 用户的响应时间
- 90% Line:90% 用户的响应时间
- Min:最小响应时间
- Max:最大响应时间
- Error%:错误率——错误请求数/请求总数
- Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
- KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
一般而言,性能测试中我们需要重点关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量。
9. 源代码分享
当执行完上述操作后直接保存,可以得到.jmx文件。该文件就是该段测试脚本的代码了。直接拖入Jmeter就可以看到所有的配置。
完整脚本已经上传到百度网盘。
链接:https://pan.baidu.com/s/1_hKSh10J0DCECFvzhcfhLw
提取码:0ewe