Posted on 2006-11-10 23:18
Jackei 阅读(14063)
评论(57) 编辑 收藏 网摘 所属分类:
04.软件性能测试18.开源技术 & 开源文化
JMeter是一款在国外非常流行和受欢迎的开源性能测试工具,像LoadRunner 一样,它也提供了一个利用本地Proxy Server(代理服务器)来录制生成测试脚本的功能,但是这个功能并不好用。所以在本文中介绍一个更为常用的方法——使用Badboy录制生成 JMeter 脚本。
简单的介绍一下Badboy。Badboy是一款不错的Web自动化测试工具,如果你将它用于非商业用途,或者用于商业用途但是安装Badboy 的机器数量不超过5台,你是不需要为它支付任何费用的。也许是一种推广策略,Badboy提供了将Web测试脚本直接导出生成JMeter 脚本的功能,并且这个功能非常好用,也非常简单。你可以跟着下面的试验步骤来迈出你在开源世界的第一步。
1. 通过Badboy的官方网站下载Badboy的最新版本;
2. 安装Badboy。安装过程同一般的Windows 应用程序没有什么区别,安装完成后你可以在桌面和Windows开始菜单中看到相应的快捷方式——如果找不到,可以找一下Badboy安装目录下的Badboy.exe 文件,直接双击启动Badboy;
3. 启动Badboy,你可以看到下面的界面。

