JMeter系列教程 | 官方文档翻译
1. 新手入门
1.0 概述
当你使用JMeter的时候一般会遵循以下过程:
1.0.1 创建测试计划
首先,你需要启动JMeter GUI
然后,你可以选择从浏览器或本地应用程序记录应用程序。通过菜单:文件 → Templates… → Recording。
注意,你还可以通过手动生成测试计划,你需要阅读文档并理解上面概念。
你还可以通过下面的方式进行调试:
-
运行 → Start no pauses
-
运行 → 启动
-
验证线程组
和查看结果树的渲染和调试(CSS/JQUERY, JSON, Regexp, XPath)。 确保在构建测试计划时遵循最佳实践。
1.0.2 负载测试执行
一旦测试计划就绪,就可以开始负载测试了。第一步是配置运行JMeter的注入器,这对于任何其他负载测试工具包括:
-
在CPU、内存和网络方面对机器进行正确的调整。
-
操作系统的优化
-
Java设置: 确保你安装Java支持的JMeter的最新版本。
-
正确调整Java堆大小: 默认的JMeter以512MB的堆运行,这可能对你的测试没什么帮助,主要取决于你的测试计划和你想要运行的线程数。
一旦一切就绪,你将使用命令行模式(称为非GUI模式)来运行负载测试。
不要使用GUI模式运行负载测试!
使用非gui模式,你可以生成包含CSV(或XML)结果的文件,并在负载测试结束时生成JMeter生成HTML报告。默认情况下,JMeter将在运行时提供负载测试的摘要。
你还可以使用后端侦听器在测试期间获得实时结果。
1.0.3 负载测试分析
负载测试结果后,可以使用HTML报告来分析负载测试。
1.0.4 让我们开始吧
开始使用JMeter最简单的方法是首先下载最新的产品版本并安装它。该版本包含构建和运行大多数类型的测试所需的所有文件,例如 Web(HTTP / HTTPS)、FTP、JDBC、LDAP、Java、JUnit等。
如果你想要执行JDBC测试,那么你当然需要来数据库供应商JDBC驱动程序。JMeter不包含任何JDBC驱动程序。
JMeter包括JMS API jar包,但不包括JMS客户端实现。如果要运行JMS测试,则需要从JMS提供下载适当的jar包。
有关安装其他jar包的详细信息,请参阅JMeter Classpath部分。
接下来,启动JMeter并通过创建测试计划来熟悉JMeter基础知识(例如,添加和删除元素)。
最后,通过相关章节的学习,了解如何创建特定类型的测试计划。例如,如果你对测试Web应用程序感兴趣,那么请参阅创建Web测试计划的部分。其他具体的测试计划部分是:
-
Advanced Web Test Plan
-
JDBC
-
FTP
-
JMS Point-to-Point
-
JMS Topic
-
LDAP
-
LDAP Extended
-
WebServices (SOAP)
一旦你熟悉构建和运行JMeter测试计划,你就可以查看各种配置元素(计时器、侦听器、断言和其他),这些元素可以让你对测试计划有更多的控制。
1.1 要求
要想运行JMeter,需要你的计算机环境满足一些要求。
1.1.1 Java版本
JMeter需要一个完全兼容的JVM 8,我们建议你安装这些主要版本的最新版本。但是,JMeter 3.2在Java 9没有完全测试。
因为JMeter只使用标准的Java APIs,所以,如果是由于JRE的实现问题导致JMeter无法运行请不要提交bug报告。
1.1.2 操作系统
JMeter是一个100%的Java应用程序,应该可以在任何具有兼容Java实现的系统上运行。
使用JMeter测试的操作系统可以这里wiki上查看。
即使你的操作系统没有在wiki页面上列出,JMeter也应该可以在JVM兼容的情况下运行。
1.2 可选项
如果你计划进行JMeter开发,那么你将需要下面列出的一个或多个可选包。
1.2.1 Java编译器
如果你想构建JMeter源或开发JMeter插件,那么你将需要一个完全兼容的JDK 8或更高版本。
1.2.2 Email支持
JMeter具有广泛的电子邮件功能。它可以根据测试结果发送电子邮件,并有一个POP3(S)/IMAP(S)采样器。它也有一个SMTP(S)采样器。
1.2.4 SSL加密
为了使用SSL加密(HTTPS)测试web服务器,JMeter要求提供SSL的实现,就像Sun Java 1.4和上面的例子一样。如果你的Java版本不包括SSL支持,那么可以添加一个外部实现。在JMeter classpath 中包含必要的加密包。同时,更新系统。属性来注册SSL提供者。
JMeter HTTP 默认协议级别为TLS。这可以通过编辑JMeter属性来改变 https.default.protocol 在 jmeter.properties 或 user.properties 。
JMeter HTTP samplers被配置为接受所有证书,不管是否可信,都不考虑有效时间,等等。 这是为了在测试服务器上允许最大的灵活性。
如果服务器需要客户端证书,则可以提供此证书。
还有SSL管理器,用于对证书进行更大的控制。
JMeter代理服务器(见下)支持记录HTTPS(SSL)。
SMTP sampler可以选择使用本地信任存储或信任所有证书。
1.2.5 JDBC驱动
如果你想进行JDBC测试,则需要将数据库供应商的JDBC驱动程序添加到classpath。确保文件是jar文件,而不是zip文件。
1.2.6 JMS客户端
JMeter现在包含来自Apache Geronimo的JMS API,因此你只需要从JMS提供者中添加适当的JMS客户端实现jar包。详情请参阅他们的文件。在JMeter Wiki也可能找到一些相关信息。
1.2.7 ActiveMQ JMS库
你需要添加 activemq-all-X.X.X.jar 到你的classpath,添加 ../lib/ 目录.
有关详细信息,请参阅 ActiveMQ初始配置页面。
有关安装jar包更多细节,请参见JMeter Classpath部分。
1.3 安装
我们建议大多数用户运行最新版本。
要安装一个发布版本,只需将zip/tar文件解压缩到需要安装JMeter的目录。如果你已经正确地安装了JRE/JDK并设置了JAVA_HOME环境变量集,那么你就没有别的事情可做了。
如果目录路径包含任何空格,那么可能会出现问题(特别是对于客户机-服务器模式)。
安装目录结构应该是这样的(这里的x.y表示版本号):
apache-jmeter-X.Y
apache-jmeter-X.Y/bin
apache-jmeter-X.Y/docs
apache-jmeter-X.Y/extras
apache-jmeter-X.Y/lib/apache-jmeter-X.Y/lib/ext
apache-jmeter-X.Y/lib/junit
apache-jmeter-X.Y/licenses
apache-jmeter-X.Y/printable_docs
如果需要,可以重命名父目录(即 apache-jmeter-X.Y),但是不要更改任何子目录名称。
1.4 运行JMeter
启动JMeter,Windows下面执行jmeter.bat文件,Unix下面执行jmeter文件。这些文件是可以在bin/目录中找到。接下来你将看到JMeter GUI出现。
GUI模式只能用于创建测试脚本,非GUI模式必须用于负载测试
在bin目录中还有一些你可能会发现有用的脚本。Windows脚本文件(CMD文件需要Win2K或更高版本):
jmeter.bat
启动JMeter (默认GUI模式)
jmeterw.cmd
启动JMeter没有windows shell控制台 (默认GUI模式)
jmeter-n.cmd
删除一个JMX文件在运行非GUI测试
jmeter-n-r.cmd
删除一个JMX文件在运行非GUI远程测试
jmeter-t.cmd
删除一个JMX文件在GUI模式下加载它
jmeter-server.bat
在服务器模式启动JMeter
mirror-server.cmd
在非GUI模式下运行JMeter镜像服务器
shutdown.cmd
运行关闭客户端,以优雅地停止非GUI实例
stoptest.cmd
运行关闭客户端,停止非GUI实例
The special name LAST can be used with jmeter-n.cmd , jmeter-t.cmd and jmeter-n-r.cmd and means the last test plan that was run interactively.
环境变量 JVM_ARGS 可以用来覆盖jmeter中的JVM设置,jmeter.bat脚本。例如:
set JVM_ARGS="-Xms1024m -Xmx1024m -Dpropname=propvalue" jmeter -t test.jmx …
Un*x 脚本文件; 应该在大多数Linux / UNIX系统上工作:
jmeter
启动JMeter (默认GUI模式). 定义一些可能不适用于所有JVM的JVM设置。
jmeter-server
在服务器模式启动JMeter (使用适当的参数调用jmeter脚本)
jmeter.sh
非常基础的JMeter脚本 (你可能需要调整JVM选项,比如内存设置).
mirror-server.sh
在非GUI模式下运行JMeter镜像服务器
shutdown.sh
运行关闭客户端,以优雅地停止非GUI实例
stoptest.sh
运行关闭客户端,停止非GUI实例
如果你使用的JVM不支持一些JVM选项,则可能需要编辑jmeter shell脚本。JVM_ARGS环境变量可以用来覆盖或设置额外的JVM选项,例如:
JVM_ARGS="-Xms1024m -Xmx1024m" jmeter -t test.jmx [etc.]
将重写脚本中的 堆 (HEAP)设置。
1.4.1 JMeter’s Classpath
JMeter自动在以下目录中找到jar类:
JMETER_HOME/lib
用于公共jar包
JMETER_HOME/lib/ext
用于JMeter组件和插件
如果你已经开发了新的JMeter组件,那么你应该将它们jar并将jar复制到JMeter的 lib/ext 目录中。JMeter将自动在这里发现的任何jar中找到JMeter组件。不要使用 lib/ext 用于公共jar或插件使用的依赖项jar;它只用于JMeter组件和插件。
如果你不希望在 lib/ext 目录中放置JMeter插件jar,那么在 jmeter.properties 中定义属性 search_paths 。
实用程序和依赖项jar(库等)可以放在 lib/ 目录中。
如果你不想在 lib/ 目录中放置这样的jar,那么可以在 jmeter.properties 通过 user.classpath 或 plugin_dependency_paths 定义属性。请参阅下文以解释这些差异。
其他jar(如JDBC、JMS实现和JMeter代码需要的其他支持库)应该放在 lib/ 目录中,而不是 lib/ext 目录,或者添加到 user.classpath。
JMeter只会找到.jar文件,而不是.zip文件。
你还可以在 $JAVA_HOME/jre/lib/ext 中安装公共Jar文件,或者可以在 jmeter.properties 中设置属性 user.classpath。
注意,设置 CLASSPATH 环境变量将没有效果。这是因为JMeter是以“java - jar”开头的,而java命令则默认忽略了CLASSPATH变量,使用 -jar
时的 -CLASSPATH
/ - cp
选项。
这将作用于所有的Java程序中,而不仅仅是JMeter。
1.4.2 通过模板创建能椒档计划
你可以从现有的模板创建一个新的测试计划。
你使用菜单: 文件 → Templates…
出现一个弹出窗口,你可以在列表中选择一个模板:
每个模板的文档说明从模板创建测试计划时要做什么。
1.4.3 使用JMeter设置代理
如果你正在防火墙/代理服务器的上进行测试,你可能需要为JMeter提供防火墙/代理服务器主机名和端口号。为此运行 jmeter[.bat] 文件需要使用以下参数:
-H
[代理服务器主机名或IP]
-P
[代理服务器的端口号]
-N
nonproxy hosts
-u
[代理认证的用户名——如果需要]
-a
[代理认证的密码——如果需要]
例如:
jmeter -H my.proxy.server -P 8000 -u username -a password -N localhost
你也可以使用 –proxyHost, –proxyPort, –username, 和 –password 作为参数名。
命令行上提供的参数可以在系统上的其他用户可见。
如果提供代理主机和端口,则JMeter设置以下系统属性:
-
http.proxyHost
-
http.proxyPort
-
https.proxyHost
-
https.proxyPort
如果提供了非代理主机列表,则JMeter设置以下系统属性:
-
http.nonProxyHosts
-
https.nonProxyHosts
因此,如果你不希望同时设置http和https代理,则可以定义系统中的相关属性。属性,而不是使用命令行参数。
也可以在测试计划中定义代理设置,使用HTTP请求默认配置或HTTP请求采样器元素。
JMeter也有自己的内置代理服务器,HTTP(S)测试脚本记录器。这仅用于记录HTTP或HTTPS浏览器会话。这与上面描述的代理设置不相混淆,当JMeter自己制作HTTP或HTTPS请求时,使用它们。
1.4.4 Non-GUI 模式(命令行模式)
对于负载测试,你必须在此模式下运行JMeter(没有GUI)才能获得最佳结果。为此,使用以下命令选项:
-n
它指定JMeter在非GUI模式下运行
-t
[包含测试计划的JMX文件的名称]
-l
[JTL文件的名称以日志样本为结果]
-j
[JMeter运行日志文件的名称].
-r
在 JMeter 属性“remote_hosts”指定的服务器上运行测试
-R
[远程服务器列表]在指定的远程服务器上运行测试
-g
[通往CSV文件的路径]只生成报表指示板
-e
负载测试后生成报表指示板
-o
输出文件夹,用于在负载测试后生成报告指示板。文件夹必须不存在或空,该脚本还允许你指定可选的防火墙/代理服务器信息:
-H
[代理服务器主机名或 IP 地址]
-P
[代理服务器端口]
例如:
jmeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000
如果属性 jmeterengine.stopfail.system.exit 设置为true(默认为false),然后JMeter将调用 System.exit(1) 如果它不能停止所有的线程。通常这是不必要的。
1.4.5 服务器模式
对于分布式测试,在远程节点上运行服务器模式的JMeter,然后从GUI控制服务器(s)。你还可以使用非GUI模式运行远程测试。启动服务器,运行 jmeter-server(.bat) 在每个服务器主机。
该脚本还允许你指定可选的防火墙/代理服务器信息:
-H
[代理服务器主机名或ip地址]
-P
[代理服务器端口]
例如:
jmeter-server -H my.proxy.server -P 8000
如果你希望服务器在运行一个测试后退出,那么请定义 JMeter property server.exitaftertest= true 。
要在非GUI模式的客户机上运行测试,请使用以下命令:
jmeter -n -t testplan.jmx -r [-Gprop=val] [-Gglobal.properties] [-X]
-G
用于定义JMeter属性被设置在服务器
-X
意味着退出服务器在测试结束
-Rserver1,server2
可以代替 -r 来提供一个服务器列表来启动。覆盖 remote_hosts ,但不定义属性。
如果属性 jmeterengine.remote.system.exit 设置为true(默认为false),然后JMeter将调用 System.exit(0) ,在测试结束后停止RMI。通常这是不必要的。
1.4.6通过命令行覆盖属性
可以直接在命令lin上重写Java系统属性和JMeter属性(而不是修改 jmeter.properties)。为此,请使用以下选项:
-D[prop_name]=[value]
定义java系统属性值。
- 上一篇:没有了
- 下一篇:没有了