admin 管理员组文章数量: 887017
2024年3月1日发(作者:access数据库教程网站)
Jmeter学习概要
1. Jmeter简介
Apache Jmeter是一个100%的纯java桌面应用,用于压力测试和性能测试。Jmeter最早是为了测试Tomcat的前身JServ的执行效率而诞生的,主要是针对web的压力和性能测试,但后来扩展到其他测试领域。从下面的图中我们可以看到:Jmeter可以用于测试FTP、HTTP、RPC、JUNIT、JMS、LDAP、WebService(Soap) Request以及Mail和JDBC(数据库压力测试)
另外,JMeter能够对应用程序做衰退测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。在知道如何具体使用之前,先说一下JMeter 的主要测试组件:
1. 测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。
2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。
3. 监听器负责收集测试结果,同时也被告知了结果显示的方式。
4. 逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
5. 断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。
6. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。
7. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。
8. 定时器负责定义请求之间的延迟间隔。
好了,简单介绍就到这里!下面是一些有关Jmeter的学习文档和资料的网站
Jmeter官方网站:/jmeter/
Jmeter中文网站(目前只是部分翻译):/jmeter/
2. Jmeter的安装与配置
A. JMeter 的安装
JMeter 的安装非常简单,从官方网站上下载,解压之后即可使用。运行命令在%JMETER_HOME%/bin 下,对于 Windows 用户来说,命令是 (同时会启动一个dos窗口显示一些日志信息)和,建议从启动要更好些,因为在Jmeter运行的过程中可以在dos窗口看到一些错误日志信息。运行前请检查JMeter 的文档,查看是否具备相关的运行条件。对于最新版(即2.2),需要JDK的版本要求是JDK 1.4.2。
B. Jmeter的配置
Jmeter的主要配置文件ties,需要根据不同的测试目的对配置文件做不同的设置。
1. #language=de Jmeter启动后窗口中所使用的语言,默认情况下该行是被注释掉的,因为在Jmeter启动的时候会根据操作系统的语言设置自行设定。对windows中文操作系统来说在Jmeter启动后就是中文界面,如果你想设定为其他语言,将该行注释去掉,在等号后面设定你想设定的语言。
2. =ser xml文件解析器的设定,这个是Jmeter默认的,解析所需要的jar包在%JMETER_HOME%lib下,你可以设置为你熟悉的xml文件解析方式,当然首先你要将所需要的jar包拷贝到%JMETER_HOME%lib目录下。
3. SSL configuration 对于数字化校园项目来说,由于使用了数字安全证书,所以在对软件进行测试前,必须设置此项(下面所指定的java类在%JAVA_HOME%内,如果你使用的jdk为1.4.2,那设置好环境变量就可以了,将%JAVA_HOME%jrebin加入到环境变量的path中,将%JAVA_HOME%jrelib加入到环境变量的classpath中)
er=er
=ol
在生成数字安全证书的时候会生成一个.keystore文件,需要在此指定一下
re=H:/tools/jmeter/jakarta-jmeter-2.2/testPlan/configs/.keystore
在生成数字安全证书的时候会有一个密码,默认为changeit
#The password to your keystore
rePassword=changeit
最好将下面这行的注释去掉,这样如果我们的配置有什么问题可以在日志文件中记录的更清楚些
=all
4. #log_=INFO Jmeter日志记录级别,将该行改为log_=DEBUG这样可以记录更加详细的日志信息。
还有一些其他的设置如:CSVRead configuration、WML Parser configuration等在这就不一一详细说明了(我也还没搞清楚)。
3. Jmeter的应用
下载下来的Jmeter解压后,里面有使用帮助文档(在docs目录下),还有使用样例(在printable_docsdemos目录下),其自带的测试样例都很简单,要想测试复杂的项目还需要自己去摸索。
Jmeter通常被用于测试web服务的压力和性能,因此下面将以一个实际的web测试为例进行详细讲解,里面会讲到变量和正则表达式的使用,相信只要掌握了变量和正则表达式的使用(还有Jmeter自带的函数也要灵活掌握),再复杂的测试用例或测试脚本都不在话下。
下面以“天津武警医学院的教学管理系统”为例来具体讲解
A. 编写测试计划或测试脚本(后面还会介绍如何利用工具来录制测试脚本)
1.1 启动Jmeter,启动后窗口内显示的几乎都式中文,感觉还不错,然后添加一个线程组,如下
在刚开始编写测试脚本时,应将线程数设的少一些为好,如下
然后新建一个文件夹,保存一下测试脚本,如下
1.2 在该线程组里面添加一个“用户定义的变量”测试组件,名称:default variables,变量名与值分别如下
userList userlist/
userPass userlist/
serverConfig configs/
在jakarta-jmeter-2.2bin目录下新建userlist文件夹,然后在userlist内新建与文件,然后在这两个文件中分别写入登录系统的用户名和密码,注意要每行一个且一一对应,如:我的文件内容为
jwadmin
1001300
文件内容为
123
321
1.3 在你所保存的测试脚本(如我的H:toolsjmeterjakarta-jmeter-2.2testPlan )的同级目录下新建configs文件夹(H:toolsjmeterjakarta-jmeter-2.2testPlanconfigs),然后新建文件,并且把在生成证书的时候生成的 .keystore文件也放在这,修改ties文件
re=H:/tools/jmeter/jakarta-jmeter-2.2/testPlan/configs/.keystore
文件内容如下( )
1.4 再加一个“用户定义的变量”组件,名称:commandline variables
变量名称和值分别如下
userList ${__property(userList,,${userList})}
userPass ${__property(userPass,,${userPass})}
serverConfig ${__property(serverConfig,,${serverConfig})}
1.5 加入一个“HTTP信息头管理器”,名称和值为User-Agent Mozilla/4.0 (compatible;
MSIE 5.5; Windows 98),这个对于测试uPortal门户尤其重要
1.6 加入一个“HTTP Cookie 管理器”,这个没什么设置,将每次反复清楚cookies选中即可
1.7 加入一个“仅一次控制器”,然后在“仅一次控制器”的节点下添加“CSV Data Set
Config”用于读取csv文件到变量,filename: ${serverConfig},variable names:
jwglHost,casHost,注意该文件读取的方式是一行一行的读取的,且可以循环读取,当然也可以用它来存放我们的登录用户名和密码
1.8 加入一个“http请求默认值”,服务器名称和ip为${jwglHost}(注意这里就是变量的使用方法),这个就是我们在上一步从csv文件读取出来存放到jwglHost变量中的,协议为http 如下
1.9 加入一个“仅一次控制器”,并在其下加入一个“用户参数”组件,名称:userid,用户_1:${_StringFromFile(${userList})};名称:userpass,用户_1:${_StringFromFile(${userPass})},这里是从我们上面已经定义的属性对象中读取值,为登录做准备。
2.0 加一个“简单控制器”,然后在其下加一个“http请求”,服务器名称或ip为${casHost},即cas服务器的地址,这个请求的是cas的登录页面,注意协议为https,方法为:Post。
2.1 在getlt的http请求节点下加一个“正则表达式提取器”,引用名称:LoginTicket、正则表达式:name="lt" value="(.*?)"、模版:$1$、匹配数字:1。注意此时我们还没有登录,之所以要先访问这个/login的目的式为了提取出cas登录页面里的
name="lt" value="LT-1604-fLK9C0s3tVHthNnmzxZn" />中随机生成的value值,用于下一步的真正登录,没有那个值你将永远无法通过cas认证,如果说表单里面还有其他隐藏文本域,那也应该取出其值以用于下一步登录时使用。 那个值是通过正则表达式提取出来的。
2.2 在${casHost}的 http请求下加一“正则表达式提取器”,用于提取登录后,服务器传给客户端的ticket(证书编号),引用名称:ServiceTicket、正则表达式:ticket=(ST-[0-9]+-.*)",${casHost}的 http请求方法为POST
2.3 加一个“http请求”,名称:jw_、服务器或ip:${jwglHost}、协议:http、,方法为:Post、路径:/,这就是我真正要测试的web请求。
2.4 加一个“相应断言”,用于测试是否得到我们想要的页面,在要测试的模式里面填写:欢迎您,这样如果返回的是且里面包含“欢迎您”,则说明成功登录且得到了我们想要的结果。
2.5 最后再加上监听器里面的:第二个图形结果、用表格查看结果、查看结果树,将测试结果以不同的形式表示
2.6 到这以后不要忘了注销我们的登录,加一个“http请求”, 注意要将这个请求放在所有http请求的最后,路径:/,因为我们的注销代码写在/页面上。
4. Jmeter的使用总结
A. 当你通过以上步骤后,说明你的测试脚本基本完成,你可以根据你的需要在简单控制器的后面加上其他http请求,用于测试不同的功能,同时加大并发线程组内的线程个数,然后根据不同的线程个数将测试结果写入测试报告。
如:我要测试“课程总库管理”这个功能,那我再加一个“http请求”,名称:课程总库管理、路径:/,因为这个查询页面需要两个参数:departmentID和queryButton,所以我们要增加两个同请求一起发送的参数以及参数值,提交给queryCourseAction取处理
B. 还有最重要的一点要说明的是:Jmeter是一个java的桌面软件,而不是浏览器,所以他并不能对返回结果内的js脚本自动自行,这样我们必须要先修改cas登录页面上存在的一个问题,这个问题在页面里面,有下面这么一段代码需要修改一下,将里面用脚本跳转的功能去掉,而改用jsp脚本(direct(service);)来跳转,只有这样,才能够保证我们在登录cas后正常跳转到/页面。否则后面的测试都无法进行
<%
if (!safari)
{
}
%>
%>
<%
//direct(service);
C. 对以web测试毫无疑问最重要的就是如何登录,为了不让大家再走我已经走过的误区,下面再用一个登录的例子来说明登录是怎么一回事情,下面是我用Jmeter登录“天津武警医学院论坛”的实例
1.1 首先有“HTTP请求默认值”,服务器名或ip为:,“HTTP信息头管理器”,“ HTTP Cookie 管理器”,“简单控制器”,两个“HTTP请求”
1.2 对用于登录的http请求,最重要的地方就是路径:/mvnforum/mvnforum/loginprocess,loginprocess其实这就是我们在浏览器里的登录页面填写好用户名和密码后,提交给loginprocess去处理(服务器端处理登录的 javabean),所以请求路径不是或其他页面,而是真正处理登录的javabean或action,同时提交登录参数,包括隐藏文本域的值也要一并在下面填写好后提交。
我刚开始的时候一直将路径写成:mvnforum/mvnforum/login,并填写好用户名密码及隐藏文本域的值后,怎么也登录不上,后来查看了登录页面的源码后发现:
版权声明:本文标题:Jmeter学习概要 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1709249151h541359.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论