在地址栏(图中红色方框标注的部分)中输入你需要录制的Web应用的URL——这里我们以http://www.yahoo.com 为例,并点击GO 按钮开始录制。如果你用过LoadRunner之类的商业工具,对于这个操作一定不会陌生吧 ^_^
4. 开始录制后,你可以直接在Badboy内嵌的浏览器(主界面的右侧)中对被测应用进行操作,所有的操作都会被记录在主界面左侧的编辑窗口中——在这个试验中,我们在Yahoo的搜索引擎中输入 JMeter 进行搜索。不过你将看到,录制下来的脚本并不是一行行的代码,而是一个个Web对象——这就有点像LoadRunner的VuGen中的Tree View视图;
5. 录制完成后,点击工具栏中的“停止录制”按钮,完成脚本的录制;
6. 选择“File -> Export to JMeter”菜单,填写文件名“login_mantis.jmx”,将录制好脚本导出为JMeter脚本格式。也可以选择“File -> Save”菜单保存为Badboy脚本;
7. 启动JMeter并打开刚刚生成的测试脚本。
也许你已经急不可待的准备开始尝试着用JMeter处理你手头的工作了^_^ 在下面的几节,我将继续为大家介绍如何在 JMeter 中完成一个测试场景的设置和JMeter测试结果分析入门,以及如何参数化JMeter脚本。
当然,如果你的动手能力很强,几分钟你就可以熟悉这些内容。不过还是请允许我一点点由浅入深的来帮大家完成“JMeter从入门到精通”的过程。我相信在这个过程中你将会了解到更多有关性能测试的知识和经验,甚至包括一些LoadRunner等商业测试工具所无法提供给你的经验。
点击这里下载本文中用到的示例脚本,其中包括
yahoo_search.bb Badboy的脚本文件,可以直接用Badboy打开
yahoo_search.jmx JMeter 的脚本文件,可以直接用 JMeter 打开
Badboy官方网站 http://www.badboy.com.au/
JMeter官方站点 http://jakarta.apache.org/jmeter/
P.S. 这样短短一篇小文章,从开始写到整理示例脚本,到最后发布,两个半小时飞快的过去了。希望转载的朋友也能体会到创作的辛劳,尊重别人的劳动成果。
点击这里了解创作进度,查看文章目录,或浏览已经完成的文章。
Feedback
我通过截包工具分别截取,JMeter脚本(badboy导出为JMeter脚本格式)和手动操作。
执行完JMeter脚本后,只截取了37个包,
手动执行相同操作后,截取1089个包
通过对比发现,JMeter脚本只是请求了URL,并没有请求图片
手动操作除了请求URL,还请求了页面上得所有图片
要是这样得话,JMeter脚本就和实际操作情况差很多(我执行的操作是访问4个静态页面)
我不知道,是不是我badboy导出为JMeter脚本时,有什么地方操作的不对
还是badboy导出为JMeter脚本就是这样的。
@七夜
嗯,你检查一下是否在 HTTP Request 页面中选中了 Retrieve All Embedded Resources from HTML Files 这一项。在 JMeter 的 User Manual 中对与该项是这样描述的:
Tell JMeter to parse the HTML file and send HTTP/HTTPS requests for all images, Java applets, JavaScript files, CSSs, etc. referenced in the file. See below for more details.
所以,只有当你选中了这项之后,才会下载 non-HTML resource。
是没有选中,选中以后问题就解决了。
谢谢,Jackei !
看了我还是太粗心,要是仔细一点,就可以自己解决了。
@七夜
You are welcome.
什么时候有了心得体会,也跟大家一起分享啊 ^_^
@Zhangyc
也希望大家有这方面的经验都来一起交流和分享,一个人的力量比较有限,众人拾柴才火焰高嘛 ^_^
@李洪生
JMeter 在这方面做的比较差,没有明确的提供监控服务器资源的工具,所以要自己想办法监测了——通过被监测对象自带的方法,或者其他第三方工具。
@Rock
.NET 应用方面不熟,有熟悉的同行帮忙回复一下吧。
Hi, 陈雷:
谢谢你的文章,受益匪浅。
我有两个问题,请您给我些建议:
1, 我现在正准备做功能测试,我的想法是只用Badboy来做功能测试,请问这种做法有什么缺点?
2, 如何查看Badboy生成的测试脚本的源文件呀?
谢谢
dllcy
@dllcy
1, 我现在正准备做功能测试,我的想法是只用Badboy来做功能测试,请问这种做法有什么缺点?
|--> 你应该考虑 Badboy 是否适合你们的项目的需要,是否可以解决你在测试自动化过程中遇到的问题。没有哪个工具是十全十美的,总有些这样那样的问题会突然冒出来。所以要结合具体的项目来考虑;
2, 如何查看Badboy生成的测试脚本的源文件呀?
|--> 可以直接用 Badboy 打开啊。
Hi, 陈雷:
谢谢你的解答。
我马上要去开会,有问题改日再问。
Hi, 陈雷:
早上好!
我还是想问一下第二个问题,我昨天没有说清楚,我想查看一下Badboy的录制脚本的源代码,我的目的是将来能够通过修改源代码来维护TestCase,请问Badboy能做到吗?
据我所知 Badboy是无法查阅脚本的。所以楼上的目的不能达到。
bodboy生成的脚本如果参数有中文,那么到出jmeter文件后将是乱码,请问有好办法解决吗?
Hi, 陈雷:
的确Badboy1.0的确没法看源码,2.0中可以通过xml文件看。
有谁清楚如查在JMETER里加一个在BADBOY里录制的脚本啊?请详细写一下。我测的是.NET的程序。不懂怎么用Jemeter哦
请问一下谁知道,那里不载jmeter?我下载了的怎么没有安装的啊?我对这个一点都不懂,那位同仁帮帮我啊?jmeter怎么和tomcat联系起来呢?
《JMeter从入门到精通》之一以后的文章呢
期待中,没地方找
很有收获,对你的努力和奉献精神很感动!
以后要向你好好学习!
非常感谢,最近也在研究Jmeter...
很有用的一篇文章
但是为什么
Badboy - Individual license USD $45
单个License也要收钱?因为公司对这个很敏感....
但是我看Badboy License Terms明明写着
『 (c) Are employed in a Corporation where The Software is installed on NOT MORE than FIVE Computers used by the Corporation.』
没弄懂...
@白色的蓝
就是说如果在一家公司内安装不超过5台机器,是不用收费的。
Hi Jackie,
我问一个比较弱的问题
Badboy录制的脚本放导入到Jmeter不能直接回放吗;
@allenchan
应该是可以直接回放的。如果回放出问题,要看具体什么问题具体分析了。
hi,jackei,
某些步骤需要一个key文件来加强安全性,而这个key每次访问是随机的而且要验证,包括session ID,也是随机的,录制完的脚本在jmeter模拟用户测试的时候会出现问题,请求不成功,请问这个随机key产生的问题在jmeter中如何解决呢?非常感谢。
@roven
如果你的key是服务器端返回的,可以添加jmeter 的 cookie manager 组件来自动关联。或者你直接使用badboy来录制脚本,会自动处理这些东西的。
前两天看到你的博客,发现你听厉害的。
看了你的性能测试部分,想问问。
我现在想从功能测试转向性能测试,但不知道需要哪些了解哪些知识,及怎样进行一个系统的学习,请教一下。
请问,用badboy录制了一段脚本,但是我录制的应用里有sessionid,用户退出后,这个sessionid就失效了。然后我回放的时候就会提示我“会话已过期, 请重新登录“
用loadrunner的话是可以关联的,不知道用badboy应该怎么实现?
作者好好人啊,我刚学习JMETER
希望以后有不懂的地方可以请教你
新手请教个问题:) 我用JMeter录制一个使用RTMPT协议的application,数据传输的格式是AMF, 但得到的script是乱码, 怎么办呀? 用loadrunner录制的东西也不全。 痛苦中。。请Jackei和其他高手们帮帮忙。谢谢!
请问我录制的时候怎么让jmeter显示图片呢?
怎么让jmeter录制https的请求呢?
想问大虾2个问题
1.Jmeter能象telnet一样,登陆,并执行一些命令吗?
2.当Jmeter测试结束后,能获得其退出的标识位吗?(或者说当测试结束,就去做某件事情)
@网络小虾米
你的问题太深奥了,没有研究过 呵呵
去JMeter的用户组看看吧。
to:陈雷。很感谢你的文章,我现在也开始学习jmeter测试了。我测试的环境是net的。在录取完脚本,保存为jmeter文件时给出以下提示。请问这个提示是什么意思,如果用jmeter运行后,会出现什么结果。是不是有些运行不了?
那还能用 badboy录制脚本,再用jmeter运行吗?
Export Warnings
---------------------------
Your script contains items which may require adjustment after Export:
1. Your script accesses multiple frames or windows. JMeter Assertions only search the most recent Response rather than the Top or All Frames.
You may need to adjust the position of these Assertions so that they check the correct responses.
2. Your script contains items of type 'Message Box' which are not supported by JMeter and were not exported.
运行 jmeter时,给出错误提示:
Response code: 500
Response message: Internal Server Error
这样的问题怎么解决?
@彩泡沫
第一个问题其实warning信息已经说的比较明白了,不过怎么处理我的确不知道:)
如果是.NET的环境,建议可以试用一下VSTS 2008里面附带的 LoadTest,对.NET应用支持比较好。
第二个问题建议看看error log里面有什么内容,请开发帮忙定位一下问题。
谢谢 Jackei及时回答。
后来我看了一下badboy,可以进行录制回放,打算使用这个做正式平台更新时的验证测试。
请问一下,这个工具有没有象selenium中的verifyTextPresent功能?
因为正式平台的系统都把错误给屏蔽掉了,只在界面给出一行提示信息如:页面问题,请与管理员联系。 我怎么才能把页面中出现的这行字给捕捉到,形成一个报告。
如果这个捕捉不到,等回放后,给出的全部是成功的报告。
也请使用过badboy的朋友们帮解答一下。badboy中文资料我能找到的不多。谢谢各位了
Hi,Jackei!我最近在练习web性能测试,主要是服务器测的负载,用了VS2005简单地模拟了批量用户的操作(只用top命令跟踪了资源消耗状况),由于VS不是开源工具,所以重开始着手JMeter的使用,由于自己对web开发方面的知识空缺,测试中总是底气不足,不能很好地对测试过程中的现象和结果进行全面分析,请问需要充电哪方面的知识,不胜感激!!
--引用--------------------------------------------------
程序员: bodboy生成的脚本如果参数有中文,那么到出jmeter文件后将是乱码,请问有好办法解决吗?
--------------------------------------------------------
我也有同样的问题,提交FORM增设enctype="multipart/form-data"时,脚本中的中文会是乱码,请问要如何解决??谢谢!急切。。
Hi 你好!在搜索jmeter相关资料的时候无意间进入你的blog,想请教一个问题。
我是在Linux环境下使用Jmeter non-gui 模式进行性能测试。你知道,当我们用gui时,在summary report或是aggregate report里都能看到Throughput的值, e.g. 120/sec etc.
请问:当我用non-gui的方式运行test plan时,如何能拿到这个参数的值呢?我查过生成的log等,似乎都没有看到,请不吝赐教。谢谢!
博主你好,《JMeter从入门到精通》之二之三没找到呢,急切等着看