入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

JMeter系列教程 | 官方文档翻译

创建时间:2018-01-12 投稿人: 浏览次数:939

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系统属性值。

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像