利用JMeter进行Web测试(简介适合初学者)(3)

发表于:2013-05-17来源:博客园作者:qileilove点击数: 标签:jmeter
在JMeter中选择选项-函数助手对话框打开函数助手对话框。 选择一个功能_Random。 设定最小值为1。 设定最大值为100。 函数名称设为func1。 点击生成将生成

  在JMeter中选择“选项-函数助手对话框”打开函数助手对话框。

  选择一个功能_Random。

  设定最小值为1。

  设定最大值为100。

  函数名称设为func1。

  点击生成将生成一个引用字符串${_Random(1,100,func1},在需要的请求参数中拷贝该字符串即可。

  其中函数名称用来在引用中作区别,即我们可以设定不同的名称在不同的地方引用同一个函数的功能

  例如:我们生成了两个串${_Random(1,100,func1)}、 ${_Random(1,100,func2)},在添加图书的请求中,我们在bookName的参数值中引 用${_Random(1,100,func1)},在bookConcern的参数值中应用${_Random(1,100,func2)},见截图, 这样测试运行时不同的线程将产生不同的bookName和bookConcern。

  参数化设置-CSV Data Set Config(1)

  在线程组上点击右键选择添加-配置元件-CSV Data Set Config,打开CSV Data Set Config。

  Filename文件名:即参数化要引用的文件名。这里是d:\number.txt

  File encoding文件编码:可以不填。

  Variable Names(comma-delimited)变量名(用逗号分割):多个变量可以引用同一个文件,用逗号分割。这里是num1,num2

  Delimiter(use ‘\t’ for tab):参数文件中多个变量值的分隔符,\t表示用tab键分割,默认是逗号。

  Recycle on EOF?:结束后是否循环?默认是True.

  Number.txt文件内容见截图。

  参数化设置-CSV Data Set Config(2)

  在添加图书的请求中,我们在bookName的参数值中引用${num1},在bookConcern的参数值中应用${num2},见截图,这样测试运行时不同的线程将产生不同的bookName和bookConcern。

  动态数据关联

  在HTTP请求的参数中经常会遇到一些参数的值是从服务器相应的动态数据,这些数据需要进行关联才能使得每一次请求都能成功得被服务器接受,在JMeter中采用正则表达式提取器来获取这些动态的数据。

  正则表达式允许用户从服务器响应中获取数据,作为一个后置处理器,正则表达式提取器会在每一个请求执行后再执行,正则表达式提取请求的参数值,产生模板字符串,并将结果保存到给出的变量中。

  动态数据关联(1)-正则表达式提取器

  在HTTP请求的参数中经常会遇到一些参数的值是从服务器相应的动态数据,这些数据需要进行关联才能 使得每一次请求都能成功得被服务器接受,在JMeter中采用正则表达式提取器来获取这些动态的数据。比如我们想要获得从服务器相应的TOKEN,就可以 使用下面的正则表达式提取器。

  使用时就可以使用${token_g1}来表示获取到的TOKEN值。如下图:

  使用命令行运行JMeter脚本

  JMeter -n -t my_test.jmx -l log.jtl

  -n告知JMeter采用非图形化运行JMeter脚本

  -t指定要运行的脚本文件

  -l指定保存执行结果的文件名

  执行命令前要检查当前目录是否是%JMeter_Home%\bin 目录;

  如果 JMeter 脚本不在当前目录,需要指定完整的路径;如果要把执行的结果保存在其他地方也要指定完整的路径。

  利用XSLT分析JMeter结果文件(1)

  将结果文件的扩展名改为xml,例:将log.jtl改为log.xml。

  在log.xml的文件头

  中添加

  使之变成

  其中href指定xsl文件的路径,如果与xml文件在同一目录,则只写文件名即可,否则要写明详细路径。

  利用XSLT分析JMeter结果文件(2)

  将修改后的xml文件用浏览器打开即可得到统计结果

  JMeter中进行分布式测试

  作为一个纯 JAVA 的GUI应用,JMeter对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心, 甚至还会引起JAVA内存溢出的错误。不过,JMeter也可以像 LoadRunner 一样通过使用多台机器运行所谓的代理来分担负载产生器自身的压力,并借此来获取更大的并发用户数,我们只需手动配置一下即可。

  1、在所有期望运行 JMeter作为 负载产生器的机器上安装JMeter,并确定其中一台机器作为 控制器,其他的机器作为 代理。然后运行所有 代理 机器上的JMeter-server.bat文件—假定我们使用两台机器172.20.80.47和172.20.80.68作为 代理;

  2、在Controller 机器的JMeter安装目录下找到 bin 目录,再找到 jmeter.properties 这个文件,使用记事本或者其他文字编辑工具打开它;

  3、 在打开的文件中查找“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”。其中的 127.0..0.1 表示运行JMeter代理的机器,这里需要修改为“remote_hosts=172.20.80.47,172.20.80.68”;

  4、保存文件,并重新启动控制器机器上的JMeter,并进入启动 ->远程启动菜单项。就会看到我们刚才添加的两个代理的地址,选中即可运行,如果想同时启动所有代理,选择远程全部启动即可。

  要进行分布式测试代理机器上需要添加环境变量,即添加用户变量JMETER_HOME=d:\jmeter,系统变量中的path中添加d:\jmeter\bin(假设jmeter放在d盘根目录下)。

  OK 简单的介绍到此 希望大家多动手练 才是王道~

原文转自:http://www.blogjava.net/qileilove/archive/2012/04/09/373628.html