一、用户自定义变量
当录制的脚本IP或者其他地方发生改变时,我们需要手动修改所有录制的步骤,但添加了用户自定义变量后,我们只需要修改变量的值。按照步骤:线程组→添加→配置元件→用户自定义变量。我们添加了一个名为IP的自定义变量,如图
然后可以修改录制的脚本中,服务器名称或IP一栏,填写${IP},如图。这样我们就添加好了一个自定义变量。
二、文件参数化
当做大量用户连接系统的时候,用户参数可能不一致,因此我们需要使用文件参数化的知识点,来模拟大量不同用户,请求或提交不同参数。
文件参数化有两种方式实现:
- 函数助手方式
自己定义一个txt文件,内容为自己想要模拟的不同用户的参数。我的第一列代表bug名字,第二列代表提交者姓名,中间用逗号隔开。
在JMeter中点击,选项→函数助手对话框→功能选择_CSVRead→按照下图红框中的格式进行填充值→点击生成→复制生成的字符串
将复制好的字符串粘贴到我们前面录制好的提交bug页面的脚本中,如图。
将线程组线程数修改为5,再一次运行脚本,会发现提交了5个不同的bug,而bug名称和提交者姓名是我们在txt文件中已经设定好的。 - csv数据文件设置方式
右击线程组→添加→配置元件→CSV数据文件设置→填写文件名和变量名称→在提交页面根据自己设定的变量填写,格式为${变量名}→运行脚本和第一种方法的结果相同
三、关联
关联的意思是上文有一些变量在下文当中被使用,比如浏览器返回的值,在后面的页面中被使用,既发生了关联关系。
loadrunner与jmeter关联的不同之处:
- 在loadrunner中关联函数是写在获取变量值的页面的前面;
在jmeter中关联函数是写在要获取变量值的页面的后面 - 在loadrunner中关联函数是注册函数
在jmeter中我们使用正则表达式提取器来进行关联
下面通过一个小实验来学习关联:
3. 使用badboy录制了一个在freebug上添加bug并解决bug的脚本。录制完后,在freebug上现在只有红色框的一个bug。
4. 在JMeter中运行该脚本,发现不能运行成功。修改重定向后,显示成功,但freebug界面只显示提交bug,并没有解决bug(与录制的步骤不一样)。
5. 查看结果树后发现,提交bug后会返回一个bug的id值,后面根据此id值进行访问其他页面。所以从提交后,就需要一个关联函数,使得后面的步骤能跟它关联起来。
在http://localhost/bugfree/index.php/info/edit这一步右击→添加→后置处理器→正则表达式提取器。其中引用名称为自己定义、正则表达式根据查看结果树那里,我们设置为/bug/(.+?)';
、模板为$1$
6. 修改后面步骤中的数字id为${bugid}
,并把乱码的地方改正确。此时再跑一边脚本,就能的到跟录制时候一样的结果了。
关于脚本乱码导致提交错误的解决办法
- 将编码设置为utf-8,将提交的参数修改正确,如图。
- 直接修改JMeter的参数。打开JMeter安装目录D:\Program\apache-jmeter-5.0\bin\jmeter.properties 将1062行设置为
sampleresult.default.encoding=UTF-8|UTF-16|ISO-8859-15|US-ASCII
- 添加后置处理器。右击→添加→后置处理器→BeanShell PostProcessor→填入
prev.setDataEncoding("utf-8")
。如图。