JMeter脚本回放与关联处理(上)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011466469/article/details/88399559

需求背景:脚本录制成功后,要回放验证脚本是否响应正确,即录制成功。如果想查看不是录制的数据信息又该怎么做?

以天气预报网址为练习对象:http://www.weather.com.cn

web网址有定位所在城市,例如我点击查看了深圳的天气,回放脚本想查看上海的天气应该怎么做?

1、通过JMeter的代理服务器录制www.weather.com.cn脚本,回放结果(通过查看结果树选择browser模式查看响应结果):

2、上面的回放动作正确,说明录制脚本是成功,那么接下来就要对脚本分析,怎样才能查看其它城市的天气了?

tips:jmeter在解析web响应的中文时,有些地方会乱码,这时建议修改jmeter配置文件jmeter.properties中的编码设置:#sampleresult.default.encoding=ISO-8859-1 去掉注释,把默认编码修改成utf-8保存,再重启jmeter

3、如下图所示:录制的脚本中其它参数基本没有变化,只有path部分是不同的,也都是get请求:

4、回过头来看weather首页在Document模式下的响应结果,会发现每个城市的url都已经定义好了,那么是不是有思路了?

5、关联处理,这里介绍正则表达式提取器Regular Expression Extractor,所以有要求对正则表达式的掌握:

6、正则表达式的匹配规则,简单介绍如下:

Name:Regular Expression Extractor正则表达式提取器;

Comments:注释;

Apply to: 提取范围:

Main sample and sub-samples:主事务、子事务(请求的sampler)

Main sample only:仅作用于主事务

sub-samples only:仅作用于子事务

Jmeter variable:Jmeter定义的变量

Field to check:检查域,从哪个位置去查找匹配的数据;

Body:响应内容,不包括标题

Body(unescapaed):所有body响应的,html标签转义的,

Body as a document:响应主题的文本

Reponse Headers::响应头信息,非http样本则不存在

Request Headers:请求头信息,非http样本则不存在

URL:请求路径,

Response Code:响应code,如200、302、500等

Response Message:响应消息,如ok

Reference Name:变量名称,替换名称,可能出现的是一个变量数组,如此处输入name,如果匹配出N个name,那么name_matchNr=#数字, name_g#=111,代表name匹配的第一个值

Regular Expression:xpath提取路径;

Template:模板,$1$ 取第一个匹配的, $2$ 取第二个匹配的,如果提取规则有多个参数,则逐一匹配; $0$匹配任意值;

Match No(0 for random):匹配规则,0随机,-1全部,1默认第一个

default value:默认值,如规则没匹配上,使用默认值;

Use empty default value:使用空值;

tips:提取规则的内容用小括号(.+?),注意左右边界的,如有需要转义的,就用反斜杠\转义,如\"name\"(.*?)\"

.表示开始查找

+/*通配符,匹配任意值;

?找到为止,就不再查找,由右边界决定;

/d存数字查找,如(\d{4}?),数字,取四位即止;

7、上面介绍正则表达式提取器的使用规则,接下来就要使用,一般调试匹配规则在察看结果树的正则匹配模式下:

8、所以正确提取城市代码的正则表达式:weather1d/(.+?).shtml#,定义她的变量名,取值模版、匹配值

tips:这里要批评下自己,在jmeter中应用变量的格式是${weatherCode},而非其他地方的{weatherCode}\{{weatherCode}}

9、所以关联技术下,实际是一个参数化的过程:

10、所以在这里抖个小机灵,每次运行脚本时,除了不同的城市代码,同时也把城市名称也取出来,运行结果显示如下:

tips:城市名称正则表达式:weather1d/${weatherCode}.shtml#search" target="_blank">(.+?)</a>

猜你喜欢

转载自blog.csdn.net/u011466469/article/details/88399559