一直接触LR比较多,这阵子突然想了解一下开源的性能测试工具,无意中接触到了Jmeter+Badboy,这两款工具对于想进行性能测试,但又对LR高额的商业费用望而止步的小公司可谓是再适合不过了。
自已小结一下:
JMeter是纯Java编写的功能与性能测试工具,但其录制脚本过于笨拙复杂,成为使用者的诟病。Badboy是用C++开发的,被用于测试和开发复杂的动态应用。 它提供了强大的屏幕录制和回放功能,同时也提供了丰富的图形结果分析功能。只要不用于商业目的就可以免费使用。因此这两工具的结合,就成为了绝配。你可以 用Badboy录制脚本,然后将录制的脚本导出为JMeter格式的脚本,最后将该脚本导入到JMeter,借助于JMeter强大的测试功能模拟大量的 虚拟用户,进行复杂的性能测试。
1. 安装Badboy
下载地址 http://badboy.com.au/download/index,按网页提示输入name/email/company等后下载标识为recommended的那个版本。
这是一个可执行程序,下载之后双击,根据安装向导安装。
2. 安装Jmeter
http://jmeter.apache.org/选择Download Releases --点击下载Binary: apache-jmeter-2.7_src.zip(注意zip包才是适合windows系统的,其中Source是可以看到源码的包,如果不需要查看源码可以只下载Binary下的zip包。)下载后解压;
安装Jmeter需本地安装JDK及配置好环境变量,详细配置如下:
解压apache-jmeter-2.7_src.zip至C盘c:\apache-jmeter-2.7目录下,桌面选择”我的电脑“(右键)--高级--环境变量,在”系统变量“---”新建“,在变量名中输入:JMETER_HOME,变量值中输入:c:\apache-jmeter-2.7,再修改CLASSPATH变量,变量值中添加%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar; 然后确定。
然后到Jmeter\bin下运行jmeter.bat即可打开Jmeter
3. 用Badboy录制脚本并到处为JMeter格式的脚本
在开始菜单中启用Badboy,点击工具栏上的红色圆饼按钮,开始录制,然后在URL框中输入你要测试站点的URL。随便点击几个链接,然后点击工具栏上的黑色方框按钮,停止录制。最后点击 File –>Export to JMeter… ,将录制的脚本导出为Jmeter格式的脚本。
4. 启用JMeter,导入Badboy录制的脚本,并设置测试计划,开始测试
然后点击 文件 –>打开,在文件管理器中选择你刚导出的Badboy录制的脚本。
Jmeter和LR一样有着录制脚本、参数化、检查点、集合点、设置关联、场景等。
1,Jmeter参数化:
先准备一个dat文件保存在本地,然后选择”选项“---函数助手---__CSVRead--输入dat文件保存的路径如C:\test.dat,点击生成并复制${__CSVRead(c:\test.dat,)}
找到需参数化的页面--将复制的${__CSVRead(c:\test.dat,)}粘贴到参数化值的位置。
2,检查点:
检查对对象设置:右键点击某页面---->添加---->断言---->响应断言
检查结果:添加一个断言结果,右键点击页面---->添加---->监听器---->断言结果
还可以再添加一个“查看结果树” 右键点击我们的“登录”页面---->添加---->监听器---->查看结果树
3,集合点设置:
右键点击 step1---->定时器---->Synchronizing Timer,这样子就添加了一个“集合点”,如果发现集合点的位置不对,可发随需要插入到相应位置。
4,关联:
方法一,从前一个请求中取,用正则表达式提取器。
具体方法,在需要获得数据的请求上右击添加一个后置处理器-->正则表达式提取器
引用名称即下一个请求要引用的参数名称,如填写title,则可用${title}引用它。
正则表达式中()括起来的部分就是要提取的。.代表任意字符,*代表出现任意次。
模板,用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$2$,$3$等等,表示解析到的第几个值给title。
匹配数字,0代表随机,-1代表所有,其余正整数代表将在检查的内容中,第几个匹配的内容提取出来。
方法二,用xpath从前一个请求中取。这种形式比较适合于返回为xml片段的情况。
在需要获得数据的请求上右击添加一个后置处理器-->xPath Extractor。
引用名称即下一个请求要引用的参数名称,如填写body,则可用${body}引用它。
XPath query,即xpath的表达式,要符合xpath的语法。