jmeter学习笔记

因为要对之前做的wap网站进行压力测试,所以今天去下了一个jmeter,还找了不少相关资料,发现网上的教程已经很完备,常用的基本功能都讲到了,还有专门的用户手册和FAQ,下面按照jmeter的学习顺序,列出相应的网址,最后加上自己的一点心得。
1.jmeter下载
jmeter是apache的一个项目,可以在这里下载:http://jakarta.apache.org/jmeter/index.html
下载回来的压缩包里面有官方文档,不过是英文的,国内已经有人进行了翻译,在这个网址:http://wiki.javascud.org/pages/viewpage.action?pageId=5493
2.jmeter的基本操作
下载回来之后,按照这个网址的介绍开始一个简单的测试 http://www.testage.net/AutoTest/Opentest/200602/281.htm
3.jmeter高级应用
简单的web网站测试是自己手动建立一个http请求,但是如果是一系列的操作,则必须使用脚本录制功能。jmeter提供了类似LoadRunner等商业测试工具的脚本录制功能,原理都是相同的:jmeter创建一个代理服务器,然后你在浏览器中将代理服务器设为jmeter的代理服务器,这样所有的页面访问都会经过该代理服务器,jmeter就可以对其中的访问信息进行记录了,详细的使用方法,可以看这两篇文章
http://www.matrix.org.cn/resource/article/2006-02-22/JMeter+tips_44226.html
http://www.testage.net/AutoTest/Opentest/200602/282.htm
其中也涉及到了一些定时器的使用,那样可以更准确的模拟用户操作
4.jmeter的其他测试功能
jmeter原本只是用来对web服务器进行压力测试的,但经过不断的扩充已经可以用于多种测试了,比如数据库、jms等等,这篇文章对jmeter各个测试功能作了简单介绍,详细的可以参考手册
http://www.oioj.net/blog/user1/2826/archives/2006/351695.shtml
5.用jmeter进行分布式测试
如果单纯在一台机器上模拟多个用户并发,由于性能限制不能模拟太多的用户,这时可以用jmeter的远程测试功能同时启动多台机器进行模拟,以取得更加真实的效果。但是,据jmeter的官方文档所述,似乎普通一台pc作controller并不能带太多的agent,特别是你以图形界面显示结果的时候,因为那样非常耗资源。可以不用图形结果而改用日志形式,但是通常一个controller也只能带个三四台agent(很不爽),因为所有测试结果都要汇总到controller这边来,负荷很大
http://www.cnblogs.com/jackei/archive/2006/09/14/504638.html

最后加上一些自己的心得:
1.如何测试wap网站
测试wap本质上是和web一样的,都是经过代理服务器进行脚本录制,不过在我使用jmeter的过程中发现一个问题,在通过jmeter的http proxy server访问tomcat上的一个wap站点时,一些关于wap页面的头信息被改变了,当你用winwap等客户端模拟器访问时,不能识别出是wap页面,也就是说,代理服务器把wap页面当作web页面转发给客户端,导致无法打开。我暂时没有找到解决方法,权宜之计是客户端换成openWave,这个客户端可以直接访问web类型的页面,反正我们的目的只是进行压力测试
2.如何模拟不同用户
现在的网站都是要先进行用户验证才能进行后续操作,如果单纯按照上面的脚本录制方式,那么模拟用户操作时,输入的用户名密码都是相同的,显然不可行,因为除了第一个用户其他都不能登录了。我们可以使用jmeter的“自定义用户变量”来模拟多个用户
在jmeter手册有提到一个组件叫CSV Data Set Config,专门用于从文本读入信息,保存到变量中,在其他组件中可以引用该变量。具体步骤如下:
1.新建一个文本文件,作为例子,文件内容如下:
aaa,111
bbb,222
这里用英文逗号为分隔符,也可以用其他为分隔符,在CSV Data Set Config中可以设置。
2.在你的测试计划中添加一个CSV Data Set Config,然后填写若干属性,其中,文件名是指保存信息的文件目录,可以相对或者绝对路径;文件编码一般可以不填,使用操作系统默认编码;变量一栏填入“user,pass”,表示两个变量名;分隔符一栏填入“,”(也是默认值),对应上一步文本文件里的分隔符;另外两个选项是问你是不是循环读入,因为CSV Data Set Config一次读入一行,分割后存入若干变量中交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入
3.在需要使用变量的地方,比如之前记录的操作脚本中,需要提交的表单字段包含用户名密码,我们就可以用${变量名} 的形式进行替换,例如${user}和${pass}
4.附带说一下,通常有用户认证的地方都要用到cookie或者session,那么最好在测试计划中加入一个http cookie 管理器,直接添加一般不需要任何设置,否则可能会出现登录失败(在测试结果中,如果看到多次请求不同页面返回的字节数却是相同的,那多半是登录失败了)
5.最后,运行线程组即可看到效果,如果失败,那么检查一下文本的路径,变量大小写等等,手册上说使用相对文本路径时,要以测试配置文件(默认是jmeter的bin目录)的目录为参考,但是我试过似乎不行,换成绝对路径就可以了
6.详细的情况可以参考手册,不过中文版的似乎没有翻译完全,还是最好看英文吧 

你可能感兴趣的:(测试,服务器,脚本,csv,loadrunner,WAP)