大家好,我是温大大
最近在看大家简历的时候,发现大部分同学都写过用过jmeter,但再面试过程中还是发现其实对jmeter不太熟练,例:如何断言,如何自定义参数,如何对请求进行关联,这些其实都是必问,如果你做过一定会回答,并且会一门性能压测工具面试时真的比较加分。
所以今天给带大家入门jmeter http请求模拟,全程保姆式教学,希望大家喜欢。
目录:
Jmeter 准备
1.1 jmeter 安装包下载
1.2 jmeter 启动
Jmeter 运行1个Web请求的demo
2.1 添加1个 Thread Group 线程组
2.2 添加1个 HTTP Request 请求
2.3 乱码问题解决
2.4 添加1个 HTTP Header 请求头
2.5 添加1个 View Result Tree 结果报告
2.6 运行测试,查看结果
2.7 添加1个 Assertion和Assert Results
2.8 使用用户自定义变量
2.9 关联
Jmeter 并发设置
3.1 Number of Threads(users)
3.2 Ram-Up Period(in seconds)
3.3 Loop Count
1. Jmeter 准备
1.1 jmeter 安装包下载
公众后后台回复:jmeter
1.2 jmeter 启动
mac为例:
1、解压:
unzip apache-jmeter-5.1.1.zip
2、jdk 版本1.8 或 1.8+:
java -version
显示:java version"1.8.0_271"
3、赋权 + 启动
chmod +x /apache-jmeter-5.1.1/bin/jmeter
sh /apache-jmeter-5.1.1/bin/jmeter
windos为例:
1、配置环境变量:
此电脑-右键-属性-高级系统设置-环境变量-系统变量:
1、JMETER_HOME E:\jmeter\apache-jmeter-5.1.1\apache-jmeter-5.1.1(此路径为jmeter放置位置,根据实际情况调整)
2、Path %JMETER_HOME%\bin
2、启动:
进入E:\jmeter\apache-jmeter-5.1.1\apache-jmeter-5.1.1\bin,双击jmeter.bat
1.3 jmeter 语言选择
2. Jmeter 运行1个Web请求的demo
2.1 添加1个 Thread Group 线程组
必须新建一个Thread Group, jmeter的所有任务都必须由线程处理,所有任务都必须在线程组下面创建
2.2 添加1个 HTTP Request 请求
比如我要发送一个Get 方法的http 请求: toy1.weather.com.cn/search?cityname=上海
2.3 乱码问题
如果返回结果存在乱码
方法1:
添加BeanShell Sampler注意要在HTTP请求后面添加
在Script处填写如下代码:prev.setDataEncoding("utf-8");
方法2:
修改bin下的配置文件并重启:jmeter.properties
优点:一次修改,长久使用
2.4 添加1个 HTTP Header 请求头
选中上一步新建的HTTP request. 右键,新建一个Http Header manager. 添加一个header
2.4 添加1个 View Result Tree 结果报告
View Results Tree 是用来看运行的结果的
2.5 运行测试,查看结果
到这里。 我们已经成功运行起来了(有可能返回的中文显示乱码,但不影响我们后续的教程)。
2.6 添加1个 Assertion和Assert Results
选择HTTP Request, 右键 Add-> Assertions -> Response Assertion. 添加 Patterns To Test
然后添加一个Assetion Results 用来查看Assertion执行的结果.
选中Thread Group 右键 Add -> Listener -> Assertion Results.
运行后, 如果HTTP Response中没有包含期待的字符串。 那么test 就会Fail.
2.7 使用用户自定义变量
我们还可以在Jmeter中定义变量。 比如我定义一个变量叫 city. 使用它的时候用 ${city}
添加一个 User Defined Variables. 选中Thread Group: 右键 Add -> Config Element -> User Defined Variables.
我们添加一个变量: city
然后在Http Request中使用这个变量
2.8 关联
所谓关联, 就是第二个Requst, 使用第一个Request中的数据
我们需要在第一个Http Requst 中新建一个正则表达式,把Response的值提取到变量中,提供给别的Http Request 使用
选择第一个Http Request, 右键 Add -> Post Processors -> Regular Expresstion Extractor
现在新建第二个Http Request, 发送到: http://www.weather.com.cn/weather2d/${citycode}.html
${citycode} 中的数据, 是从Regular Expression Extractor 中取来的
到这, 脚本就全部写好了, 运行下,
请求参数里面http://www.weather.com.cn/weather2d/101020100.shhtml
${citycode}被替换数字
3. Jmeter 并发设置
3.1 Number of Threads(users)
用于设置线程数,即用户数
3.2 Ram-Up Period(in seconds)
用于告知JMeter要在多长时间内建立全部的线程。
假如Ramp-Up设置了1秒,而Number of Thread(users), 即线程数,也是用户数,设置了10,则代表JMeter会每在1秒内建立10个线程,即1/10=0.1秒建立一个线程。
Ramp-Up的值默认为0,代表立即建立所有线程,即同时并发。
3.3 Loop Count
用于设置循环次数
如图,此处代表300个用户并发处理,并只执行一次脚本
关注我,加我好友拉你进面试群,一起讨论面试干货 / 套路,大家一起升职加薪
让我帮你规划下学习线路 & 职业规划线路,帮你升职加薪。
关注公众号:「测试猿温大大」