0 JMeter 关联
平时的大部分场景, 后一个发往服务器的请求中的参数往往与服务器之前返回的请求内容相关,举个例子, 例如发帖, 之前录制的脚本中, 是将请求发帖的模块地址记录下来, 回放时, 直接去请求固定的地址来完成发帖操作的。这里面有一个隐藏问题, 可能会导致后续回放脚本时候不成功:当请求发帖的模块被服务器删掉的时候,我们就访问不到脚本中记录的地址,脚本也就不能回放成功了。
解决这个问题, 就需要用上 JMeter 中的关联。获取到服务器返回内容中的模块地址, 脚本自动选取其中某个模块地址,再进行发帖操作, 这样脚本就不会像之前一样依赖固定的模块地址就行发帖,再模块不存在的时候回放失败了。JMeter 中通过后置处理器来完成关联。
1 后置处理器
后置处理器就是 JMeter 中用来关联服务器的相应内容与脚本中请求的组件。
通过之前发帖的脚本来做试验, 在这个例子里面使用 JMeter 中一个叫正则表达式提取器后置处理器。
在发帖的脚本中, 登录之后的跳转请求, 如图所示返回了论坛上所有的模块地址。在这个请求中, 添加一个正则表达式提取器组件, 将所有的模块地址通过正则表达式提取出来。
模块地址格式如下:
JMeterLoadrunner
通过模块地址格式分析, 所有的模块地址只有 show 后面的数字不同, 而之前脚本中的 step2 中的第一个请求, 就是给模块发送一个 Get 的 HTTP 请求, 后续再在此请求基础上进行的发帖操作。
如图所示, 这个请求的地址就是一个模块地址, 我们只需要在后置处理器中将服务器返回的地址提取,再替换了这个请求中的地址即可。
如图所示,在正则表达式提取器中设置对应的参数, 引用名称是保存提取结果的变量。模版则是告诉 JMeter 在获取的结果中, 需要的是第几列数组。在这个正则表达式中, 只取了一列数据所以模版为 $1$, 如果要获取第二列则是 $2$,以此类推。匹配数字是当通过正则表达式匹配到不只一组数据时, 告诉 JMeter 我们需要的是第几组数据。
设置完成之后, 就可以在 step2 的 Get 请求中,引用这个变量。
如果要查看 moudleId 的值, 可以在线程组中添加一个 Debug Sampler,再运行脚本,就可以在结果树中看到变量的值。
2 JMeter 参数化
1. 用户名和密码参数化
有时候在使用 JMeter 做性能测试, 就需要模拟多个的账户操作, 这时候就需要将账户参数化。
JMeter 中使用配置原件进行参数化, 这里我们使用 CSV数据文件设置组件来做参数化。
文件名就是存储用户账户的文件,其中文件的格式如下:
username,password
username2,password
JMeter 中默认使用逗号对不同列之间的数据进行分割。变量名称与文件中数据的列数一一对应, 多了或者少了都会取不到值。
2. 发帖内容参数化
JMeter 中提供了一些函数供我们调用,为了将发帖内容参数化, 我们可以用到 __RandomString 这个随机生成字符串的函数。
这个函数有三个参数, 第一个参数是随机生成的字符串你的长度, 第二个参数是字符池, 随机生成的字符串将会从第二个参数中选择字符生成最终的字符串, 第三个参数则是保存随机生成的字符串变量。这个变量我们也可以在结果树中查看到。将这个函数设置成发帖时的标题。
运行脚本,结果如图
3.访问地址参数化
访问地址涉及到了每一个请求, 如果脚本需要访问的服务器地址改变, 脚本需要更改每一个请求的地址, 非常麻烦, 所以最好将脚本中的访问地址设置成用户变量,之后修改地址也只需要将参数的值进行变更即可。
之后只需要在请求中通过 $ $来引用变量即可。
领取专属 10元无门槛券
私享最新 技术干货