1、JMeter中文使用手册1. 简介Apache JMeter是100%纯java桌面应用程序,被设计用来测试C/S结构的软件(例如web应用程序)。它可以被用来测试包括基于静态和动态资源程序的性能,例如静态文件,Java Servlets,Java 对象,数据库,FTP 服务器等等。JMeter可以用来模拟一个在服务器、网络或者对象上大的负载来测试或者分析在不同的负载类型下的全面性能。另外,JMeter能够通过让你们用断言创造测试脚本来验证我们的应用程序是否返回了我们期望的结果,从而帮助我们回归测试我们的程序。为了最大的灵活性,JMeter允许我们使用正则表达式创建断言。1.1 历史Apach
2、e软件组织的Stefano Mazzocchi是JMeter的创始人。他写出它起初是为了测试Apache JServ的性能(一个已经被Apache Tomcat工程所替代的工程)。我们重新设计JMeter来增强用户界面和增加功能测试的能力。1.2 未来我们希望看到作为开发者利用它的可插入架构使JMeter的功能快速扩展。未来发展的主要目标是在没有危机JMeter的负载测试能力的情况下尽可能使JMeter成为最实用的回归测试工具。2. 入门开始使用JMeter最容易的方法是首先下载最新版并且安装它。这个版本包含所有你在构建和运行Web,FTP,JDBC,和JNDI测试时使用的所有文件。如果你想执
3、行JDBC测试,你当然需要从厂商得到适当的JDBC驱动。JMeter没有提供任何JDBC驱动。其它你可能需要下载的软件: BeanShell Java Activation Framework - JavaMail需要 Java Mail - mail 显示 and SOAP 测试需要 JMS - JMS 取样器 General Java download page 详细参见安装的jar包中的 JMeter Classpath 一章 下一步, 开始使用JMeter并且参见用户手册构建测试计划一章使自己更加熟悉JMeter基础 (例如,添加和删除元素)。最后, 参见如何构建一个明确类型的测试用例
4、的适合章节。例如,如果你对Web应用测试感兴趣,那就参见构建一个Web测试计划。其它测试计划的细节是JDBC, FTP, and JNDI。一旦你熟练构建和执行JMeter测试计划, 通过你的测试计划你会观察到给你更多帮助的各种元素的配置(定时器, 监听器, 断言, 和其它)。2.1 需求 JMeter 需要运行环境匹配的最小需求。2.1.1 Java 版本JMeter 需要一个完整适当的JVM 1.3或更高的版本. 我们现在尽力与JVM 1.3保持兼容,然而JMeter 在1.4或者更高运行的会最好。因为JMeter 仅使用Java标准API, 请不要把因为JRE实现版本而无法运行JMete
5、r的bug报告提交。 Java 1.3 不包括 SSL (HTTPS) 支持 - 你将需要下载 JSSE. 同样, 它不会像其它更高版本的Java那样好的运行。为了更好的结果使用Java1.4或者1.5。 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标准扩展包,你将需要下列更多的
6、可选包。2.2.1 Java 编译器如果你想编译JMeter源代码或者开发JMeter插件,你将需要一个完整的适当的JDK1.3或者更高。2.2.2 SAX XML解析器JMeter 使用 Apaches Xerces XML 解析器你可以选择告诉JMeter使用一个不同的XML 解析器。 这样做,把第三方的解析器的类包包含在JMeter的classpath 中, 并更新 jmeter.properties 文件里的解析器实现的全类名。2.2.3 Email 支持JMeter 有有限的 Email 能力。 它能够发送给你测试结果的email,并且支持POP/IMAP 取样器。它现在不支持 SM
7、TP 取样。 为了能够支持 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 管理器 。 注意如果你在JDK1.4上运行,你将不需要下载JSSE,因为SUN已经
8、集成它到JDK1.4中做为标准类库了。 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 会自动找到它们。 详细参见安装的jar包中的 JMeter Classpath 一章 2.3 安装快速安装JMeter。细节依赖你下载的发布
9、文件。 注意避免在一个有空格的路径安装 JMeter。这将导致远程测试出现问题。 2.3.1 下载最新版本我们推荐大多数用户运行最新版本。要安装一个构建版本,简单解压zip/tar文件到你想安装JMeter的目录。保证一个JRE/JDK正确的安装并且设置环境变量JAVA_HOME,其它不需要做什么了。2.3.2 下载夜晚构建如果你不介意使用beta版软件,你可以下载运行最新夜晚构建。要安装一个夜晚构建,解压_bin和_lib zip/tar文件到相同的目录结构。保证一个JRE/JDK正确的安装并且设置环境变量JAVA_HOME, JMeter 就可以正确的运行了。2.4 运行 JMeter要运
10、行JMeter, 运行 jmeter.bat (for Windows) 或者 jmeter (for Unix) 文件。 JMeter 必须从 JMeter 的bin 目录 (那些文件没有发现的地方)启动。如果jmeter.bat文件能够的话,它试图改变到一个适当的目录。2.4.1 JMeter ClasspathJMeter 自动从在它的/lib 和 /lib/ext目录中的jar包发现类。如果你开发新的 JMeter 组件,你可以压缩它们成jar包并拷贝到 JMeter 的 /lib/ext 目录。JMeter 将会自导发现在这里的任何jar包的JMeter 组件。如果你不想把扩展jar
11、包放到lib/ext 目录,可以在jmeter.properties中定义search_paths属性。不要使用lib/ext 给那些有用的jar包;它仅仅是存放 JMeter 组件。其它jar包 (例如 JDBC, 和任何JMeter代码需要支持的类库)应该被代替放在lib目录。 注意JMeter 会发现.jar文件,而不是.zip文件。 你可以在$JAVA_HOME/jre/lib/ext安装有用的jar文件,或者(自从 2.1.1版本)你可以在jmeter.properties中设置user.classpath属性。 注意设置CLASSPATH 环境变量将不起作用。这是因为JMeter
12、使用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 代理证书密码 - 如果需要例如 : jmet
13、er -H my.proxy.server -P 8000 -u username -a password -N localhost或者, 你使用 -proxyHost, -proxyPort, -username, and -password JMeter也有自己的内建 HTTP代理服务器,来记录HTTP (不是 HTTPS)浏览器会话。这是和上面的代理设置描述不混淆的,它是在JMeter发出HTTP或者HTTPS请求时使用的。 2.4.3 非用户界面模式 (命令行模式)为了不相互影响测试, 你可以选择运行没有用户界面的JMeter。这样做,使用下列命令选项:-n 这是指定JMeter在非用
14、户界面模式运行-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.b
15、at 脚本使用适当的classpath为你开始远程注册。如果失败,参见关于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 - 定
16、义一个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 注意命令行参数在启动时较早被处理,但是在日志系统被设置以后。尝试使用-J标志更新log_level或者log_file属性无效。 2.4.6日
17、志和错误信息如果JMeter发现一个错误, 一个消息将被写入日志文件。日志文件名在jmeter.properties文件中定义。一般定义为 jmeter.log 。并且在JMeter启动目录,例如bin。当在Windows下运行时,如果你不设置Windows显示文件扩展名,文件名会仅显示为 JMeter。你可以做一些事都很容易地发现伪装成文本文件的病毒和垃圾文件.还有记录错误,jmeter.log 文件记录一些测试运行信息。例如:10/17/2003 12:19:20 PM INFO - jmeter.JMeter: Version 1.9.2003100210/17/2003 12:19:4
18、5 PM INFO - jmeter.gui.action.Load: Loading file: c:mytestfilesBSH.jmx10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Running the test!10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Starting 1 threads for group BSH. Ramp up = 1.10/17/2003 12:19:52 PM INFO - jmete
19、r.engine.StandardJMeterEngine: Continue on error10/17/2003 12:19:52 PM INFO - jmeter.threads.JMeterThread: Thread BSH1-1 started10/17/2003 12:19:52 PM INFO - jmeter.threads.JMeterThread: Thread BSH1-1 is done10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Test has ended日志文件对发现错误原因很
20、有帮助,作为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 运行
21、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 fi
22、lename 一个属性文件被做为系统属性添加-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文件并且在命令行指定它。 注意自从 2.1.2,你能够通过JMeter属性us
23、er.properties在文件中定义附加的JMeter属性,user.properties默认值是user.properties。如果在当前目录被发现,这个文件被自动加载。类似的,system.properties 被用来更新系统属性。 参数属性 描述 需要 ssl.provider 你可以为你的SSL实现指定类。如果你想使用来自sun的JSSE,是这样: No .ssl.internal.ssl.Provider。 JMeter默认提供https支持是在你使用 JDK1.4或者你使用把JSSE类的jar包放到JMeter classpath中的JDK1.3时候。 No xml.parser
24、 你可以指明一个你的XML解析器实现。 默认值是:org.apache.xerces.parsers.SAXParser No remote_hosts 逗号分割远程JMeter主机列表。如果你在一个分布式环境运行JMeter,列出你用JMeter远程主机运行的机器。这允许你使用机器的用户界面控制那些服务器。 No not_in_menu 在JMeter选项屏中你不想看到的组件列表。 如果JMeter被添加越来越多的组件,你会希望定制JMeter只出现那些你感兴趣的组件。你可以在这儿列出那些类名和他们的类标签(JMeter的用户界面出现的字符串), 它们将在选项屏中不出现。 No search
25、_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 文件注释,在你改变其它设置时会给你更多的信息。 3. 创建
26、一个测试计划一个测试计划描述了一系列Jmeter运行时要执行的步骤。一个完整的测试计划包含一个或者多个线程组,逻辑控制,取样发生控制,监听器,定时器,断言和配置组件。3.1 添加和删除组件在一个树上通过右击可以添加 组件到一个测试计划 ,并且从list列表中选择一个新组件。或者,组件从文件加载并且通过选择open选项添加。为了删除组件,确保组件被选中,正确在组件上右击,并且选择remove选项。3.2 加载和保存组件为了从文件加载组件,右击将要加载组件到的已经存在的树组件,并选择open选项。选择你的组件保存的文件。JMeter会加载组件到树中。为了保存树组件,在一个组件上右击,选择save选
27、项。JMeter会保存已选的组件,加上所有下面的子组件。用这种方法,你能够保存测试树段,单独组件,或者这个测试计划。3.3 配置树组件在测试树中的任何组件控制在JMeter的右手结构。那些控制允许你配置测试组件的细节行为,什么被配置为一个依赖组件类型的组件。可以通过拖拉测试树周围的组件操作测试树。3.4 运行一个测试计划为了运行一个测试计划,从run菜单项选择start。为了停止你的测试计划,从同样的菜单选择stop。JMeter 不会自动给它是否正在运行任何显示。如果JMeter运行,一些监听器使它变明显,但是唯一确定的方法是检查run菜单。如果start不可用,stop可用,证明JMete
28、r正在运行你的测试计划(或者,至少, 它认为它是)。3.5 作用域规则jmeter 测试树包含组件总是分等级和顺序的。在测试树中的一些组件是严格分级(监听器,配置元素,后置处理器,前置处理器,断言,定时器),一些主要是顺序的(控制器,取样器)。当你创建你的测试计划时,你将创建一个描述被执行的步骤集的取样请求有序列表。那些请求常组织在也有序的控制器中。给出如下测试树:Example test tree请求的顺序是 One,Two,Three,Four。一些控制器影响它的子组件的顺序,你可以在 组件参考 看到详细的控制器。其它元素是分等级的。例如,一个断言在测试树中是分等级的。如果你的父组件是请求
29、,它就被应用于那个请求。如果它的父组件是控制器,它就影响所有那个控制器下的所有请求。如下测试树:Hierarchy exampleAssertion #1 仅被应用于请求 One, Assertion #2 仅被应用于 请求 Two 和 Three。其它例子,这次使用定时器:complex example在这个例子里,请求的命名表现它们被执行的顺序。Timer #1 应用于 请求 Two, Three, 和 Four (注意对于分等级的组件怎样的顺序是不相关的)。Assertion #1 应用于请求Three。Timer #2 对所有请求有效。希望那些例子使你弄清了配置(分等级的)组件如何被应
30、用。如果你想每个请求都被树分叉拒绝,到它的父组件,到它的父组件的父组件,等等,每次收集所有它的父组件的配置组件,你将看到它如何工作的。组件Header Manager, Cookie Manager 和Authorization manager 的配置和默认组件的配置被视为是不同的。默认组件配置的设置并入取样器到达的值的集里。然而来自管理器的设置没有并入。如果多于一个管理器在一个取样器范围中,仅仅一个被使用,但是现在没有办法指定那个被使用。 Comments (Hide) 3.6 Error reporting3.6 错误报告 JMeter reports warnings and error
31、s to the jmeter.log file, as well as some information on the test run itself. Just occaisionally there may be some errors that JMeter is unable to trap and log; these will appear on the command console. If a test is not behaving as you expect, please check the log file in case any errors have been reported (e.g. perhaps a syntax error in a
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1