Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率。
熟练使用Jmeter后, 能用Jmeter搞定的事情,你就不会使用LoadRunner了。
阅读目录
- Jmeter介绍
- 如何学好Jmeter
- Jmeter下载和运行
- 实际测试的例子
- 第一步: 新建Thread Group
- 第二步: 新建HTTP Request
- 第三步: 新建HTTP Header Manager
- 第四步: 新建 View Results Tree
- 第五步: 运行测试,查看结果
- 第六步: 添加Assertion和Assertion Results
- 第七步: 使用用户自定义变量
- 第八步: 关联
- 源代码下载
Jmeter 介绍
Jmeter 是一款使用Java开发的,开源免费的,测试工具, 主要用来做功能测试和性能测试(压力测试/负载测试).
而且用Jmeter 来测试 Restful API, 非常好用。
如何学好Jmeter
如果你用Jmeter去对Web进行功能测试,或者性能测试。 你必须熟练HTTP协议,才能学好Jmeter。 否则你很难理解Jmeter中得概念。
Jmeter 下载和运行
下载解压后, 运行 “bin/jmeter.bat”
Jmeter 是支持中文的, 启动Jmeter 后, 点击 Options -> Choose Language 来选择语言
实际测试的例子
目标: 获取城市的天气数据:
第一步: 发送request 获取城市的城市代号
http://toy1.weather.com.cn/search?cityname=上海
从这个请求的response 中获取到上海的城市代码. 比如:
上海的地区代码是101020100
上海动物园的地区代码是: 10102010016A
第二步: 发送request 到: http://www.weather.com.cn/weather2d/101020100.shtml 可以得到该城市的天气数据
第一步: 新建一个Thread Group
必须新建一个Thread Group, jmeter的所有任务都必须由线程处理,所有任务都必须在线程组下面创建。
![6d8528c909d37bbe999d867b1a918649.png](https://i-blog.csdnimg.cn/blog_migrate/ae4c822973b9329f84a064ca86d83c01.jpeg)
第二步:新建一个 HTTP Request
![ab2b930b01ee29a83f82cfa5a1ef24de.png](https://i-blog.csdnimg.cn/blog_migrate/62b02b282dde3bdcb8cf19ce66b444db.jpeg)
比如我要发送一个Get 方法的http 请求: http://toy1.weather.com.cn/search?cityname=上海
可以按照下图这么填
![7ee92a60e59cd150bc33880b50f181c5.png](https://i-blog.csdnimg.cn/blog_migrate/d098c4cc59c765e1ab79287e6fe8e378.jpeg)
第三步 添加HTTP Head Manager
选中上一步新建的HTTP request. 右键,新建一个Http Header manager. 添加一个header
![cc881a36415ac69f58b9e0bf64120ac0.png](https://i-blog.csdnimg.cn/blog_migrate/cb2c3403a44b895e9c8d41333a869c16.jpeg)
![9bc4b7bb69248e98f85d563ae790e807.png](https://i-blog.csdnimg.cn/blog_migrate/e166de09e75d39bd0c73f2a20bd43355.jpeg)
第四步: 添加View Results Tree
View Results Tree 是用来看运行的结果的
![6afcc733521794a83fecd6b321679d67.png](https://i-blog.csdnimg.cn/blog_migrate/f5abe1937f3dcfac452c4683846b1f14.jpeg)
第五步:运行测试,查看结果
![c4d01e7b9f3517486d860eb241bf320a.png](https://i-blog.csdnimg.cn/blog_migrate/318ba7b67ca3a54fc33cffd199d5c32d.jpeg)
![e43931ff2f8f1902d151bc8856544556.png](https://i-blog.csdnimg.cn/blog_migrate/af3aa60c8a0aa3cf9ab847312db0470f.jpeg)
到这里。 我们已经成功运行起来了。
第六步:添加Assertion和Assert Results
选择HTTP Request, 右键 Add-> Assertions -> Response Assertion. 添加 Patterns To Test
![adad88baff9e4536449b28102bce79fd.png](https://i-blog.csdnimg.cn/blog_migrate/fb0a7d35326bf9952ee57446dfee7e63.jpeg)
然后添加一个Assetion Results 用来查看Assertion执行的结果.
选中Thread Group 右键 Add -> Listener -> Assertion Results.
运行后, 如果HTTP Response中没有包含期待的字符串。 那么test 就会Fail.
![b72ff7c3541e602bbe91f9a966c477c7.png](https://i-blog.csdnimg.cn/blog_migrate/b84cb3eb35184ff17eda28b0e64e35e3.jpeg)
![e326ab9adbd8053ed5336f34a18ae46b.png](https://i-blog.csdnimg.cn/blog_migrate/3c030b1a00e84fedc662e269fce98f46.jpeg)
第7步: 使用用户自定义变量
我们还可以在Jmeter中定义变量。 比如我定义一个变量叫 city. 使用它的时候用 ${city}
添加一个 User Defined Variables. 选中Thread Group: 右键 Add -> Config Element -> User Defined Variables.
我们添加一个变量: city
![e11ba1e4a6316fc5a3ed5cd1da576473.png](https://i-blog.csdnimg.cn/blog_migrate/36ac7bcfe74357dc534a4ed5cf0f9797.jpeg)
然后在Http Request中使用这个变量
![4a1b0f7784505c9079186272557be1ea.png](https://i-blog.csdnimg.cn/blog_migrate/67d0d6b6620a708d2a69103c14bc1ab9.jpeg)
第八步:关联
所谓关联, 就是第二个Requst, 使用第一个Request中的数据
我们需要在第一个Http Requst 中新建一个正则表达式,把Response的值提取到变量中,提供给别的Http Request 使用
选择第一个Http Request, 右键 Add -> Post Processors -> Regular Expresstion Extractor
![f0123b0d87ca100b3eae964db5463bb7.png](https://i-blog.csdnimg.cn/blog_migrate/4e7f53358d736049e941737204f0b4a2.jpeg)
现在新建第二个Http Request, 发送到: http://www.weather.com.cn/weather2d/${citycode}.html
${citycode} 中的数据, 是从Regular Expression Extractor 中取来的
![a89ebaa93fa1c0f4ebf11a6d47130779.png](https://i-blog.csdnimg.cn/blog_migrate/9dcbcbb9ea02ee2ba4b901b2b2d8e7ae.jpeg)
到这, 脚本就全部写好了, 运行下,看下最终结果
![da34174298a35539fd16c8a028538f52.png](https://i-blog.csdnimg.cn/blog_migrate/8d6de1145518311695d00dd8963e4cf9.jpeg)
作者:慕沐945168
链接:https://www.imooc.com/article/25325
来源:慕课网