JMeter-使用手册文档.doc
Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateJMeter-使用手册文档Confluence简介Jmeter使用手册目录目录3一、简介:5二、入门:52.1 需求62.1.1 Java 版本62.1.2 操作系统62.2 可选62.2.1 Java 编译器62.2.2 SAX XML解析器62.2.3 Email 支持72.2.4 SSL 加密72.2.5 JDBC 驱动72.2.6 Apache SOAP72.3 安装72.3.1 下载最新版本72.4 运行 JMeter72.4.1 JMeter Classpath82.4.2 使用代理服务器82.4.3 非用户界面模式 (命令行模式)82.4.4 服务器模式92.4.5 通过命令行覆盖属性92.4.6日志和错误信息92.4.7 命令行选项目录102.5 配置 JMeter10三、创建一个测试计划113.1 添加和删除元件113.2 加载和保存元件113.3 配置树元件123.4 运行一个测试计划123.5 作用域规则12四、测试计划元件144.1 后置处理器元件144.2 执行顺序14五、使用Jmeter测试145.1创建一个网站测试计划145.1.1添加用户155.1.2 添加默认HTTP请求属性165.1.3 添加 Cookie 支持175.1.4 添加 HTTP 请求175.1.5 添加一个监听器到试图储存测试结果185.1.6 保存测试计划195.1.7 运行测试计划195.2创建一个高级web测试计划 。195.2.1 用URL重写处理用户会话195.2.2 使用消息头管理205.3创建一个数据库测试计划205.3.1 添加用户205.3.2 添加JDBC请求215.3.3添加一个监听器浏览/保存测试结果245.3.4保存测试计划255.3.5 运行测试计划255.3.6 JDBC设置255.4创建一个FTP测试计划265.4.1添加用户265.4.2添加默认FTP请求配置275.4.3添加FTP请求295.4.4添加一个监听器浏览/保存测试结果305.4.5保存测试计划315.4.6运行测试计划315.5构建一个Web服务测试计划315.5.1添加用户315.5.2添加web服务请求335.6创建JMS主题测试计划335.6.1添加用户335.6.2添加JMS订阅者和发布者345.6.3添加一个监听器浏览/保存测试结果365.6.4保存测试计划375.6.5运行测试计划375.7监听器介绍375.7.1屏幕捕获385.7.2非GUI测试运行385.7.3资源使用385.7.4 CSV日志格式38六、 Badboy+JMeter压力测试39七、 JMeter压测OA系统48八、 参考资料51一、简介:Apache JMeter是100%纯java桌面应用程序,被设计用来测试C/S结构的软件(例如web应用程序)。它可以被用来测试包括基于静态和动态资源程序的性能,例如静态文件,Java Servlets,Java 对象,数据库,FTP 服务器等等。JMeter可以用来模拟一个在服务器、网络或者对象上大的负载来测试或者分析在不同的负载类型下的全面性能。JMeter 的主要测试组件总结如下:1. 测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。3. 监听器负责收集测试结果,同时也被告知了结果显示的方式。4. 逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。5. 断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。6. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。7. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。8. 定时器负责定义请求之间的延迟间隔。二、入门:开始使用JMeter最容易的方法是首先下载最新版并且安装它。这个版本包含所有你在构建和运行Web,FTP,JDBC,和JNDI测试时使用的所有文件。如果你想执行JDBC测试,你当然需要从厂商得到适当的JDBC驱动。JMeter没有提供任何JDBC驱动。其它你可能需要下载的软件:· BeanShell · Java Activation Framework - JavaMail需要 · Java Mail - mail 显示 and SOAP 测试需要 · JMS - JMS 取样器 · General Java download page 下一步, 开始使用JMeter并且参见用户手册构建测试计划一章使自己更加熟悉JMeter基础 (例如,添加和删除元素)。 最后, 参见如何构建一个明确类型的测试用例的适合章节。例如,如果你对Web应用测试感兴趣,那就参见构建一个Web测试计划。其他测试计划的细节是JDBC, FTP, and JNDI。一旦你熟练构建和执行JMeter测试计划, 通过你的测试计划你会观察到给你更多帮助的各种元素的配置(定时器, 监听器, 断言, 和其他)。2.1 需求JMeter 需要运行环境匹配的最低需求。2.1.1 Java 版本JMeter 需要一个完整适当的JVM 1.3或更高的版本. 我们现在尽力与JVM 1.3保持兼容,然而JMeter 在1.4或者更高运行的会最好。此处我们安装jdk-7u25-windows-i586这个版本。 2.1.2 操作系统JMeter是100%纯Java应用程序并且能够正确的在任何有适当的Java实现的操作系统上运行。JMeter 在下列环境已经被测试:Unix (Solaris, Linux, 等) Windows (98, NT, 2000, xp) OpenVMS Alpha 7.3+ 2.2 可选如果你计划做JMeter开发或者想使用SUN的java标准扩展包,你将需要下列更多的可选包。2.2.1 Java 编译器如果你想编译JMeter源代码或者开发JMeter插件,你将需要一个完整的适当的JDK1.3或者更高。2.2.2 SAX XML解析器JMeter 使用 Apache's Xerces XML 解析器你可以选择告诉JMeter使用一个不同的XML 解析器。 这样做,把第三方的解析器的类包包含在JMeter的classpath 中, 并更新 jmeter.properties 文件里的解析器实现的全类名。2.2.3 Email 支持JMeter 有有限的 Email 能力。 它能够发送给你测试结果的email,并且支持POP/IMAP 取样器。它现在不支持 SMTP 取样。 为了能够支持 Email, 需要添加Sun 的JavaMail包和activation包到JMeter classpath 。2.2.4 SSL 加密为了测试一个使用SSL加密(HPPS)的web服务器, JMeter 需要一个提供SSL实现 (例如 Sun的 Java Secure Sockets Extension - JSSE)。包含需要的加密包到JMeter的 classpath 。 同样,通过注册SSL提供者更新 jmeter.properties 。为了更好的管理证书,也要有一个SSL 管理器 。 JMeter 代理服务器(见下)不支持记录SSL(https)。2.2.5 JDBC 驱动你需要添加你的厂商的JDBC驱动到classpath,如果你需要JDBC测试.确认文件是一个jar文件,而不是zip。2.2.6 Apache SOAPApache SOAP 需要 mail.jar 和 activation.jar. 你需要下载并拷贝两个jar文件到你jmeter/lib 目录.一旦文件放到那里,JMeter 会自动找到它们。 2.3 安装2.3.1 下载最新版本保证一个JRE/JDK正确的安装并且设置环境变量JAVA_HOME。之后下载一个Jmeter版本,下载地址:http:/jmeter.apache.org/download_jmeter.cgi。下载文件进行安装即可。2.4 运行 JMeter要运行JMeter, 运行 jmeter.bat (for Windows) 或者 jmeter (for Unix) 文件。 JMeter 必须从 JMeter 的bin 目录 中启动。亦可以创建快捷方式在桌面等。2.4.1 JMeter ClasspathJMeter 自动从在它的/lib 和 /lib/ext目录中的jar包发现类。如果你开发新的 JMeter 组件,你可以压缩它们成jar包并拷贝到 JMeter 的 /lib/ext 目录。JMeter 将会自导发现在这里的任何jar包的JMeter 组件。如果你不想把扩展jar包放到lib/ext 目录,可以在jmeter.properties中定义search_paths属性。不要使用lib/ext 给那些有用的jar包;它仅仅是存放 JMeter 组件。其他jar包 (例如 JDBC, 和任何JMeter代码需要支持的类库)应该被代替放在lib目录。 你可以在%JAVA_HOME%/jre/lib/ext安装有用的jar文件,或者你可以在jmeter.properties中设置user.classpath属性。注意设置CLASSPATH 环境变量将不起作用。这是因为JMeter 使用"java -jar"启动,并且java命令无记录忽略CLASSPATH 变量,并且当使用-jar选项时-classpath/-cp 选项也被使用。所有的java程序都是这样,不仅仅是JMeter。2.4.2 使用代理服务器如果你在防火墙/代理服务器后测试,你需要提供给JMeter防火墙/代理服务器的主机名和端口号。这样做,从命令行使用以下参数运行jmeter.bat/jmeter文件:-H 代理服务器主机名或者ip地址-P 代理服务器端口-N 非代理主机 (例如: *.apache.org|localhost)-u 代理证书用户名- 如果需要-a 代理证书密码 - 如果需要例如 : jmeter -H my.proxy.server -P 8000 -u username -a password -N localhost或者, 你使用 -proxyHost, -proxyPort, -username, and -password 2.4.3 非用户界面模式 (命令行模式)为了不相互影响测试, 你可以选择运行没有用户界面的JMeter。这样做,使用下列命令选项:-n 这是指定JMeter在非用户界面模式运行-t 包含测试计划的JMX文件的名字-l 记录取样结果的JTL文件的名字-r 运行在jmeter.properties文件里所有的远程服务器 (或者通过在命令行覆盖属性指定远程服务器)这个脚本也允许我们指定可选的防火墙/代理服务器信息:-H 代理服务器主机名或者ip地址-P 代理服务器端口例如 : jmeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 80002.4.4 服务器模式为了分布测试 ,在服务器模式运行JMeter,并且通过用户界面控制每一台服务器。 运行jmeter-server/jmeter-server.bat,加上下列选项命令:这个脚本也允许我们指定可选的防火墙/代理服务器信息:-H 代理服务器主机名或者ip地址-P 代理服务器端口例如 : jmeter-server -H my.proxy.server -P 80002.4.5 通过命令行覆盖属性Java系统属性,JMeter属性,和日志属性可以通过命令行直接覆盖(代替更改jmeter.properties文件)。这样做,使用下列选项:-Dprop_name=value - 定义一个java系统属性值。-Jprop name=value - 覆盖一个JMeter属性。-Lcategory=priority - 覆盖一个日志设置,设置一个特殊目录为给定的优先级。-L 标志也可以使用没有目录名来设置根目录日志等级。例如 :jmeter -Duser.dir=/home/mstover/jmeter_stuff -Jremote_hosts=127.0.0.1 -Ljmeter.engine=DEBUGjmeter -LDEBUG 2.4.6日志和错误信息如果JMeter发现一个错误, 一个消息将被写入日志文件。日志文件名在jmeter.properties文件中定义。一般定义为 jmeter.log 。并且在JMeter启动目录,例如bin。当在Windows下运行时,如果你不设置Windows显示文件扩展名,文件名会仅显示为 JMeter。你可以做一些事都很容易地发现伪装成文本文件的病毒和垃圾文件.还有记录错误,jmeter.log 文件记录一些测试运行信息。例如:2013/08/23 15:09:20 INFO - jmeter.JMeter: Version 2.9 r1437961 2013/08/23 15:09:20 INFO - jmeter.JMeter: java.version=1.7.0_17 2013/08/23 15:09:20 INFO - jmeter.JMeter: java.vm.name=Java HotSpot(TM) Client VM 2013/08/23 15:09:20 INFO - jmeter.JMeter: os.name=Windows XP 2013/08/23 15:09:20 INFO - jmeter.JMeter: os.arch=x86 2013/08/23 15:09:20 INFO - jmeter.JMeter: os.version=5.1 2013/08/23 15:09:20 INFO - jmeter.JMeter: file.encoding=GBK 2013/08/23 15:09:20 INFO - jmeter.JMeter: Default Locale=中文 (中国) 2013/08/23 15:09:20 INFO - jmeter.JMeter: JMeter Locale=中文 (中国) 2013/08/23 15:09:20 INFO - jmeter.JMeter: JMeterHome=C:apache-jmeter-2.9 2013/08/23 15:09:20 INFO - jmeter.JMeter: user.dir =C:apache-jmeter-2.9bin 2013/08/23 15:09:20 INFO - jmeter.JMeter: PWD =C:apache-jmeter-2.9bin 日志文件对发现错误原因很有帮助,作为JMeter不会打断一个测试来显示一个错误对话框。2.4.7 命令行选项目录调用JMeter的 "jmeter -?"命令将打印所有命令选项的一个列表。列表如下:-h, -help 打印使用信息并退出-v, -version 打印版本信息并推出-p, -propfile argument 使用的JMeter属性文件-q, -addprop argument 附加的属性文件-t, -testfile argument 运行的JMeter测试文件(.jmx)-l, -logfile argument 日志取样文件-n, -nongui 非用户界面运行JMeter-s, -server 运行JMeter服务器-H, -proxyHost argument 设置JMeter使用的代理服务器-P, -proxyPort argument 设置JMeter使用的代理服务器端口-u, -username argument 设置JMeter使用的代理服务器用户名-a, -password argument 设置JMeter使用的代理服务器密码-J, -jmeterproperty argument=value 定义附加的 JMeter 属性-D, -systemproperty argument=value 定义附加的 System 属性-S, -systemPropertyFile filename 一个属性文件被做为系统属性添加-L, -loglevel argument=value 定义日志等级: category=level例如 jorphan=INFO or jmeter.util=DEBUG-r, -runremote从非用户界面模式启动远程服务器-d, -homedir argument 使用的JMeter目录2.5 配置 JMeter如果你希望改变JMeter运行时的属性你需要改变在/bin目录的jmeter.properties文件,或者创建你自己的jmeter.properties文件并且在命令行指定它。 参数属性 描述 需要 ssl.provider 你可以为你的SSL实现指定类。如果你想使用来自sun的JSSE,是这样: No .ssl.internal.ssl.Provider。 JMeter默认提供https支持是在你使用 JDK1.4或者你使用把JSSE类的jar包放到JMeter classpath中的JDK1.3时候。 No xml.parser 你可以指明一个你的XML解析器实现。 默认值是:org.apache.xerces.parsers.SAXParser No remote_hosts 逗号分割远程JMeter主机列表。如果你在一个分布式环境运行JMeter,列出你用JMeter远程主机运行的机器。这允许你使用机器的用户界面控制那些服务器。 No not_in_menu 在JMeter选项屏中你不想看到的组件列表。 如果JMeter被添加越来越多的组件,你会希望定制JMeter只出现那些你感兴趣的组件。你可以在这儿列出那些类名和他们的类标签(JMeter的用户界面出现的字符串), 它们将在选项屏中不出现。 No search_paths 列出那些JMeter搜索JMeter附加类的路径(以;分割);例如增加的取样器。被添加到lib/ext目录的任何jar包都被发现。 No user.classpath JMeter搜索的有用类库的路径列表。被添加到lib目录的任何jar包都被发现。 No user.properties 附加的JMeter属性文件名。 初始化属性文件后它们被添加,但是在-q和-J选项被处理之前。 No system.properties 附加的系统属性文件名。 -S和-D选项被执行前被添加。 No 又见 jmeter.properties 文件注释,在你改变其它设置时会给你更多的信息三、创建一个测试计划一个测试计划描述了一系列Jmeter运行时要执行的步骤。一个完整的测试计划包含一个或者多个线程组,逻辑控制,取样发生控制,监听器,定时器,断言和配置元件。3.1 添加和删除元件在一个树上通过右击可以添加元件到一个测试计划 ,并且从"list"列表中选择一个新元件。或者,元件从文件加载并且通过选择"open"选项添加。为了删除元件,确保元件被选中,正确在元件上右击,并且选择"remove"选项。3.2 加载和保存元件为了从文件加载元件,右击将要加载元件到的已经存在的树元件,并选择"open"选项。选择你的元件保存的文件。JMeter会加载元件到树中。为了保存树元件,在一个元件上右击,选择"save"选项。JMeter会保存已选的元件,加上所有下面的子元件。用这种方法,你能够保存测试树段,单独元件,或者这个测试计划。3.3 配置树元件在测试树中的任何元件控制在JMeter的右手结构。那些控制允许你配置测试元件的细节行为,什么被配置为一个依赖元件类型的元件。3.4 运行一个测试计划为了运行一个测试计划,从"run"菜单项选择"start"。为了停止你的测试计划,从同样的菜单选择"stop"。JMeter 不会自动给它是否正在运行任何显示。如果JMeter运行,一些监听器使它变明显,但是唯一确定的方法是检查"run"菜单。如果"start"不可用,"stop"可用,证明JMeter正在运行你的测试计划(或者,至少, 它认为它是)。3.5 作用域规则jmeter 测试树包含元件总是分等级和顺序的。在测试树中的一些元件是严格分级(监听器,配置元素,后置处理器,前置处理器,断言,定时器),一些主要是顺序的(控制器,取样器)。当你创建你的测试计划时,你将创建一个描述被执行的步骤集的取样请求有序列表。那些请求常组织在也有序的控制器中。给出如下测试树:Example test tree请求的顺序是 One,Two,Three,Four。一些控制器影响它的子元件的顺序,你可以在 组件参考 看到详细的控制器。其他元素是分等级的。例如,一个断言在测试树中是分等级的。如果你的父元件是请求,它就被应用于那个请求。如果它的父元件是控制器,它就影响所有那个控制器下的所有请求。如下测试树:Hierarchy exampleAssertion #1 仅被应用于请求 One, Assertion #2 仅被应用于 请求 Two 和 Three。其它例子,这次使用定时器:complex example在这个例子里,请求的命名表现它们被执行的顺序。Timer #1 应用于 请求 Two, Three, 和 Four (注意对于分等级的元件怎样的顺序是不相关的)。Assertion #1 应用于请求Three。Timer #2 对所有请求有效。希望那些例子使你弄清了配置(分等级的)元件如何被应用。如果你想每个请求都被树分叉拒绝,到它的父元件,到它的父元件的父元件,等等,每次收集所有它的父元件的配置元件,你将看到它如何工作的。元件Header Manager, Cookie Manager 和Authorization manager 的配置和默认元件的配置被视为是不同的。默认元件配置的设置并入取样器到达的值的集里。然而来自管理器的设置没有并入。如果多于一个管理器在一个取样器范围中,仅仅一个被使用,但是现在没有办法指定那个被使用。 3.6 错误报告JMeter 把警告和错误信息回报在jmeter.log这个文件中,就像测试本身在执行时产生的某些资讯。只是偶尔的,JMeter对于某些错误是无法捕捉和记录的,这些资讯都会显示在执行命令台上。如果一个测试的执行并不是你所期待的,那么当错误发生时,请你检查记录文件。取样错误(例如:HTTP 404 - 找不到档案)是不会被正常的记录在文件中的,取而代之的,他们会被当做取样结果的属性来存储,取样结果的状态能被许多不同的监听器所得知。四、测试计划元件测试计划对象有一个叫做"功能测试"复选框。如果被选择,它将导致JMeter记录来自服务器返回的每个取样的数据。如果你在你的测试监听器中选择一个文件,这个数据将被写入文件。你尝试一个小的运行来保证JMeter配置正确并且你的服务器正在返回期望的结果是很有用的。4.1 后置处理器元件 一个后置控制器在一个取样器请求被建立后执行一些操作。如果一个后置处理器附属于一个取样器元件,它仅在取样器元件运行后执行。后置处理器最多用来处理响应数据,常用来从它里面摘录数值。 4.2 执行顺序1、定时器 - 任何个 2、取样器 3、后置处理器 (如果SampleResult不为空) 4、断言 (如果SampleResult不为空) 5、监听器 (如果SampleResult不为空) 五、使用Jmeter测试5.1创建一个网站测试计划在这一部分,你将学会如何创建一个基础的测试计划来测试网站,你将会创建5个用户向baidu网站上的两个网页发送请求。当然,你也可以让每个用户发 送两次。这样,总的HTTP发送请求为(5个用户*2次请求*重复2次)20。要构建这个测试计划,你将会用来下面的元素:线程组 , HTTP请求 , HTTP请求默认值和图形结果 。要创建更好的测试计划,可以参考创建一个高级的测试计划网站 。5.1.1添加用户处理每个JMeter测试计划的第一步就是添加线程组元件。这个线程组会告诉JMeter你想要模拟的用户数量,用户应该发送请求的频率和应该发送的数量。进一步来添加一个线程组:首先选择这个测试计划,用鼠标右键点击然后在得到的菜单中选择添加-> 线程组。这时你应该看到这个线程组已经在测试计划下面了,如果没有看到,就点击测试计划元件展开这个测试计划树。下一步,你需要修改这些默认的属性。如果你还没有选择线程组元件,则从测试计划树型结构中选择它。这时你应该看到JMeter窗口右边的线程组控制面板了。图5.1. 线程组默认值首先给这个线程组起一个有意义的名字。在名称域中, 输入baidu Users.下一步,增加用户的数量为5。在下一个the Ramp-Up Period文本域中 , 使用默认值为0。这个属性表示每个用户启动的迟延时间。例如,如果你输入Ramp-Up Period 为5秒,JMeter将会在五秒结束前完成 启动所有的用户。所以,如果你有五个用户并且Ramp-Up Period为五秒,那么开始用户的延迟就是1秒。(5个用户 / 5秒 = 1 用户每秒). JMeter将会立即启动你所有的用户,如果你设置其值为0。最后,取消标记为"永远"的复选框选择并设置循环次数为2。 这个属性表示你的测试的重复次数。如果你设置为1,JMeter将你的测试只运行一次。 要让JMeter不断的运行,你要选择"永远"这个复选框。图 5.2 为完整的baidu Users线程组。图 5.2. baidu Users 线程组5.1.2 添加默认HTTP请求属性我们已经定义了用户,现在要定义他们的行为了。在这一部分,你将学会对你的HTTP请求设置默认值。在这里指定的默认设置来添加HTTP请求元件。首先选择baidu Users元件,右键点击并在弹出的菜单中选择添加 ->配置元件 -> HTTP请求默认值。 然后选择这个新元件来显示其控制面板(见图5.3)。图5.3. HTTP 请求默认值跟大多数的JMeter元件一样, HTTP请求默认值控制面板也有一个名称域。在这个例子中将它保留为默认值。下面这个文本域是Web Server的Server名字/IP。对于这个测试计划中,所有的HTTP请求都将发送到相同的网站服务器。向文本域中输入名字,这是唯一的一个需要我们去修改它的默认值,其它的文本域都保留它们的默认值。图5.4表示为完整的HTTP请求默认值元件图5.4. 测试计划的HTTP 默认值5.1.3 添加 Cookie 支持除非你的应用程序明确的不使用Cookies,几乎所有的网站应用程序都会使用cookie支持。要添加cookie支持,可以简单的在你的测试计划中给每一个线程组 添加 一个 HTTP Cookie 管理器 。这样确信每个线程组有自己的cookies,但是通过所有交互的 HTTP 请求 对象变成共享。添加 HTTP Cookie 管理器 , 简单地,选择这个 线程组 ,选择添加-> HTTP Cookie管理器,也可以从编辑菜单或通过右键点击来实现添加。5.1.4 添加 HTTP 请求在这个测试计划中,我们需要实现两个HTTP请求。第一个就是 Jakarta网站首页(),第二个就是工程向导网页()。首先给baidu Users元件添加第一个 HTTP请求 (添加 -> 取样器 -> HTTP 请求)。然后从树中选择HTTP请求元件并修改正面的属性(看图5.5):更改名称域为"Home Page".设置路径域为 "/"。图 5.5. baidu首页的HTTP请求下一步,添加每二个HTTP请求并修改下面的属性(见图5.6):更改名称域为"Project Guidelines"。设置路径域为 "/gaoji/preferences.html"。图 5.6. baidu工程搜索设置页的HTTP请求5.1.5 添加一个监听器到试图储存测试结果最后一个你需要给测试计划的元件是监听器 。这个元件的用途是将所有的HTTP请求结果存储在一个文件中并显现出数据的可视模型。选择baidu Users 元件,然后添加一个 图形结果 监听器 (添加 ->图形结果). 接着,你需要指定一个文件路径和输出文件名。你可以在文件名域中输入或选择浏览按钮并选择一个路径然后输入文件名。图 5.7. 图像结果监听器5.1.6 保存测试计划尽管它并不必要,我们还是建议你在运行测试计划前将它保存在一个文件里边。通过选择文件菜单中的"保存测试计划"来保存。5.1.7 运行测试计划从 Run 菜单中选择Run。一旦JMeter已经完成测试计划,选择"run"菜单中的"stop"。如果你选择了一个文件来保存你监听器中的结果,那么你将有一个文件,它可以在任何的视图中打开。每一个视图将以它自己的样子显示结果。5.2创建一个高级web测试计划 。5.2.1 用URL重写处理用户会话如果你的web应用程序使用URL重写优于cookies保存会话信息,那么为了测试你的站点你将需要做一点额外的工作。为了响应正确到URL重写,JMeter需要解析从服务器接受的HTML和重新得到唯一的会话ID。利用适当的 HTTP URL 重写修改器来完成这些。简单地输入你的会话ID参数名到修改器,它会找到它并添加它到每一个请求。如果请求已经有一个值,它将会被替代。如果"Cache Session Id?"被选中,那么最后被发现的会话ID将被保存,并且如果HTTP的上次取样不包含一个会话ID将会被使用。5.2.2 使用消息头管理HTTP 消息头管理 让你定制JMeter在HTTP请求消息头发送的信息。这个消息头包括像"User-Agent", "Pragma", "Referer"等属性。HTTP 消息头管理 好像 HTTP Cookie 管理 ,如果你因为一些原因你不希望在你的测试里为不同的HTTP 请求对象指定不同的消息头,可以被添加到线程组水平5.3创建一个数据库测试计划在这一部分,你将学会如何去创建一个基础的测试计划来测试一个数据库服务器。你会创建10个用户来给数据库服务器发送2次SQL请求。同样,你也可以让用户运行他们的测试三次。这样总的JDBC请求数量就是(10用户)*(2次请求)*(重复3次)=60。要构建这个测试计划,你将会用到下面的元件:线程组,JDBC请求,图形结果。5.3.1 添加用户处理每个JMeter测试计划的第一步就是添加 线程组元件。这个线程组会告诉JMeter你想要模拟的用户数量,用户应该发送请求的频率和应该发送的数量。下一步来添加一个线程组:首先选择这个测试计划,用鼠标右键点击然后在得到的菜单中选择添加-> 线程组。这时你应该看到这个线程组已经在测试计划下面了,如果没有看到,就点击测试计划元件展开这个测试计划树。下一步,你需要修改这些默认的属性。如果你还没有选择线程组元件,则从测试计划树型结构中选择它。这时你应该看到JMeter窗口右边的线程组控制面板了(见图7.1)。首先给这个线程组起一个有意义的名字。在名称域中, 输入JDBC Users接下来,将用户的数量(即threads)增加不10。在下一个the Ramp-Up Period文本域中 , 使用默认值为0。这个属性表示每个用户启动的迟延时间。例如,如果你输入Ramp-Up Period 为5秒,JMeter将会在五秒结束前完成 启动所有的用户。所以,如果你有五个用户并且Ramp-Up Period为五秒,那么开始用户的延迟就是1秒。(5个用户 / 5秒 = 1 用户每秒). JMeter将会立即启动你所有的用户,如果你设置其值为0。最后,取消标记为"永远"的复选框选择并设置循环次数为2。 这个属性表示你的测试的重复次数。如果你设置为1,JMeter将你的测试只运行一次。 要让JMeter不断的运行,你要选择"永远"这个复选框。图 7.2 为完整的JDBC Users线程组。5.3.2 添加JDBC请求我们已经定义了用户,现在要定义他们的行为了。在这一部分,我们将会详细说明JDBC请求。首先选择JDBC用户元件,右键点击,在弹出的菜单中选择Add -> Config Element -> JDBC Connection Configuration。然后,选择这个新的元件来显示它的控制面板(见图7.3)。设定下面的文本域的值(我们这里假定用一个本地的MySQL数据库名为test)。· Variable name bound to pool. 这需要能够唯一标识这个配置。 · Database URL: jdbc: mysql:/