在前一篇博客中,对JMeter和Fiddler进行了简单的介绍,如果读者不熟悉,可以先复习一下JMeter搭配Fiddler的简单使用(一)。接下来,在本篇博客中,主要讲解JMeter的实际使用,让我们开始吧。
一、测试计划
就是指针对整个测试脚本的设计,比如要测试那些功能,要测试达到的目标是多少,要如何去建立测试脚本等等。
比如:我们要对百度这个网站发起请求,测试1秒钟,发起10个线程进行请求,看网站能否承受得住这个压力。这就是一个简单的测试计划。
二、实战演示
1)简单的请求
添加线程组
配置线程组的参数:
这里指1秒钟启动10个线程去进行访问,循环1次。
添加Sampler组件并配置参数:
添加监听器,查看请求结果
点击上方的运行按钮,执行脚本,查看具体结果。
查看结果树的具体情况:
查看聚合报告的具体情况:
具体报告每项的意思在第一篇博客已经写过,不明白的可以去上一篇博文查看一下。
2)复杂的请求
刚刚那个实例实在是太简单了,完全没有体现出JMeter的强大功能。JMeter还有很多强大的功能。
比如:如果我们遇到一个要登录的请求,每次我们需要先登录,才能调用接口,最后我们再退出。
比如我们使用某个信息接口,比如ip查询接口,但必须先登录一下才可以使用该接口。
这里我们需要用到Fiddler软件来监听我们的接口了。启动Fiddler,清除所有监听到的数据,在网页中进行登录,然后我们就可以在Fiddler里面查看到我们登录发送的数据了。
在header里可以查看到更加详细、具体的头部信息。
在JMeter里面建立新的计划,添加配置元件HTTP Cookie管理器,模拟登录使其可以保存cookie。
添加Sampler元件HTTP请求,配置数据为表单格式。当然这里可以根据自己的需求来配置,不仅可以配置header,还可以添加一些其他的设置。比如变量。
除了一个HTTP请求外,还添加了一个响应断言,这里是只在请求服务器完成后,服务器响应的相应数据等是否符合预期。比如:成功返回200,错误返回500,404,302等信息。
添加用户自定义变量:
除了自定义变量获取外,我们还可以匹配某个请求响应的数据结果为变量。
在添加一个Sampler元件,模拟请求数据接口。如下:
注意这里使用的${ip}就是刚刚用户自定义变量ip的值。
在这里我们还可以通过添加后置处理器——正则表达式提取器,把获得某个请求数据的结果设置为某个变量。比如新增一条数据,返回新增数据的id,我们需要这个值,可以设置为变量,在下一个请求中就可以直接使用了。
比如这次获得的数据为:
[
{
"country": "美国",
"country_id": "US",
"area": "东部",
"area_id": "US_ET",
"region": "乔治亚州",
"region_id": "US_GA",
"city": "",
"city_id": "-1",
"county": "",
"county_id": "-1",
"isp": "阿里巴巴",
"isp_id": "100098",
"ip": "11.22.12.22"
}
]
我想要提取isp的值“阿里巴巴”为变量isp。如下:
参数 | 介绍 |
---|---|
引用名称 | 在HTTP等请求中,引用此数据,需要用到的名称 |
正则表达式 | 用于将需要的数据提取出来 |
模板 | 表示使用提取到的第几个值( :表示取所有值, :表示随机取值 :表示取第1个, :表示取第二个,以此类推: :表示取第n个),注意在数字前后要用美元$符号括起来 |
匹配数字 | 0 代表随机取值,1 代表全部取值 |
缺省值 | 如果正则表达式没有搜找到值,则使用此缺省值 |
最后再添加一个退出登录的请求,添加查看结果树,添加聚合报告,到这里整个测试就完整了。
运行一下,查看结果:
查看结果树:
聚合报告:
3)使用badbody来使用JMeter
badbody是一款不错的web自动化测试工具,它提供了将web测试脚本直接导出为JMeter的功能。
首先下载badbody工具,地址
下载后,直接安装即可。
启动badbody后,在地址栏输入要访问测试的地址,然后点击红色的按钮启动录制脚本。
我们把刚刚建立的脚本用badbody重新录制来实现,
输入用户名和密码,更换为接口地址
最后再退出登录,
点击红色按钮 ,或者旁边的黑色方块按钮结束录制,并把脚本导出为JMeter的脚本类型。
打开导出的脚本,如图所示:
是不是感觉很方便,很强大。badbody还有很强大的功能,大家可以慢慢去探查一下。
最后前面的例子的脚本,我就放到网盘上面了,大家可以下载看看。地址