Jmeter使用手册(上)

JMETER中文手册

 

1。 开始

1.0概述

当使用JMeter你通常会遵循这个过程:

1.0.1测试计划建设

要做到这一点,你会的在GUI运行JMeter模式。 
然后你可以选择记录应用程序从一个浏览器,或本地应用程序。 您可以使用的菜单文件模板…记录 

请注意您也可以手动构建你的计划。 确保你读这篇文章文档了解主要概念。

您还将使用这些选项之一:调试它
  • 运行开始没有停顿
  • 运行开始
  • 验证线程组

树视图的结果渲染器或测试人员(CSS / JQUERY, JSON、Regexp XPath)。
确保你遵循最佳实践在构建您的测试计划。

1.0.2负载测试运行

一旦你的测试计划已经准备好了,你可以开始你的负载测试。 第一步是配置运行JMeter的注射器,这是其他任何负载测试工具包括:

  • 正确的机器尺寸的CPU、内存和网络
  • 操作系统调优
  • Java设置:确保您安装最新版本的Java JMeter的支持
  • 增加Java堆大小。 默认情况下运行JMeter堆1 GB,这对您的测试可能还不够,取决于您的测试计划和您想要运行的线程数量
一切准备就绪后,您将使用CLI模式(以前称为命令行模式非gui模式负载测试)来运行它。
不要使用GUI模式运行负载测试!

使用CLI模式,您可以生成一个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。

看到JMeter类路径部分细节安装额外的jar。

接下来,开始JMeter和经过建立一个测试计划部分 熟悉JMeter用户指南的基础(例如,添加和删除元素)。

最后,经过适当的部分如何构建一个特定类型的测试计划。 例如,如果您有兴趣测试一个Web应用程序,然后看到的部分构建一个Web测试计划。 其他具体的测试计划部分:

一旦你熟悉了构建和运行JMeter测试计划,你可以看看 各种配置元素(计时器,侦听器,断言,和其他人),给你更多的控制 在你的测试计划。

1.1需求

JMeter要求计算环境满足最低要求。

1.1.1 Java版本

JMeter是兼容Java 8或更高。 我们强烈建议您安装最新的小版本的主要版本安全与性能的原因。

因为JMeter只使用标准Java api,请不要文件错误报告如果你JRE运行失败 JMeter因为JRE的实现问题。

虽然您可以使用JRE,最好安装一个JDK作为HTTPS的记录,JMeter的需要keytool从JDK工具。

1.1.2操作系统

JMeter是一个100%的Java应用程序,应该任何系统上正确地运行 有一个兼容的Java实现。

操作系统使用JMeter测试可以查看这个页面在JMeter wiki。

即使你的操作系统是没有上市的wiki页面,JMeter应该运行在JVM是兼容的。

1.2可选

如果你打算做JMeter开发,那么你将需要下列一个或多个可选包。

1.2.1 Java编译器

如果你想建立JMeter源或开发JMeter插件,那么你需要一个完全兼容的JDK 8或更高。

1.2.2 SAX XML解析器

JMeter Apache的Xerces XML解析器。 你有告诉JMeter的选项 使用不同的XML解析器。 要做到这一点,包括第三方的类在JMeter的解析器类路径, 和更新jmeter.properties文件的完整名称解析器 实现。

1.2.3邮件支持

JMeter有着丰富的电子邮件功能。 它可以根据测试结果发送电子邮件,有一个POP3 / IMAP的取样器。 它也有一个SMTP (S)取样器。

1.2.4 SSL加密

测试一个web服务器使用SSL加密(HTTPS), JMeter要求一个 实现SSL提供,Sun Java 1.4及以上的情况。 如果你的版本的Java不包括SSL支持,那么可以添加一个外部实现。 在JMeter的包含必要的加密包类路径。 另外,更新system.properties注册SSL提供者。

JMeter HTTP违约TLS协议水平。 这可以通过编辑JMeter属性改变https.default.protocoljmeter.propertiesuser.properties

JMeter HTTP取样器配置为接受所有证书, 不管是否可信,不管时间有效性等。这是在测试服务器允许最大的灵活性。

如果服务器要求客户端证书,可以提供。

还有一SSL经理为更好的控制证书。

JMeter代理服务器(见下文)支持HTTPS (SSL)记录

SMTP取样器可以选择使用一个本地信任存储区或信任所有证书。

1.2.5 JDBC驱动程序

您需要添加数据库厂商的JDBC驱动程序类路径如果你想做JDBC测试。 确保文件是一个jar文件,而不是一个zip。

JMS客户端相对于1.2.6

JMeter现在包括从Apache Geronimo的JMS API,所以你只需要添加适当的JMS客户端实现 从JMS提供者jar (s)。 详情请参考其文档。 可能还有一些信息JMeter维基

1.2.7库编写ActiveMQ JMS

您需要添加jaractivemq-all-X.X.X.jar到您的类路径中,例如通过存储它lib /目录中。

看到ActiveMQ初始配置页面获取详细信息。

看到JMeter类路径部分安装额外的jar的更多细节。

1.3安装

我们建议大多数用户运行最新版本

要安装一个新的发布版本,只需解压zip / tar文件到目录中 你想要JMeter安装。 只要你有一个JRE / JDK安装正确 和JAVA_HOME环境变量设置,没有更多的对你。

可能有问题(尤其是在客户机-服务器模式)如果目录路径包含任何空格。

安装目录结构应该是这样的(在哪里X.Y是版本号):

你可以重命名父目录(即。apache-jmeter-X.Y)如果你想要,但是不改变任何子目录的名称。

1.4运行JMeter


JMeter运行,运行jmeter.bat(Windows)或jmeter(Unix)文件。 这些文件中发现的目录中。 在很短的时间之后,应该会出现JMeter GUI。

GUI模式只能用于创建测试脚本,CLI模式(非GUI)必须用于负载测试

有一些额外的脚本目录,您可能会发现有用的。 Windows脚本文件(.CMD文件需要Win2K或更高版本):

jmeter.bat
在GUI模式下运行JMeter(默认情况下)
jmeterw.cmd
运行JMeter没有windows shell控制台(在GUI模式默认情况下)
jmeter-n.cmd
下降一个JMX文件运行一个CLI模式测试
jmeter-n-r.cmd
下降一个JMX文件远程运行一个CLI模式测试
jmeter-t.cmd
下降一个JMX文件在GUI模式加载它
jmeter-server.bat
在服务器模式开始JMeter
mirror-server.cmd
在CLI模式下运行JMeter镜像服务器
shutdown.cmd
运行关闭客户端停止优雅CLI模式实例
stoptest.cmd
运行关闭客户端突然停止一个CLI模式实例
特殊的名字去年可以使用jmeter-n.cmd,jmeter-t.cmdjmeter-n-r.cmd和手段运行交互式地最后一个测试计划。

有一些环境变量,可以用来定制JMeter的JVM设置。 一个简单的方法来设置这些是通过创建一个文件命名setenv.bat目录中。 这样一个文件可能看起来像:

JVM_ARGS可以用来覆盖JVM设置的jmeter.bat脚本,并将设置在JMeter开始,例如:

环境变量可以定义如下:

DDRAW
JVM选项影响使用直接画,如。-Dsun.java2d.ddscale = true。 默认是空的。
GC_ALGO
JVM垃圾收集器的选择。 默认为- xx: + UseG1GC - xx: MaxGCPauseMillis = 250 - xx: G1ReservePercent = 20
JVM内存设置时使用JMeter开始。 默认为-Xms1g -Xmx1g - xx: MaxMetaspaceSize = 256
JMETER_BIN
JMeter bin目录(必须结束\)。 值将被猜到了,什么时候setenv.bat被称为。
JMETER_COMPLETE_ARGS
如果设置显示,JVM_ARGSJMETER_OPTS只使用,。 所有其他选项如GC_ALGO将被忽略。 默认是空的。
JMETER_HOME
安装目录。 从位置会猜到了吗jmeter.bat
JMETER_LANGUAGE
Java运行时选项来指定使用的语言。 默认为:-Duser。 语言=“en”-Duser.region =“en”
JM_LAUNCH
java可执行文件的名称,比如java.exe(默认)或javaw.exe
JVM_ARGS
当开始使用JMeter Java选项。 这将是最后一次添加到java命令。 默认为空

联合国* x脚本文件; 应该工作在大多数Linux / Unix系统:

jmeter
在GUI模式下运行JMeter(默认情况下)。 定义了一些JVM设置可能无法适用于所有JVM。
jmeter-server
在服务器模式开始JMeter(与合适的参数调用JMeter脚本)
jmeter.sh
非常基本的JMeter脚本(您可能需要调整JVM选项如内存设置)。
mirror-server.sh
在CLI模式下运行JMeter镜像服务器
shutdown.sh
运行关闭客户端停止优雅CLI模式实例
stoptest.sh
运行关闭客户端突然停止一个CLI模式实例

可能需要设置几个环境变量配置JMeter所使用的JVM。 这些变量可以是直接在shell启动设置jmeter脚本。 例如设置变量JVM_ARGS例如,将覆盖大部分预定义的设置呢

将覆盖堆设置脚本。

永久设置这些变量,你可以把它们在一个文件中setenv.sh目录中。 这个文件将运行JMeter通过调用时采购jmeter脚本。 为一个例子bin / setenv.sh可能看起来像:

环境变量可以定义如下:

GC_ALGO
Java运行时选项指定JVM的垃圾收集算法。 默认为- xx: + UseG1GC - xx: MaxGCPauseMillis = 250 - xx: G1ReservePercent = 20
Java运行时内存管理选项时使用JMeter是开始。 默认为-Xms1g -Xmx1g - x: MaxMetaspaceSize = 256
JAVA_HOME
必须在您的Java开发工具包安装。 运行“所需调试”的论点。 在一些操作系统JMeter将全力想JVM的位置。
JMETER_COMPLETE_ARGS
如果设置显示,JVM_ARGSJMETER_OPTS只使用,。 所有其他选项如GC_ALGO将被忽略。 默认是空的。
JMETER_HOME
可能指向您的JMeter安装dir。 如果空它将相对jmeter脚本。
JMETER_LANGUAGE
Java运行时选项来指定使用的语言。 默认为-Duser。 语言= en -Duser.region = en
JMETER_OPTS
Java运行时选项时使用JMeter是开始。 特别的选择操作系统可能被JMeter补充道。
JRE_HOME
必须在您的Java运行时安装点。 默认为JAVA_HOME如果是空的。 如果JRE_HOMEJAVA_HOME都是空的,JMeter将尝试猜猜吗JAVA_HOME。 如果JRE_HOMEJAVA_HOME都是集,JAVA_HOME使用。
JVM_ARGS
当开始使用JMeter Java选项。 这些将被添加JMETER_OPTS和在其他JVM选项。 默认为空

1.4.1 JMeter的类路径中

JMeter自动发现类的jar在以下目录:

JMETER_HOME / lib
用于utility jar
JMETER_HOME / lib / ext
用于JMeter组件和插件

如果你有新的JMeter组件开发, 那么你应该jar和jar复制到JMeter的lib / ext目录中。 JMeter JMeter组件会自动找到任何jar在这里找到。 不要使用lib / extutility jar或依赖jar文件所使用的插件; 它只是用于JMeter组件和插件。

如果你不想把JMeter插件jarlib / ext目录, 然后定义属性search_pathsjmeter.properties

效用和依赖jar文件可以放在(库等)自由目录中。

如果你不想把这样的罐子自由目录, 然后定义属性user.classpathplugin_dependency_pathsjmeter.properties。 见下文的解释不同。

其他jar(如JDBC、JMS实现和其他支持库所需的JMeter代码) 应该放在自由目录——而不是lib / ext目录, 或添加到user.classpath

JMeter只会找到. jar文件,不. zip

你也可以安装utility Jar文件$ JAVA_HOME / jre / lib / ext,或者你可以设置 财产user.classpathjmeter.properties

注意,设置类路径环境变量没有影响。 这是因为JMeter开始”java jar”, 和java命令默默地忽略了类路径变量,类路径/- cp选择的时候jar使用。

这发生在所有Java程序,而不只是JMeter。

1.4.2从模板创建测试计划

您可以创建一个新的测试计划从现有模板。

所以你使用菜单文件模板…或模板图标:

Templates icon item模板图标项

出现一个弹出,然后您可以选择一个模板列表包括:

Templates popup模板弹出

一些模板可能需要来自用户的输入参数。 对论文的,点击创建按钮后, 将出现一个新窗口如下图:

Parameters window参数窗口

当你完成了参数,点击验证按钮,将创建模板。

每个模板的文档解释了如何从模板创建测试计划之后。

您可以创建自己的模板文档在这里

3使用JMeter背后的一个代理

如果你从后面测试防火墙/代理服务器,您可能需要为JMeter提供 防火墙或代理服务器的主机名和端口号。 为此,运行jmeter (。bat)文件 从命令行以下参数:

- e
(代理方案使用非http -可选)
- h
(代理服务器主机名或ip地址)
- p
(代理服务器端口)
- n
nonproxy主机(如。* .apache.org | localhost)
- u
(代理身份验证用户名——如果需要的话)
——一个
(代理身份验证密码——如果需要的话)
例子:

您还可以使用--proxyScheme,--proxyHost,--proxyPort,--用户名,--密码作为参数名称

提供一个命令行参数可能对系统上的其他用户可见。

如果提供的代理方案,那么JMeter设置系统属性如下:

  • http.proxyScheme

如果代理提供主机和端口,然后JMeter设置系统属性如下:

  • http.proxyHost
  • http.proxyPort
  • https.proxyHost
  • https.proxyPort
如果提供了nonproxy主机列表,然后JMeter设置系统属性如下:
  • http.nonProxyHosts
  • https.nonProxyHosts

如果你不希望设置http和https代理, 您可以定义相关属性system.properties而不是使用命令行参数。

代理设置也可以定义在一个测试计划,使用HTTP请求违约配置或HTTP请求取样器元素。

JMeter也有它自己的内置代理服务器,HTTP (S)测试脚本录音机。 这只是用来记录HTTP或HTTPS浏览器会话。 这不是与上述代理设置,混淆时,使用JMeter使HTTP或HTTPS请求本身。

1.4.4 CLI模式(命令行模式被称为非GUI模式)

对于负载测试,您必须运行JMeter在这种模式下(没有GUI)来得到最优的结果。 为此,使用 下面的命令选项:

- n
这将指定JMeter是在cli模式下运行
- t
(名字JMX文件,其中包含测试计划)。
- l
(韩国乐团的名字文件记录样本结果]。
- j
JMeter运行日志文件的名称。
-r
在指定的服务器运行测试JMeter财产”remote_hosts
-R
(远程服务器列表)在指定的远程服务器上运行测试
-g
(CSV文件路径)生成报告只仪表板
- e
负载测试后生成报告仪表板
- o
输出文件夹生成负载测试后报告仪表板。 文件夹不存在或者是空的

脚本还允许您指定可选的防火墙/代理服务器信息:

- h
(代理服务器主机名或ip地址)
- p
(代理服务器端口)
例子

如果属性jmeterengine.stopfail.system.exit被设置为真正的(默认是), 然后JMeter将调用system . exit (1)如果不能停止所有线程。 通常这不是必要的。

1.4.5服务器模式

分布式测试在服务器模式,运行JMeter远程节点,然后控制服务器从GUI (s)。 您还可以使用CLI模式运行远程测试。 启动服务器,运行jmeter-server (。bat)在每个服务器主机。

脚本还允许您指定可选的防火墙/代理服务器信息:

- h
(代理服务器主机名或ip地址)
- p
(代理服务器端口)
例子:

如果你想退出服务器运行一个单独的测试后,然后定义JMeter属性server.exitaftertest = true

从客户机运行测试在CLI模式下,使用以下命令:

哪里:
- g
用于定义JMeter属性设置的服务器
- x
意味着退出服务器的测试
-Rserver1, server2
可以代替吗-r提供的服务器列表开始。 覆盖remote_hosts,但没有定义属性。

如果属性jmeterengine.remote.system.exit被设置为真正的(默认是), 然后JMeter将调用system . exit (0)测试结束后停止RMI。 通常这不是必要的。

1.4.6重写属性通过命令行

Java系统属性和JMeter属性可以直接覆盖在命令林 (而不是修改jmeter.properties)。 为此,使用以下选项:

- d [prop_name] =[value]
定义了一个java系统属性的值。
- j [prop_name] =[value]
定义了一个当地的JMeter的财产。
- g [prop_name] =[value]
定义了一个JMeter财产被发送到远程服务器。
- g (propertyfile)
包含JMeter属性来定义一个文件被发送到远程服务器。
- l[category]=[priority]
覆盖一个日志设置,设置一个特定类别优先级别。

- l国旗也可以使用未经根类别名称设置日志级别。

例子:

处理命令行属性在创业早期,但在日志系统已经成立。

1.4.7日志和错误消息

自3.2以来,JMeter日志没有通过配置属性文件(s)等jmeter.properties任何更多的, 但它是通过一个配置Apache Log4j 2配置文件 (log4j2.xml在JMeter推出的目录,默认情况下)。 此外,每个代码包括JMeter和插件必须使用SLF4J图书馆 自3.2年离开日志。

这是一个例子log4j2.xml文件为每个类别定义了两个日志输出源和Loggers节点。

所以,如果你想改变的日志级别org.apache.http例如类别调试水平, 你可以简单的添加(或取消)以下记录器元素log4j2.xml启动JMeter之前文件。有关如何配置的更多细节log4j2.xml文件, 请参阅Apache Log4j 2配置页面。

日志级别为特定类别或者根记录器可以直接覆盖在命令行(而不是修改log4j2.xml)。 为此,使用以下选项:

- l[category]=[priority]
覆盖一个日志设置,设置一个特定类别优先级别。 自3.2以来,推荐使用一个完整的类别名称(例如,org.apache.jmetercom.example.foo), 但如果类别名称开始jmeterjorphan,org.apache.将预先计划内部类别名称输入构造一个完整的类别名称(即,org.apache.jmeterorg.apache.jorphan向后兼容性。

例子:

不同的日志:旧的和新的实践:

JMeter使用SLF4J日志API和Apache Log4j 2作为一个日志框架自3.2以来,不是所有的日志级别 3.2完全匹配之前使用一个可用的新SLF4J / Log4j2提供的日志级别。 因此,请牢记以下差异和新建议的实践 如果你需要任何现有的日志配置和日志代码迁移。

类别旧习俗在3.2之前新的实践自3.2年
记录器参考 记录器参考通过LoggingManager:
LoggingManager。 getLoggerFor (String类);
LoggingManager.getLoggerForClass ();
使用SLF4J API与类别或明确的类:
LoggerFactory。 getlog (String类);
LoggerFactory.getLogger (Foo.class);
日志级别配置或命令行参数 旧日志级别:
  • 调试
  • 信息
  • 警告
  • 错误
  • FATAL_ERROR
  • 没有一个
通过SLF4J / Log4j2映射到一个新的水平:
  • 调试
  • 信息
  • 警告
  • 错误
  • 错误
FATAL_ERROR SLF4J API不支持, 它被视为错误相反,不打破现有的代码。 还有一致命的日志级别的选择。
跟踪特定的级别,这是小于调试3.2以来,另外支持。 查找SLF4J或Apache Log4J 2文件细节。
JMeter一般不会使用弹出错误对话框,因为这些会干扰 运行测试。 也不报告任何错误,错误地拼写变量函数;对方, 相反, 只是作为参考。 看到函数和变量的更多信息

如果JMeter测试期间检测到一个错误,一个消息将被写入到日志文件中。 日志文件中定义的名称log4j2.xml文件(或使用- j选项,见下文)。 它默认为jmeter.log,并将推出JMeter的目录中找到。

菜单选项日志查看器在底部窗格中显示日志文件主要JMeter窗口。

在GUI模式下,错误的数量/致命的消息在右上的登录日志文件显示。

Error/fatal counter错误/致命的计数器

命令行选项- j jmeterlogfile允许进程 在最初的读取属性文件之后, 之前,任何进一步的属性进行处理。 因此允许默认的jmeter.log覆盖。 jmeter的脚本,测试计划名称作为一个参数(如。jmeter-n.cmd)已经被更新 使用测试计划定义日志文件的名字, 如测试计划Test27.jmx将日志文件Test27.log

当运行在Windows上,文件就会出现jmeter除非你有设置窗口显示文件扩展名。 (你应该做的,让它更容易检测到病毒和其他有害物质,假装文本文件…)

以及记录错误,jmeter.log文件记录一些关于测试运行的信息。 例如:

日志文件可以帮助判断错误的原因, JMeter不中断测试显示一个错误对话。

1.4.8命令行选项的完整列表

调用JMeter是“jmeter - ?“将打印所有的命令行选项的列表。 这些如下所示。

注意:JMeter日志文件的名字是格式化为SimpleDateFormat(应用于当前日期) 如果它包含成对的单引号,.e.g。 ”jmeter_ yyyyMMddHHmmss . log

如果特别的名字去年用于- t,- j- l旗帜, 然后JMeter将意味着最后一个测试计划 这是在交互模式下运行。

1.4.9 CLI模式关闭

2.5.1版本之前,JMeter调用system . exit ()当一个CLI模式测试完成。 这对直接调用JMeter应用程序引起的问题,所以JMeter不再调用system . exit ()对于一个正常的测试完成。 (一些致命的错误仍然可能调用system . exit ()] JMeter将退出所有非守护线程开始,但它是可能的,一些非守护线程 可能依然存在; 这将防止JVM退出。 发现这种情况,JMeter启动一个新的守护进程线程前退出。 这个守护进程线程等待一会; 如果返回的等待,那么明显 JVM无法退出,说为什么线程打印一条消息。

房地产jmeter.exit.check.pause可以用来覆盖的默认暂停2000 ms(2秒)。 如果设置为0,然后JMeter不启动守护线程。

1.5配置JMeter

如果你想修改的属性JMeter运行需要 要么修改user.properties/ bin目录或创建 自己的副本jmeter.properties并在命令行中指定它。

注意:您可以定义额外的JMeter属性文件中定义的 JMeter财产user.properties有默认值吗user.properties。 文件将自动加载当前目录中找到 或者在JMeter bin目录中找到。 同样的,system.properties用于更新系统属性。

 命令行选项和属性文件按照以下顺序进行处理:

  1. - p propfile
  2. jmeter.properties(或文件的- p然后加载选项)
  3. -j logfile
  4. 日志记录是初始化
  5. user.properties加载
  6. system.properties加载
  7. 处理所有其他命令行选项

 

2。 建立一个测试计划

JMeter测试计划描述了一系列的步骤将运行时执行。 一个完整的 测试计划将包括一个或多个线程组,逻辑控制器,示例生成 控制器、监听器、计时器、断言和配置元素。

2.1添加和删除元素

添加元素一个测试计划可以通过右键单击一个元素的 树,选择一个新的元素从“添加”列表中。 此外,元素可以 从文件加载,通过选择“merge”或“open”选项。

删除一个元素,确保元素被选中,右键单击元素, 并选择“remove”选项。

2.2加载和保存元素

从文件加载一个元素,右键单击现有树元素 你想添加加载元素,并选择“merge”选项。 选择的文件 保存你的元素。 JMeter将合并到树的元素。

为了节省树元素,右键单击并选择一个元素“Save Selection As...”选项。 JMeter将保存选中的元素,加上下面所有子元素。 通过这种方式, 您可以保存测试树片段和单个元素,供以后使用。

2.3配置树元素

测试树中的任何元素将控制在JMeter的右手坐标系。 这些 控件允许您配置特定的测试元素的行为。 我们可以 配置为一个元素取决于什么类型的元素。

测试树本身可以通过拖放操作在测试组件树。

2.4保存测试计划

虽然不是必需的,我们建议您保存的测试计划 文件在运行之前。 保存测试计划,选择“保存”或“Save Test Plan As…“从 文件菜单(最新版本,它不再是必要的选择 测试计划元素第一)。

JMeter允许您保存整个测试计划树或 只有一部分。 只保存元素位于一个特定的“分支” 在测试计划的测试计划树中,选择树中的元素的开始 “分支”,然后点击你的鼠标右键访问”Save Selection As...”菜单项。 另外,选择适当的测试计划的元素,然后选择“Save Selection As...“从 编辑菜单。

2.5运行一个测试计划

运行您的测试计划,选择“start”(Control+r) 从“运行”菜单项。 JMeter运行时,它显示了一个绿色的小盒子的右手端部分菜单栏。 你也可以检查”运行”菜单。 如果“run“是禁用的,”stop“启用, 然后运行JMeter测试计划(或者,至少,它认为它是)。

数字左边的绿色箱子活动线程的数量/总数量的线程。 这些只适用于本地运行测试; 他们不包括任何线程开始远程系统在使用客户机/服务器模式。

这里所描述的那样使用GUI模式时只能使用调试您的测试计划。 真正的负载测试运行,使用CLI模式。

2.6停止测试

有两种类型的stop命令可以从菜单:

  • stop(Control+.)- - -立即停止线程如果可能的话。 许多取样器可中断这意味着积极的样品可以提前终止。 停止命令将检查所有线程已停止在默认的超时,5000毫秒= 5秒。 (这可以改变使用JMeter属性jmeterengine.threadstop.wait] 如果线程没有停止,那么将显示一条消息。 停止命令可以重试,但如果失败了,那么有必要退出JMeter清理。
  • shutdown(Control+,)- - -请求 当前线程结束时停止任何工作。 不会中断任何活跃的样本。 模态对话框关闭将保持活跃,直到所有线程已停止。
如果关闭耗时太长。 关闭关闭对话框,并选择运行/停止,或者只是按Control+.

当运行JMeter在CLI模式中,没有菜单,和JMeter等按键没有反应Control+.。 所以JMeter CLI模式在特定端口(默认侦听命令4445年,请参阅JMeter的财产jmeterengine.nongui.port)。 JMeter支持自动选择另一个端口如果使用默认端口 由另一个JMeter实例(例如)。 在这种情况下,JMeter将试着下一个更高的港口,继续,直到 它到达JMeter属性jmeterengine.nongui.maxport),默认为4455年。 如果maxport小于或等于什么港口,端口扫描将不会发生。
选择端口显示在控制台窗口中。
目前支持的命令是:

  • Shutdown——优雅的关闭
  • StopTestNow——立即关闭
使用这些命令可以发送shutdown[.cmd |.sh]stoptest [.cmd | . sh]脚本 分别。 在JMeter的脚本目录中。 该命令将只接受如果脚本运行相同的主机。

2.7错误报告

JMeter警告和错误的报告jmeter.log文件,以及一些测试运行本身的信息。 JMeter显示警告/错误发现的数量jmeter.log文件(三角形)的警告图标旁边的右手的窗口。 单击警告图标显示jmeter.log文件的底部JMeter的窗口中。 只是偶尔可能会有一些错误,JMeter无法陷阱和日志; 这些将会出现在命令控制台。 如果测试不像你期望的行为,请检查日志文件,以防任何错误报告(例如,可能是一个函数调用语法错误)。

抽样错误(例如HTTP 404 -文件未找到)通常不是发表在日志文件中。 而这些被存储为属性的示例结果。 样品的状态结果中可以看到各种不同的侦听器。

 

Apache JMeter是100%纯java桌面应用程序,被设计用来测试客户端/服务器结构的软件(例如web应用程序)。它可以用来测试包括基于静态和动态资源程序的性能,例如静态文件,Java Servlets,Java 对象,数据库FTP服务器等等。JMeter可以用来在一个服务器、网络或者对象上模拟重负载来测试它的强度或者分析在不同的负载类型下的全面性能。

另外,JMeter能够通过让你们用断言创建测试脚本来验证我们的应用程序是否返回了我们期望的结果,从而帮助我们回归测试我们的程序。为了最大的灵活性,JMeter允许我们使用正则表达式创建断言。

 

 

3。 测试计划的要素

本节描述一个测试计划的不同部分。

最小测试将包括测试计划,一个线程组和一个或多个采样。

3.0测试计划

测试计划的对象有一个复选框“功能测试". . 如果选中,它 将导致JMeter记录为每个样本从服务器返回的数据。 如果你有 选择一个文件在您的测试侦听器,这些数据将被写入文件。 这可能是有用的 你在做一个小运行以确保JMeter是正确配置,您的服务器 返回预期的结果。 结果是,文件将巨大的快速增长,和 JMeter的性能就会受到影响。 这个选项应该是如果你做压力测试(它 默认是关闭的)。

如果你不记录数据文件,这个选项没有区别。

您还可以使用配置按钮一个侦听器来决定哪些领域。

3.1线程组

线程组元素是测试计划的开始点。 所有控制器和取样器必须在线程组。 其他元素,例如侦听器,可以直接放置在测试计划, 在这种情况下,他们将适用于所有线程组。 顾名思义,该线程组 元素控制线程的数量JMeter将使用来执行您的测试。 的 一个线程组允许您控制:

  • 设置线程的数量
  • 设置过渡时期
  • 设置执行测试的次数

每个线程将执行完整的测试计划,完全独立 其他的测试线程。 多个线程用于模拟并发连接 你的服务器应用程序。

过渡时期告诉JMeter多久采取“快速启动”的全部数量 线程。 如果使用了10个线程,过渡时期是100秒 JMeter需要100秒让所有10个线程启动并运行。 每个线程将 前面的线程开始10(100/10)秒后开始了。 如果有30个线程 过渡时期的120秒,然后每个连续的线程将被延后4秒。

过渡需要足够长的时间,以避免太大的工作量 的测试和足够短,最后一个线程开始运行 第一批完成(除非人希望这样的事发生)。

从过渡状态=数量的线程并根据需要调整向上或向下。

默认情况下,线程组配置为通过它的元素循环一次。

线程组还提供了一个调度器。 单击复选框底部的线程组面板启用/禁用额外的字段 您可以输入测试的持续时间,启动延迟,运行的开始和结束时间。 您可以配置时间(秒)启动延迟(秒)控制 每个线程组的持续时间和多少秒后开始。 当测试开始,JMeter将等待启动延迟(秒)在启动线程前 线程组的配置和运行时间(秒)时间。 请注意这两个选项覆盖开始时间结束时间

或者(尽管不推荐不是非常灵活)可以使用两个其他领域开始时间结束时间。 当测试开始,JMeter将如果有必要等到启动时间。 每个周期结束时,JMeter检查结束时间已经达到了,如果是这样,运行停止, 否则,测试是可以继续,直到达到迭代限制。

3.2控制器

JMeter有两种类型的控制器:取样器和逻辑控制器。 这些驱动测试的处理。

取样器告诉JMeter发送请求到服务器。 为 例子,如果你希望JMeter取样器添加一个HTTP请求 发送一个HTTP请求。 你也可以通过添加一个自定义请求 取样器或多个配置元素。 更多的 信息,请参阅取样器

逻辑控制器JMeter用来让你定制逻辑 决定什么时候发送请求。 例如,您可以添加一个交错 逻辑控制器之间交替采样两个HTTP请求。 有关更多信息,请参见逻辑控制器

3.2.1取样器

取样器告诉JMeter向服务器发送请求并等待响应。 他们加工的顺序出现在树上。 控制器可以用来修改的重复取样器的数量。

JMeter取样器包括:

  • FTP请求
  • HTTP请求(可以用于SOAP或REST Webservice也)
  • JDBC的请求
  • Java对象请求
  • JMS请求
  • JUnit测试请求
  • LDAP请求
  • 邮件请求
  • 操作系统进程请求
  • TCP请求
你可以设置每个取样器有几个属性。 您可以进一步定制一个取样器通过添加一个或多个配置元素的测试计划。

如果你要发送相同类型的多个请求(例如, HTTP请求)到同一台服务器上,考虑使用一个默认的配置 元素。 每个控制器都有一个或多个默认元素(见下文)。

记得一个侦听器添加到您的测试计划来查看和/或存储 你请求的结果到磁盘。

如果你有兴趣在JMeter执行基本的验证 响应你的请求,添加一个断言来 取样器。 例如,在压力测试一个web应用程序,服务器 可能会返回一个成功的HTTP响应代码,但页面可能有错误或 可能失去的部分。 您可以添加断言检查特定的HTML标记, 常见的错误字符串,等等。 使用常规JMeter允许您创建这些断言 表达式。

JMeter的内置采样

3.2.2逻辑控制器

逻辑控制器JMeter用来让你定制逻辑 决定什么时候发送请求。 逻辑控制器可以改变订单的请求来自他们 子元素。 他们可以修改请求自己,导致JMeter重复 请求,等等。

了解逻辑控制器在测试计划的影响,考虑 以下测试树:

  • Test Plan
    • Thread Group
      • Once Only Controller
      • Load Search Page(HTTP取样器)
      • Interleave Controller
        • Search “A”(HTTP取样器)
        • Search “B”(HTTP取样器)
        • HTTP default request(配置元素)
      • HTTP default request(配置元素)
      • Cookie Manager(配置元素)

关于这个测试的第一件事是将只执行登录请求 第一次通过。 后续的迭代将跳过它。 这是由于 的影响Once Only Controller

在登录之后,下一个采样器加载搜索页面(想象一个 web应用程序的用户登录,然后去一个搜索页面搜索)。 这 只是一个简单的请求,而不是透过任何逻辑控制器。

加载搜索页面后,我们要做一个搜索。 实际上,我们想做的事 两个不同的搜索。 然而,我们想重新加载代码搜索页面本身 每个搜索。 我们可以做这个通过4简单的HTTP请求元素(加载搜索, 搜索“A”,加载搜索,搜索“B”)。 相反,我们使用Interleave Controller通过在一个孩子请求每通过一次考验。 它使 排序(即不通过一个随机,但“记住”)的 子元素。 交叉2孩子请求可能过度,但很容易 8日或20个孩子请求。

注意HTTP Request Defaults属于交错控制器。 想象一下,“Search A”和“Search B” 相同的路径信息(HTTP请求规范包含域,港口,方法,协议, 路径和参数,以及其他可选项目)。 这是有道理的——都是搜索请求, 达到相同的后端搜索引擎(一个servlet或cgi脚本,假设)。 而不是 配置两个HTTP路径字段相同的采样信息,我们 可以抽象的信息到一个单独的配置元素。 当交错 控制器“传递”要求“搜索”或“搜索B”,它将填补这一空白 值从HTTP默认请求配置元素。 所以,我们离开路径字段 空白的请求,并把这些信息放到配置元素。 在这个 情况下,这是一个小受益最多,但它展示了功能。

下一个元素树中的违约是另一个HTTP请求,这一次了 线程组本身。 线程组有一个内置的逻辑控制器,因此,它使用 此配置元素完全如上所述。 它填补了空白 要求通过。 它是非常有用的在web测试离开域 你所有的HTTP取样器元素领域空白,相反,把这些信息 成一个HTTP默认请求元素,添加到线程组。 通过这样做,你可以 不同的服务器上测试您的应用程序只通过改变一个行业在你的测试计划。 否则,您需要编辑每一个取样器。

最后一个元素是一个HTTP Cookie经理。 Cookie经理应该被添加到所有web -否则JMeter测试 忽略饼干。 通过添加它在线程组级别,我们确保所有HTTP请求 将共享相同的饼干。

逻辑控制器可以组合实现不同的结果。 看到的列表内置的 逻辑控制器

3.2.3测试片段

是一种特殊类型的测试片段的元素控制器那 存在于测试计划树作为线程组元素在同一水平。 它是著名的 从一个线程组,它并不执行,除非它是 引用的一个模块控制器或者一个Include_Controller

这个元素是纯粹在测试计划中代码重用

3.3侦听器

JMeter用户提供信息收集的测试用例 JMeter运行。 图结果侦听器情节上的响应时间图。 “树”视图结果侦听器显示取样器请求和响应的细节,和可以显示基本的HTML和XML表示响应。 其他侦听器提供总结或聚合信息。

另外,侦听器可以直接的数据到一个文件供以后使用。 JMeter提供领域的每一个侦听器来表示文件来存储数据。 还有一个配置按钮可以用来选择哪些字段保存,以及是否使用CSV或XML格式。

注意,所有侦听器保存相同的数据; 唯一的区别是数据的方式呈现在屏幕上。

侦听器可以添加测试的任何地方,包括直接根据测试计划。 他们只会收集数据元素或低于他们的水平。

有几个listenersJMeter的。

3.4定时器

默认情况下,一个JMeter线程按顺序执行取样器没有停顿。 我们建议您指定一个延迟通过添加一个可用的计时器 你的线程组。 如果你不添加一个延迟,JMeter可以压倒你的服务器 做太多的请求在很短的时间。

一个计时器将导致JMeter延迟一定的时间之前每一个 取样器的范围

如果您选择添加多个定时器线程组,JMeter的总和 的定时器和停顿的时间之前执行的采样定时器应用。 定时器可以添加采样的孩子或控制器为了限制应用的取样器。

提供一个停顿在一个测试计划的一个地方,一个可以使用流控制行动取样器。

3.5断言

断言允许你断言关于收到响应 服务器被测试。 使用断言,可以本质上,你的“测试” 应用程序返回你期望的结果。

例如,您可以断言一个查询的响应将包含一些 特定的文本。 您所指定的文本可以是一个perl风格正则表达式,和 可以表明,反应是包含文本,或应匹配 整个反应。

您可以添加断言任何取样器。 例如,您可以 添加一个断言一个HTTP请求,检查文本,“</ HTML>". . JMeter 将检查文本出现在HTTP响应。 如果JMeter没有找到 文本,那么它将标志着这是一个失败的请求。

注意,断言适用于所有的取样器范围。 限制一个断言一个取样器,添加断言作为取样器的一个孩子。

查看断言结果,添加断言侦听器线程组。 失败的断言也将出现在树视图和表侦听器, 并将计入错误%年龄例如聚合和总结报告。

3.6配置元素

一个配置元素与取样器工作。 虽然它不发送请求 (除了HTTP (S)测试脚本录音机),它可以添加或修改请求。

配置元素可以从只在树枝里面你把元素的地方。 例如,如果你把一个HTTP Cookie经理在一个简单的逻辑控制器,饼干经理 你只能访问HTTP请求控制器内部简单的逻辑控制器(见图1)。 Cookie管理器都可以访问HTTP请求“Web页面1”和“Web页面2”,但不是“Web页面3”。

同时,配置元素在一个树枝的优先级高于相同的元素在一个“父” 分支。 例如,我们定义了两个HTTP请求违约元素,“Web违约1”和“Web违约2”。 因为我们把“网络违约1”内回路控制器,只有“Web页面2”可以访问它。 另一个HTTP 请求将使用“网络默认值2”,因为我们把它在线程组(所有其他分支的“父”)。

Figure 1 -
    Test Plan Showing Accessibility of Configuration Elements图1 - 测试计划配置元素的可访问性
用户定义的变量配置元素是不同的。 它处理的开始测试,不管它在哪里。 为简单起见,建议放置元素只有在线程组的开始。

3.7预处理程序元素

取样器请求之前的预处理程序执行一些操作。 如果一个预处理程序附加到取样器元素,那么它将执行取样器元素之前运行。 预处理程序通常是用来修改的设置示例请求它运行之前,或更新变量不是从响应中提取文本。 看到范围规则为更多的细节在预处理程序执行。

3.8后处理器元素

后处理器执行一些操作后取样器请求。 如果后处理器连接到一个取样器元素,那么它将执行后,取样器元素。 后处理器是最常用来处理响应数据,常常提取值。 看到范围规则当执行后处理器的更多细节。

3.9执行顺序

  1. Configuration elements 配置元素
  2. Pre-Processors 预处理程序
  3. Timers 计时器
  4. Sampler 取样器
  5. Post-Processors 后处理器(除非SampleResult)
  6. Assertions断言(除非SampleResult)
  7. Listeners(除非SampleResult)
请注意,计时器,断言,前置和后处理器只是如果有取样器处理申请。 逻辑控制器和采样处理顺序出现在树中。 其他的测试元素处理根据找到的范围,和测试元素的类型。 (在一个类型、元素的顺序处理它们出现在树)。

例如,在以下测试计划:

  • 控制器
    • 后处理器1
    • 取样器1
    • 取样器2
    • 定时器1
    • 断言1
    • 预处理程序1
    • 定时器2
    • 后处理器2
执行的顺序是:
预处理程序1
定时器1
定时器2
取样器1
后处理器1
后处理器2
断言1

预处理程序1
定时器1
定时器2
取样器2
后处理器1
后处理器2
断言1

3.10范围规则

JMeter测试树包含元素层次和命令。 一些元素在测试树是严格的等级制度(侦听器,配置元素,后处理器,预处理器,断言,计时器),和一些主要是命令(控制器,取样器)。 当您创建您的测试计划,您将创建一个有序列表示例请求(通过采样)代表一组要执行的步骤。 这些请求通常是组织内控制器还命令。 鉴于以下测试树:

Example test tree示例测试树

请求的顺序将是,一,二,三,四。

一些控制器影响他们的子元素的顺序,你可以读到这些特定的控制器组件参考

其他元素层次。 例如,断言是分层测试树。 如果母公司是一个请求,然后应用于该请求。 如果它的 父母是一个控制器,然后它会影响所有请求的后裔 控制器。 在树下面的测试:

Hierarchy example层次结构的例子

断言# 1是仅适用于请求,而断言2和3 # 2应用于请求。

另一个例子,这一次使用定时器:

complex example复杂的例子

在本例中,请求命名,以反映他们的顺序将被执行。 计时器# 1将适用于请求两个,三个,四个层次的元素(注意顺序无关)。 断言3 # 1只适用于请求。 定时器2号将会影响所有的请求。

希望这些例子明确配置(分层)元素是如何应用的。 如果你想象每个请求传递了树枝,母公司,母公司的母公司,等等,每一次收集所有父母的配置元素,那么您将看到它是如何工作的。

配置元素头经理、饼干经理和授权管理器 从配置默认元素区别对待。 从配置中设置默认的元素合并成一组值取样器可以访问。 然而,从经理不合并设置。 如果不止一个经理在取样器的范围, 只有一个经理,但是目前还没有指定的方法哪一个使用。

3.11属性和变量

JMeter属性定义在jmeter.properties(见开始——配置JMeter更多的细节)。
jmeter属性是全球性的,主要是用于定义一些jmeter使用默认值。 例如房地产remote_hosts定义了服务器JMeter将尝试远程运行。 属性可以在测试计划中引用 ——看功能——读属性- - - - - - 但不能用于表值。

JMeter变量每个线程都是本地的。 每个线程的值可能是相同的,或者他们可能是不同的。
如果一个变量被一个线程更新,只改变线程变量的副本。 例如正则表达式提取器后处理器 将其变量根据其线程读过的样品,而这些可以使用 同样的线程。 对于如何引用变量和函数的细节,明白了函数和变量

注意,定义的值测试计划用户定义的变量配置元素 可用在启动时对整个测试计划。 如果相同的变量是由多个UDV元素定义的,然后最后一个生效。 一旦一个线程启动,初始设置的变量复制到每个线程。 等其他元素用户参数预处理程序或正则表达式提取器后处理器 可用于定义相同的变量(或创建新的)。 这些修正只适用于当前线程。

setProperty函数可用于定义一个JMeter的财产。 这些测试计划是全球性的,因此可用于线程间传递信息——应该是必要的。

变量和属性都是区分大小写的。

3.12使用变量parameterise测试

变量没有改变——他们可以定义一次,如果独处,不会改变的价值。 所以你可以使用它们作为表达式的速记,频繁的出现在一个测试计划。 常数在跑步或物品,但运行之间可能会有所不同。 例如,一个主机的名称,或在一个线程组线程的数量。

当决定如何构建一个测试计划, 记下哪些物品是不变的运行,但运行期间可能发生了变化。 决定对这些——一些变量名 可能使用一个命名约定,如加上前缀C_K_或者只使用大写字母 区分变量在测试期间,需要改变。 还要考虑哪些物品需要当地一个线程 例如计数器或价值观与正则表达式提取后处理器。 您可能希望使用一个不同的命名约定。

例如,您可以定义以下测试计划:

你可以参考这些测试计划中${host} ${threads}等。 如果你以后想要改变主机,只是改变的价值主机变量。 这为少量测试没问题,但变得乏味当测试许多不同的组合。 一个解决方案是使用属性来定义变量的值,例如:
你可以改变的部分或全部命令行上的值如下:

 

 

4。 构建一个Web测试计划

在本节中,您将学习如何创建一个基本的测试计划测试网站。 你会 创建5个用户发送请求在JMeter两页的网站。 同时,你会告诉用户运行测试两次。 的总数 请求用户请求(5)x (2) x(重复2次)= 20 HTTP请求。 来 建立测试计划,您将使用下列元素:线程组,HTTP请求,HTTP请求违约,图结果

更先进的测试计划,请参阅建立一个先进的Web测试计划

4.1添加用户

第一步你想做的每一个JMeter测试计划是添加一个线程组元素。 线程组告诉 JMeter的用户数量你想模拟,用户应该发送的次数 请求,请求他们应该送多少。

继续添加ThreadGroup元素首先选择测试计划, 点击你的鼠标右键添加菜单,然后选择 Add→ThreadGroup。

您现在应该看到测试计划下的线程组元素。 如果你不 看到的元素,那么“扩大”点击测试计划树 测试计划的元素。

接下来,您需要修改默认属性。 选择线程组元素 在树上,如果您还没有选择它。 您现在应该看到线程 JMeter的集团控制面板在正确的部分窗口(见图4.1 下图)


Figure 4.1. Thread Group with Default Values图4.1。 线程组的默认值

首先提供一个更具描述性的名字我们的线程组。 的名字 字段中,输入JMeter的用户。

接下来,增加用户的数量(称为线程)5。

下一个字段的过渡时期,保留默认值1 秒。 这个属性告诉JMeter多久开始每个之间的延迟 用户。 例如,如果你输入一个5秒的过渡时期,JMeter的意志 完成你所有的用户开始在年底前5秒。 所以,如果我们有 5用户和一个5秒过渡时期,然后开始用户之间的延迟 将1秒(5用户/ 5秒= 1用户每秒)。 如果你设置 值为0,那么JMeter将立即开始你所有的用户。

最后2的输入一个值 循环计数字段。 这个属性告诉JMeter多少次重复你的 测试。 如果你进入一个循环计数的值为1,然后JMeter只运行您的测试 一次。 JMeter反复运行您的测试计划,选择永远 复选框。

在大多数应用程序中,您必须手动接受 您所作的改变在一个控制面板。 然而,在JMeter,控制面板 你让他们自动接受您的更改。 如果你改变 一个元素的名称,这棵树将被更新后用新的文本 把控制面板(例如,当选择另一个树元素)。

参见图4.2完成JMeter用户线程组。


Figure 4.2. JMeter Users Thread Group图4.2。 JMeter用户线程组

4.2添加HTTP请求的默认属性

既然我们已经定义了用户,现在是时候来定义他们的任务 将被执行。 在本节中,您将指定默认设置 为您的HTTP请求。 然后,在4.3节中,您将添加HTTP请求 元素使用一些指定的默认设置。

首先选择JMeter用户(线程组)元素。 点击你的鼠标按钮 添加菜单,然后选择Add→→HTTP请求的配置元素 默认值。 然后选择这个新元素以查看其控制面板(见图4.3)。


Figure 4.3. HTTP Request Defaults图4.3。 HTTP请求违约

像大多数JMeter的元素,HTTP请求违约控制 小组名称字段,您可以修改。 在这个例子中,离开这一领域 默认值。

跳到下一个字段,它是Web服务器的服务器名称/ IP。 为 您正在构建的测试计划,所有HTTP请求将被发送到相同的 Web服务器,jmeter.apache.org。 这个域名输入到字段。 这是唯一的领域,我们将指定一个默认的,所以剩下的离开 字段保留默认值。

HTTP请求并没有告诉JMeter违约元素 发送一个HTTP请求。 它只定义的默认值 使用HTTP请求元素。

参见图4.4完成HTTP请求违约元素


Figure 4.4. HTTP Defaults for our Test Plan图4.4。 HTTP违约为我们的测试计划

4.3添加Cookie支持

几乎所有web测试应该使用cookie的支持,除非您的应用程序 特别不使用cookie。 要添加饼干支持,只需添加一个HTTP Cookie Manager对每一个线程组在你的测试计划。 这将确保每个线程都有自己的 cookie,但所有共享HTTP请求对象。


Figure 4.5. HTTP Cookie Manager图4.5。 HTTP Cookie经理

添加HTTP Cookie Manager,简单地选择线程组,并选择添加→ →HTTP配置元素 饼干经理,从编辑菜单,或者右键单击弹出菜单。

4.4添加HTTP请求

在我们的测试计划,我们需要做两个HTTP请求。 第一个是 JMeter主页(http://jmeter.apache.org/),第二个是对的 改变页面(http://jmeter.apache.org/changes.html)。

JMeter发送请求的顺序出现在树上。

通过添加第一个开始HTTP请求JMeter用户元素(add→Sampler→HTTP Request)。 然后,选择HTTP请求元素树中的和编辑以下属性 (见图4.6):

  1. Name字段改为“主页”。
  2. 将路径字段设置为“/”。 记住,你不需要设置服务器 名称字段,因为你已经在HTTP请求中这个值指定默认值 元素。

Figure 4.6. HTTP Request for JMeter Home Page图4.6。 HTTP请求JMeter主页

接下来,添加第二个HTTP请求和编辑(见以下属性 图4.7:

  1. Name字段更改为“Home page”。
  2. 将路径字段设置为“/ changes.html”。

Figure 4.7. HTTP Request for JMeter Changes Page图4.7。 HTTP请求JMeter页面变化

4.5添加一个侦听器来查看存储测试结果

最后一个元素是一个需要添加到您的测试计划侦听器。 这个元素是 负责将所有HTTP请求的结果存储在一个文件和展示 数据的可视化模型。

选择JMeter用户并添加一个元素图结果侦听器(Add→Listener →Backend Listener)。

4.6登录一个网站

这里不是这样的,但是有些网站要求您登录之前允许您执行某些操作。 在一个浏览器,登录将作为用户名和密码的形式, 和一个按钮提交表单。 按钮生成一个POST请求,通过表单项的值作为参数。

在JMeter,添加一个HTTP请求,并设置方法。 你需要知道的名称字段使用的形式,和目标页面。 这些可以通过检查发现登录页面的代码。 (如果这是很难做的,您可以使用JMeter代理记录器记录登录序列。) 设置路径的目标提交按钮。 单击Add按钮两次,输入用户名和密码信息。 有时登录表单包含额外的隐藏字段。 这些需要被添加。


Figure 4.8. Sample HTTP login request图4.8。 样本HTTP登录请求

4.7选择相同的用户或不同的用户

在创建一个测试计划时,每个线程组迭代,我们可以选择模拟相同的用户运行多个迭代, 或不同的用户运行一个迭代。 您可以配置这种行为在线程组元素,HTTP缓存管理器,HTTP Cookie Manager,HTTP授权管理器 由这个设置控制。


Figure 4.9. Choose the same user or different users图4.9。 选择相同的用户或不同的用户

你可以选择清除cookie缓存内容/授权在CookieManager /缓存管理器/授权管理器中, 或选择控制的线程组。


Figure 4.10. Use Thread Group to control CookieManager图4.10。 使用控制CookieManager线程组
Figure 4.11. Use Thread Group to control CacheManager图4.11。 使用线程组来控制缓存管理器
Figure 4.12. Use Thread Group to control Authorization Manager图4.12。 使用线程组控制授权管理器
 

 

5。 建立一个先进的Web测试计划

在本节中,您将学习如何创建先进测试计划测试网站。

一个基本的例子的测试计划,请参阅构建一个Web测试计划

5.1使用URL重写处理用户会话

如果您的web应用程序使用URL重写而不是饼干保存会话信息, 那么你需要做一些额外的工作来测试你的网站。

正确应对URL重写,JMeter需要解析HTML 接收从服务器和检索独特的会话ID,使用适当的HTTP URL重写修改器来完成这一任务。 只需输入您的会话ID的名称参数修改器,和它 会发现它并将它添加到每个请求。 如果请求已经有一个值,它将被取代。 如果“缓存会话Id ?”检查,最后发现会话Id将被保存, 将使用,如果前面的HTTP样本不包含一个会话id。

URL重写的例子

下载这个例子。 在图1所示 使用URL重写测试计划。 注意,URL重写SimpleController添加修饰语, 从而确保它只会影响请求SimpleController。

Figure 1 - Test Tree图1 -测试树

在图2中,我们看到了URL重写修改器GUI,只有为用户指定一个字段 会话ID的名称参数。 还有一个复选框,表明会话ID 是路径的一部分(用“;”分隔),而不是一个请求参数

Figure 2 - Request parameters图2 -请求参数

5.2使用http信息头管理器

HTTP信息头管理器允许您定制什么信息 JMeter发送HTTP请求头。 这个头包括属性如"User-Agent", "Pragma", "Referer"等。

HTTP信息头管理器,就像HTTP Cookie Manager, 应该被添加在线程组级别,除非出于某种原因,你想吗 指定不同的不同的标题HTTP请求对象 你的测试。

 

 

 

6。 构建一个数据库测试计划

在本节中,您将学习如何创建一个基本的测试计划测试数据库服务器。 您将创建50个用户2 SQL请求发送到数据库服务器。 同时,你会告诉用户运行测试100次。 所以,总数 用户的请求(50)x(2请求)x(重复100次)= 10 000年JDBC请求。 建立测试计划,您将使用下列元素:线程组,JDBC的请求,摘要报告

下面的例子使用了MySQL数据库驱动程序。 使用这个驱动程序,它包含. jar文件(如mysql-connector-java-X.X.X-bin.jar)必须复制到JMeter/ lib。目录(见JMeter的类路径中更多的细节)。

6.1添加用户

第一步你想做的每一个JMeter测试计划是添加一个线程组元素。 的线程组 告诉JMeter的用户数量你想模拟,用户应该多长时间 发送请求,他们应该发送的请求的数量。

继续添加ThreadGroup元素首先选择测试计划, 点击你的鼠标右键添加菜单,然后选择AddThreadGroup

您现在应该看到测试计划下的线程组元素。 如果你不 看到的元素,然后扩大通过单击测试计划树 测试计划的元素。

接下来,您需要修改默认属性。 选择线程组元素 在树上,如果您还没有选择它。 您现在应该看到线程 JMeter的控制面板在正确的部分窗口(见图6.1 下图)


Figure 6.1. Thread Group with Default Values图6.1。 线程组的默认值

首先提供一个更具描述性的名字我们的线程组。 的名字 字段中,输入JDBC的用户

你需要一个有效的数据库,数据库表和用户级访问 表。 这里所示的示例中,数据库的“cloud”和表名 ”vm_instance”。

接下来,增加用户的数量50

下一个字段的过渡时期,离开的价值10秒。 这个属性告诉JMeter多久开始每个之间的延迟 用户。 例如,如果你输入一个10秒的过渡时期,JMeter的意志 完成你所有的用户开始在年底前10秒。 所以,如果我们有 50个用户和一个10秒过渡时期,然后开始用户之间的延迟 将200毫秒(10秒/ 50用户= 0.2秒/用户)。 如果你设置 值为0,那么JMeter将立即开始你所有的用户。

最后,输入一个值One hundred.在 循环计数字段。 这个属性告诉JMeter多少次重复你的 测试。 JMeter反复运行您的测试计划,选择永远 复选框。

在大多数应用程序中,您必须手动接受 您所作的改变在一个控制面板。 然而,在JMeter,控制面板 你让他们自动接受您的更改。 如果你改变 一个元素的名称,这棵树将被更新后用新的文本 把控制面板(例如,当选择另一个树元素)。

参见图6.2完成JDBC用户线程组。


Figure 6.2. JDBC Users Thread Group图6.2。 JDBC用户线程组

JDBC 6.2添加请求

既然我们已经定义了用户,现在是时候来定义他们的任务 将被执行。 在本节中,您将指定JDBC请求 执行。

首先选择JDBC的用户元素。 点击你的鼠标按钮 得到添加菜单,然后选择AddConfig ElementJDBC Connection Configuration。 然后,选择这个新元素以查看其控制面板(见图6.3)。

设置以下字段(这些假设我们将使用一个MySQL数据库名为“cloud”):

  • 变量名(这里:myDatabase)绑定到池中。 这就需要来唯一地标识该配置。 它使用JDBC取样器来确定要使用的配置。
  • 数据库URL:jdbc: mysql: / / ipOfTheServer: 3306 /cloud
  • JDBC驱动程序类:com.mysql.jdbc.Driver
  • 用户名:数据库的用户名
  • 密码:密码的用户名

屏幕上的其他领域可作为默认值。

JMeter创建一个数据库连接池的配置设置在控制面板中指定。 池是JDBC所请求的变量名”字段。 可以使用几种不同的JDBC配置元素,但他们必须有唯一的名称。 每个JDBC请求必须引用一个JDBC配置池。 不止一个JDBC请求可以引用同一池。


Figure 6.3. JDBC Configuration图6.3。 JDBC配置

再次选择JDBC用户元素。 点击你的鼠标按钮 得到添加菜单,然后选择AddSamplerJDBC Request。 然后,选择这个新元素以查看其控制面板(见图6.4)。


Figure 6.4. JDBC Request图6.4。 JDBC的请求

在我们的测试计划,我们会让两个JDBC请求。 第一个是 选择所有运行的VM实例,第二是选择“删除”(显然你应该VM实例 改变这些例子适合您的特定的数据库)。 这些 如下例所示。

JMeter的顺序发送请求,你将它们添加到树中。

开始通过编辑以下属性(见图6.5):

  • 改名为“VM Running”。
  • 输入池名称:“myDatabase“一样(在配置元素)
  • 输入SQL查询字符串字段。
  • 输入参数值字段的Running的价值。
  • 输入的参数类型”VARCHAR”。

Figure 6.5. JDBC Request for the first SQL request图6.5。 JDBC请求第一SQL请求

接下来,添加第二个JDBC请求和编辑以下属性(参见 图6.6):

  • 改名为“VM Expunging”。
  • 改变Parameter values的值为‘Expunging”。

Figure 6.6. JDBC Request for the second request图6.6。 JDBC请求第二个请求

6.3将侦听器添加到视图/存储测试结果

最后一个元素是一个需要添加到您的测试计划侦听器。 这个元素是 负责将所有JDBC请求的结果存储在一个文件中 并呈现结果。

选择JDBC的用户元素,并添加一个摘要报告侦听器(AddListenerSummary Report)。

保存测试计划,并运行测试菜单RunStartCtrl+R

侦听器显示了结果。


Figure 6.7. Graph results Listener
图6.7。 图结果侦听器
 
 
 

7。 构建一个FTP测试计划

在本节中,您将学习如何创建一个基本的测试计划测试一个FTP站点。 你会 创建四个用户发送两个文件在一个FTP站点的请求。 同时,你会告诉用户运行测试两次。 的总数 请求用户请求(4)x (2) x(重复2次)= 16 FTP请求。

建立测试计划,您将使用下列元素:线程组,FTP请求,FTP请求违约,视图的结果表

7.1添加用户

第一步你想做的每一个JMeter测试计划是添加一个线程组元素。 线程组告诉 JMeter的用户数量你想模拟,用户应该发送的次数 请求,他们应该发送的请求的数量。

继续添加线程组元素首先选择测试计划, 点击你的鼠标右键添加菜单,然后选择AddThreadGroup。

您现在应该看到线程组元素在测试计划。如果你不 看到的元素,那么“扩大”点击测试计划树测试计划元素。

接下来,您需要修改默认属性。 选择线程组元素 在树上,如果您还没有选择它。 您现在应该看到线程 JMeter的集团控制面板在正确的部分窗口(见图7.1 下图)


Figure 7.1. Thread Group with Default Values图7.1。 线程组的默认值

首先为我们提供了一个更具描述性的名称线程组。的名字 字段中,输入“FTP用户”。

接下来,用户的数量增加到4。

下一个字段的快速启动时期,保留默认值0 秒。 这个属性告诉JMeter多久开始每个之间的延迟 用户。 例如,如果你输入一个快速启动5秒,JMeter的意志 完成你所有的用户开始在年底前5秒。 所以,如果我们有 5用户和一个5秒快速启动期,然后开始用户之间的延迟 将1秒(5用户/ 5秒= 1用户每秒)。 如果你设置 值为0,那么JMeter将立即开始你所有的用户。

最后,输入一个值为2 的循环计数字段。 这个属性告诉JMeter多少次重复你的 测试。 JMeter反复运行测试计划,选择永远复选框。

在大多数应用程序中,您必须手动接受 您所作的改变在一个控制面板。 然而,在JMeter,控制面板 你让他们自动接受您的更改。 如果你改变 一个元素的名称,这棵树将被更新后用新的文本 把控制面板(例如,当选择另一个树元素)。

参见图7.2完成FTP用户线程组。


Figure 7.2. FTP Users Thread Group图7.2。 FTP用户线程组

7.2添加默认FTP请求属性

既然我们已经定义了用户,是时候定义的任务 将被执行。 在本节中,您将指定默认设置 为您的FTP请求。 然后,在7.3节中,您将添加FTP请求元素使用一些指定的默认设置。

首先选择FTP用户元素。 点击你的鼠标按钮 添加菜单,然后选择AddConfig ElementFTP Request Default。然后,选择这个新元素以查看其控制面板(见图7.3)。


Figure 7.3. FTP Request Defaults图7.3。 FTP请求违约

像大多数JMeter的元素,FTP请求违约控制 小组名称字段,您可以修改。 在这个例子中,离开这一领域 默认值。

跳到下一个字段,它是FTP服务器的服务器名称/ IP。 为 您正在构建的测试计划,所有FTP请求将被发送到相同的 在这种情况下FTP服务器ftp.domain.com。 这个域名输入到字段。 这是唯一的领域,我们将指定一个默认的,所以剩下的离开 字段保留默认值。

并没有告诉JMeter FTP请求违约元素 发送一个FTP请求。 它只定义的默认值 使用FTP请求元素。

参见图7.4完成FTP请求违约元素


Figure 7.4. FTP Defaults for our Test Plan图7.4。 FTP违约为我们的测试计划

7.3添加FTP请求

在我们的测试计划,我们需要两个FTP请求

JMeter发送请求的顺序出现在树上。

通过添加第一个开始FTP请求FTP用户元素(AddSamplerFTP Request)。 然后,选择FTP请求树中的元素和编辑以下属性 (见图7.5):

  1. 改变的名字“File1”。
  2. 改变远程文件场/目录中。
  3. 改变用户名字段“匿名”。
  4. 改变密码字段“anonymous@test.com”。
你不需要设置服务器名称场,因为你已经指定 这个值的FTP请求违约元素。

Figure 7.5. FTP Request for file1图7.5。 FTP请求file1

接下来,添加第二个FTP请求和编辑(见以下属性 图7.6:

  1. 改变的名字“File2”。
  2. 改变远程文件字段“/目录/ file2.txt”。
  3. 改变用户名字段“匿名”。
  4. 改变密码字段“anonymous@test.com”。

Figure 7.6. FTP Request for file2图7.6。 FTP请求file2

7.4将侦听器添加到视图/存储测试结果

你需要添加最后一个元素测试计划是一个侦听器。 这个元素是 负责存储所有的结果FTP请求在一个文件并呈现 数据的可视化模型。

选择元素并添加一个FTP用户视图的结果表侦听器(AddlistenerView Results In Table)。

运行您的测试和查看结果。


Figure 7.7. View Results in Table Listener
图7.7。 表侦听器中查看结果
 
 
 
 

8。 构建一个LDAP测试计划

在本节中,您将学习如何创建一个基本的测试计划测试LDAP服务器。 您将创建四个用户发送请求四LDAP服务器上测试。 同时,你会告诉 用户运行测试4次。 所以,请求的总数(4个用户)x(4请求) (重复4次)= 64 LDAP请求。 建立测试计划,您将使用下列元素:线程组,LDAP请求,LDAP请求违约,视图的结果表

这个例子假定LDAP服务器可在ldap.test.com。

8.1添加用户

第一步你想做的每一个JMeter测试计划是添加一个线程组元素。 线程组告诉JMeter的用户数量你想模拟,用户应该发送的次数 请求,他们应该发送的请求的数量。

继续添加ThreadGroup元素首先选择测试计划,点击你的 鼠标右键来获得添加菜单,然后选择AddThreadGroup。 您现在应该看到 线程组元素下的测试计划。 如果您没有看到的元素,然后测试计划树的“扩大” 点击测试计划元素。


Figure 8a.1. Thread Group and final test tree
图8 . 1。 线程组和最终测试树

8. 2添加登录配置元素

首先选择LDAP用户元素。 点击你的鼠标 按钮添加菜单,然后选择AddConfig ElementLoginConfig Element。 然后,选择这个新元素以查看其控制面板。

像大多数JMeter的元素,登录配置元素控制面板有一个名字 可以被修改。 在这个例子中,离开这个字段的默认值。


  Figure 8a.2 Login Config Element for our Test Plan
图8。 2登录配置元素对我们的测试计划

输入用户名字段“LDAP User”,
密码字段“LDAP Password”

这些值将使用LDAP请求。

8个。 3添加LDAP请求违约

首先选择LDAP用户元素。 点击你的鼠标按钮 得到添加菜单,然后选择AddConfig ElementLDAP Request Defaults。 然后, 选择这个新元素以查看其控制面板。

像大多数JMeter的元素,LDAP请求违约控制面板有一个名字 可以被修改。 在这个例子中,离开这个字段的默认值。


  Figure 8a.3 LDAP Defaults for our Test Plan
图8。 为我们的测试计划3 LDAP违约
 
输入DN字段”LDAP根专有名称”。
输入LDAP服务器的Servername字段”ldap.test.com”。
port:389
这些值默认为LDAP请求。

8.4添加LDAP请求

在我们的测试计划,我们需要四个LDAP请求。

  1. 内置的添加测试
  2. 内置搜索测试
  3. 内置的修改测试
  4. 内置删除测试

JMeter的顺序发送请求,你将它们添加到树中。 先将第一个LDAP请求添加到LDAP用户元素 (AddSamplerLDAP Request)。 然后,选择LDAP请求树中的元素 和编辑以下属性

  1. 重命名为“添加“这个元素
  2. 选择添加测试单选按钮的测试配置集团

                  Figure 8a.4.1 LDAP Request for Inbuilt Add test图8 a.4.1 LDAP请求内置添加测试

你不需要设置Servername领域,港口领域,用户名,密码DN因为你已经指定这个值登录配置元素LDAP请求违约。

接下来,添加第二个LDAP请求和编辑以下 属性

  1. 重命名为“搜索“这个元素
  2. 选择搜索测试单选按钮的测试配置集团

接下来,添加第三个LDAP请求和编辑以下属性


                  Figure 8a.4.2 LDAP Request for Inbuilt Search test图8 a.4.2 LDAP请求内置搜索测试
  1. 重命名为“修改“这个元素
  2. 选择修改测试单选按钮的测试配置集团

接下来,添加第四个LDAP请求和编辑以下属性


                  Figure 8a.4.3 LDAP Request for Inbuilt Modify test图8 a.4.3 LDAP请求内置修改测试
  1. 重命名为“删除“这个元素
  2. 选择删除测试单选按钮的测试配置集团

                  Figure 8a.4.4 LDAP Request for Inbuilt Delete test图8 a.4.4 LDAP请求内置删除测试

8个。 5添加响应断言

您可以添加一个响应断言元素。 这个元素将检查接收到的响应数据通过验证如果响应文本”成功的”。 (AddAssertionRequest Assertion)。

注意:这个树中的位置, 断言将为每个LDAP执行请求的响应。
  1. 选择文本响应单选按钮的应对现场测试集团
  2. 选择子字符串单选按钮的模式匹配规则集团
  3. 点击添加按钮和添加字符串”成功的“在模式测试

  Figure 8a.5 LDAP Response Assertion
图8。 5 LDAP响应断言

8. 6一个侦听器添加到视图/存储测试结果

最后一个元素需要添加到您的测试计划是一个侦听器。 这个元素是负责存储所有LDAP的结果 请求一个文件和呈现的视觉模型数据。 选择LDAP 用户在表元素,并添加一个视图的结果 (AddListenerView Results in Table)


  Figure 8a.6 View Results in Table Listener
图8。 6表侦听器视图的结果
 

8 b。 建立一个扩展LDAP测试计划

在本节中,您将学习如何创建一个基本的测试计划测试LDAP 服务器。

扩展的LDAP取样器是高度可配置的,这也意味着它 一些时间来建立一个正确的测试规划。 然而你可以调整它到你的 的需求。

您将创建1用户发送请求九LDAP服务器上测试。 同时,你会告诉 用户运行测试一次。 所以,请求的总数用户(1)x(9请求) (重复一遍)= 9LDAP请求。 建立测试计划,您将使用下列元素:
线程组,
添加LDAP请求违约,
添加LDAP请求,
将一个侦听器添加到视图/存储测试结果

这个例子假定LDAP服务器是可用的ldap.test.com

对于缺乏经验的LDAP用户,我建立一个小 LDAP教程这就解释了 几个LDAP操作,可用于构建一个复杂的测试规划。

照顾在使用LDAP特殊字符的专有名称,在这种情况下(例如,您想要使用一个+注册一个 专有名称)你需要逃避性格通过添加一个”\”的牌子在那之前的性格。 额外的例外:如果你想添加一个\字符在一个专有名称(在添加或重命名操作),您需要使用反斜杠。

例子:

 

 

8 b。 1添加用户

第一步你想做的每一个JMeter测试计划是添加一个线程组元素。 线程组告诉JMeter的用户数量你想模拟,用户应该发送的次数 请求,他们应该发送的请求的数量。

继续添加线程组首先选择元素测试计划,点击你的 鼠标右键来获得添加菜单,然后选择AddThread(User)Thread Group。 您现在应该看到线程组元素在测试计划。 如果您没有看到的元素,然后测试计划树的“扩大” 点击测试计划元素。


Figure 8b.1. Thread Group with Default Values图8责任。 线程组的默认值

8 b。 2添加LDAP请求违约

用户首先选择LDAP Ext元素。 点击你的鼠标按钮 得到添加菜单,然后选择AddConfig ElementLDAP Extended Request Defaults。 然后, 选择这个新元素以查看其控制面板。

像大多数JMeter的元素,LDAP扩展请求违约控制面板有一个名字 可以被修改。 在这个例子中,离开这个字段的默认值。


  Figure 8b.2 LDAP Defaults for our Test Plan
图8 b。 为我们的测试计划2 LDAP违约

对于每个不同的操作,可以填写一些默认值。 在所有情况下,当一个默认的填充,这是用于LDAP请求延长。 对于每个请求,您可以填写的值覆盖默认的LDAP请求延长取样器。 当没有输入值为一个测试是必要的,以不可预知的方式测试会失败!

我们不会在这里输入任何默认值,我们会建立一个非常小的测试规划,我们将解释所有的不同领域,当我们添加LDAP扩展采样。

8 b。 3添加LDAP请求

在我们的测试计划,我们想使用所有9 LDAP请求。

  1. 线程绑定
  2. 搜索测试
  3. 比较测试
  4. 单一的bind / unbind测试
  5. 添加测试
  6. 修改测试
  7. 重命名条目(moddn)
  8. 删除测试
  9. 线程解开

JMeter的顺序发送请求,你将它们添加到树中。

添加一个请求总是先:
添加LDAP请求延长LDAP用户Ext元素(AddSamplerLDAP Ext Request)。 然后,选择LDAP Ext请求树中的元素 和编辑以下属性。

8 b.3.1添加一个线程绑定请求

  1. 重命名的元素:“1。 线程绑定
  2. 选择“线程绑定”按钮。
  3. 输入主机名值的LDAP服务器Servername字段
  4. 进入portnumber从LDAP服务器(636年:在港口领域ldap通过SSL)
  5. (可选)进入baseDN在DN字段中,将使用这个baseDN作为搜索的起始点,添加、删除等。
    照顾这必须的共享水平为所有你的要求,例如,当所有信息存储ou =用户,dc =测试,dc = combasedn中,您可以使用这个值。
  6. (可选)输入您想要使用用户的专有名称进行身份验证。 当这个字段是空的,一个匿名绑定将建立。
  7. (可选)输入你想进行身份验证的用户的密码,一个空的密码也将导致一个匿名绑定。
  8. (可选)输入一个值与LDAP连接超时
  9. (可选)复选框使用安全LDAP协议如果你访问LDAP通过SSL (LDAP)
  10. (可选)复选框TrustAll如果你想让客户信任所有证书

Figure 8b.3.1. Thread Bind example图8 b.3.1。 线程绑定的例子

8 b.3.2添加一个搜索请求

  1. 重命名的元素:“2。 搜索测试
  2. 选择“搜索测试”按钮。
  3. (可选)进入searchbase下你想执行搜索,相对于basedn,用于绑定请求的线程。
    空的时候,作为搜索basedn基地,这文件是很重要的,如果你想使用一个“基本项”或“一级”的搜索(见下文)
  4. 进入searchfilter,任何像样的LDAP搜索筛选器会做,但是现在,使用一些简单的,喜欢(sn = Doe)(cn = *)
  5. (可选)范围字段中输入范围,它有三个选择:
    1. baseobject搜索
      只使用给定searchbase,只有检查属性或存在。
    2. onelevel搜索
      只搜索一个水平低于给定searchbase使用
    3. 子树搜索
      搜索对象在任何时候低于给定basedn
  6. (可选)大小限制,指定返回条目的最大数量,
  7. (可选)时间限制,指定最大的毫秒数,服务器可以使用来执行搜索。 这不是应用程序将等待的最长时间。
    很大returnset返回时,从一个非常快的服务器,在一个非常缓慢,你可能需要等待很长时间搜索请求的完成,但是这个参数不会影响。
  8. (可选)你想要在搜索答案属性。 这可以用来限制大小的答案,特别是当有非常大的属性(比如一个对象jpegPhoto)。 有三种可能性:
    1. 离开空(默认设置也必须是空的)这将返回所有属性。
    2. 放在一个空值(”“),它将请求一个不存在的属性,所以在现实中它没有返回任何属性
    3. 的属性,用分号隔开。 它将只返回所请求的属性
  9. (可选)返回对象。 检查将返回所有java对象属性,将添加这些请求的属性,如上面指定的。
    不意味着没有java对象属性将返回。
  10. (可选)废弃的别名。 检查将意味着它将跟随引用,不不会说。
  11. (可选)解析搜索结果。 检查将意味着它会导致响应数据,不不会说。

Figure 8b.3.2. search request example图8 b.3.2。 搜索请求的例子

8 b.3.3添加一个比较请求

  1. 重命名的元素:“3所示。 比较测试
  2. 选择“比较”按钮。
  3. 输入你想要的entryname形式的对象比较操作工作,相对于basedn。 ”cn = jdoe, ou =Users
  4. 进入过滤器相比,这一定是形式”属性=值”,如。 ”mail= jdoe@test.com

Figure 8b.3.3. Compare example图8 b.3.3。 比较的例子

8 b.3.4添加一个bind / unbind

  1. 重命名的元素:“4所示。 单一的bind / unbind测试
  2. 选择“单一的bind / unbind”按钮。
  3. 输入你想要的全部来自用户的专有名称用于身份验证。
    如。cn = jdoe, ou =Users,dc =test,dc = com当这个字段是空的,一个匿名绑定将建立。
  4. 输入你想进行身份验证的用户的密码,一个空的密码也将导致一个匿名绑定。
照顾:这一个bind / unbind实际上是两个独立的操作但不容易分裂!
Figure 8b.3.4. Single bind/unbind example图8 b.3.4。 单一的bind / unbind例子

8 b.3.5添加一个添加请求

  1. 重命名的元素:“5。 添加测试
  2. 选择“添加”按钮。
  3. 输入对象的专有名称添加,相对于basedn。
  4. 添加一行在“添加测试”表,填写属性和值。
    当你需要不止一次相同的属性,添加一个新行,再加属性,一个不同的值。
    所有必要的属性和值必须指定通过测试,见图!
    (有时服务器添加属性”objectClass =最高”,这可能会给一个问题。

Figure 8b.3.5. Add request example图8 b.3.5。 添加请求示例

8 b.3.6添加一个修改的请求

  1. 重命名的元素:“6。 修改测试
  2. 选择“修改测试”按钮。
  3. 输入对象的专有名称修改,相对于basedn。
  4. 添加一行在“修改测试“表,与“添加”按钮。
  5. 您需要输入您想修改属性,值(可选),操作码。 这个操作码的意思:
    添加
    这将意味着属性值(而不是可选的,在这种情况下)将被添加到属性。
    当属性不存在,它将被创建和附加价值
    现有的,和多值定义,添加了新的价值。
    当现有的,但单值,它就会失败。
    取代
    这将覆盖属性与给定的新值(可选)
    当属性不存在,它将被创建和附加价值
    当它现有的旧值删除,添加了新的价值。
    删除
    当没有赋值,所有的值将被删除
    只给出一个值时,该值将被删除
    当给定值不存在,测试就会失败
  6. (可选)在“添加更多的修改修改测试”表。
    所有修改指定必须成功,让修改测试通过。 当一个修改失败, 任何修改将条目将保持不变。

Figure 8b.3.6. Modify example图8 b.3.6。 修改示例

8 b.3.7添加一个重命名请求(moddn)

  1. 重命名的元素:“7所示。 重命名条目(moddn)
  2. 选择“重命名输入”按钮。
  3. 输入条目的名称,相对于baseDN,在“旧条目名称”字段。
    也就是说,如果你想重命名”cn =小John Doe, ou =用户”,设置“baseDNdc =test,dc = com”, 你需要输入“cn =约翰初级能源部,ou =用户“在旧条目名称字段。
  4. 输入新名称的条目,相对于baseDN,在“新的专有名称”字段。
    当你只修改RDN,它只会重命名的条目
    还当你添加一个不同的子树,例如你改变cn = john doe, ou =Userscn = john doe, ou = oldusers,它将条目。 你也可以移动整个子树(如果您的LDAP服务器支持这个!),例如:ou =Users,ou =retired,ou = oldusers, ou =Users, 这将完整的子树,加上子树中所有退休人员的新地方的树。

Figure 8b.3.7. Rename example
图8 b.3.7。 重命名的例子

8 b.3.8添加删除请求

  1. 重命名的元素:“8。 删除测试
  2. 选择“删除”按钮。
  3. 输入条目的名称,相对于baseDN删除字段。
    也就是说,如果你想要删除”cn =John Junior Doe,ou =Users,dc =test,dc = com”,设置“baseDNdc =test,dc = com”, 你需要输入“cn =John Junior Doe,ou =Users“在删除字段。

Figure 8b.3.8. Delete example图8 b.3.8。 删除示例

8 b.3.9添加一个解放的要求

  1. 重命名的元素:“9。 线程解开
  2. 选择“线程解开”按钮。 这将是足够的,因为它只是关闭当前连接。 这需要的是已知的信息系统

Figure 8b.3.9. Unbind example图8 b.3.9。 解放的例子

8 b。 4一个侦听器添加到视图/存储测试结果

最后一个元素需要添加到您的测试计划是一个侦听器。 这个元素是负责存储所有LDAP的结果 请求一个文件和呈现的视觉模型数据。 选择线程组 元素,并添加一个树视图的结果(AddListenerView Results Tree)


Figure 8b.4. View Result Tree Listener图8 b.4。 查看结果树侦听器

在这个监听器有三个选项卡查看、取样器的结果,请求和响应数据。

    1. 取样器的结果只包含响应时间,returncode并返回消息
    2. 请求给一个简短的描述的要求,在实践中没有相关信息 包含在这里。
    3. 响应数据包含的全部细节发送请求,以及收到的全部细节的答案, 这是在一个xml样式(自定义)。可以在这里找到完整的描述。
 
 

9。 建立一个网络服务的测试计划

在本节中,您将学习如何创建一个测试计划测试一个网络服务。 你会 创建5个用户发送请求到一页。 同时,你会告诉用户运行测试两次。 的总数 请求用户请求(5)x (1) x(重复2次)= 10 HTTP请求。 来 建立测试计划,您将使用下列元素:线程组,HTTP请求,综合图

如果取样器从webservice似乎得到一个错误,双重检查 SOAP消息,并确保是正确的格式。 特别是,确保xmlns属性完全相同的WSDL。 如果xml名称空间 不同,网络服务可能会返回一个错误。

9.1创建网络服务的测试计划

在我们的测试计划中,我们将使用一个. net网络服务。 我们不会去写的细节 网络服务。 如果你不知道如何编写一个网络服务,谷歌 网络服务和熟悉编写web服务 Java和。net。 应该注意的有显著差异 之间如何。net和Java web服务实现。 这个话题太 广泛覆盖的用户手册。 请参考其他来源 得到一个更好的主意的差异。

JMeter发送请求的顺序出现在树上。

首先使用菜单FileTemplates…并选择模板”Building a SOAP Webservice Test Plan”。 然后,点击“Create”按钮。


Figure 9.1.0. Webservice Template
图9.1.0。 网络服务模板改变如下:
  1. 在“HTTP请求违约“改变”IP的服务器名称
  2. 在“Soap请求”,改变“路径:Figure 9.1.1 Webservice Path图9.1.1 Webservice路径

接下来,选择“HTTP Header Manager“和更新”SOAP Action“头来匹配你的网络服务。 一些web服务可能不使用SOAPAction在这种情况下,删除它。
目前,只有net使用SOAPAction,所以它是正常的空白SOAPAction对于所有其他web服务。 列表包括JWSDP, Weblogic, Axis, The Mind Electric Glue, and gSoap.

Figure 9.1.2 Webservice Headers图9.1.2 Webservice头

最后一步是粘贴的SOAP消息”身体数据” 文本区域。

Figure 9.1.3 Webservice Body图9.1.3 Webservice的身体

9.2添加用户

线程组告诉 JMeter的用户数量你想模拟,用户应该发送的次数 请求,他们应该发送的请求的数量。

选择线程组元素 在树上,如果您还没有选择它。 您现在应该看到线程 JMeter的集团控制面板在正确的部分窗口(见图9.2 下图)


Figure 9.2. Thread Group with Default Values图9.2。 线程组的默认值

首先提供一个更具描述性的名字我们的线程组。 的名字 字段中,输入JMeter的用户。

接下来,增加用户的数量(称为线程)10。

下一个字段的过渡时期,保留默认值0 秒。 这个属性告诉JMeter多久开始每个之间的延迟 用户。 例如,如果你输入一个5秒的过渡时期,JMeter的意志 完成你所有的用户开始在年底前5秒。 所以,如果我们有 5用户和一个5秒过渡时期,然后开始用户之间的延迟 将1秒(5用户/ 5秒= 1用户每秒)。 如果你设置 值为0,那么JMeter将立即开始你所有的用户。

最后,清除复选框标记为“永远”,并输入一个值2在 循环计数字段。 这个属性告诉JMeter多少次重复你的 测试。 如果你进入一个循环计数的价值0,然后JMeter只运行您的测试 一次。 JMeter反复运行您的测试计划,选择永远复选框。

在大多数应用程序中,您必须手动接受 您所作的改变在一个控制面板。 然而,在JMeter,控制面板 你让他们自动接受您的更改。 如果你改变 一个元素的名称,这棵树将被更新后用新的文本 把控制面板(例如,当选择另一个树元素)。

参见图9.2完成JMeter用户线程组。


Figure 9.3. JMeter Users Thread Group图9.3。 JMeter用户线程组

9.3添加一个侦听器来查看存储测试结果

最后一个元素是一个需要添加到您的测试计划侦听器。 这个元素是 负责将所有HTTP请求的结果存储在一个文件和展示 数据的可视化模型。

选择JMeter用户并添加一个元素综合图侦听器 (添加侦听器综合图). 接下来,您需要指定一个目录和文件名 输出文件。 你可以到文件名字段类型,或选择 浏览按钮,浏览到一个目录,然后输入一个文件名。


Figure 9.4. Graph Results Listener图9.4。 图结果侦听器

9.4其他网络服务

测试其他网络服务非常相似,你只需要修改在HTTP请求

  • 方法:选择一个你想要测试
  • 身体数据:可JSON、XML或任何自定义文本
你可能还需要修改”HTTP Header Manager“选择正确的”Content-type
 
 
 
 

10。 建立一个JMS点对点测试计划

确保所需的jar文件在JMeter的自由目录中。 如果他们不是,关闭JMeter, 重启JMeter复制jar文件。 看到开始获取详细信息。

在本节中,您将学习如何创建一个测试计划测试一个JMS点到点消息传递解决方案。 测试的设置是1与5线程发送4 threadgroup每通过一个请求队列的消息。 固定应答队列将用于监测应答消息。 建立测试计划,您将使用 以下元素:线程组,JMS点对点,图结果

一般笔记JMS:目前有两个JMS采样。 一个使用JMS主题 和另一种使用队列。 主题通常被称为发布/订阅消息传递的消息。 主题消息通常是用在这种情况下,消息由生产者和出版 被多个订阅者。 JMS取样器需要JMS实现的jar文件; 例如,从Apache ActiveMQ。 看到在这里的列表 ActiveMQ提供的jar。

10.1添加一个线程组

第一步你想做的每一个JMeter测试计划是添加一个线程组元素。 线程组告诉 JMeter的用户数量你想模拟,用户应该发送的次数 请求,他们应该发送的请求的数量。

继续添加ThreadGroup元素首先选择测试计划, 点击你的鼠标右键添加菜单,然后选择AddThreadGroup

您现在应该看到测试计划下的线程组元素。 如果你不 看到的元素,那么“扩大”点击测试计划树 测试计划的元素。

接下来,您需要修改默认属性。 选择线程组元素 在树上,如果您还没有选择它。 您现在应该看到线程 JMeter的控制面板在正确的部分窗口(见图10.1 下图)


Figure 10.1. Thread Group with Default Values图10.1。 线程组的默认值

首先提供一个更具描述性的名字我们的线程组。 的名字 字段中,输入点对点

接下来,增加用户的数量(称为线程)5

下一个字段的过渡时期,将值设置为0 秒。 这个属性告诉JMeter多久开始每个之间的延迟 用户。 例如,如果你输入一个5秒的过渡时期,JMeter的意志 完成你所有的用户开始在年底前5秒。 所以,如果我们有 5用户和一个5秒过渡时期,然后开始用户之间的延迟 将1秒(5用户/ 5秒= 1用户每秒)。 如果你设置 值为0,那么JMeter将立即开始你所有的用户。

清除复选框标记为“永远”,并输入一个值4在循环 计算字段。 这个属性告诉JMeter多少次重复测试。 如果你进入一个循环计数的价值0,然后JMeter只运行您的测试 一次。 JMeter反复运行您的测试计划,选择永远复选框。

在大多数应用程序中,您必须手动接受 您所作的改变在一个控制面板。 然而,在JMeter,控制面板 你让他们自动接受您的更改。 如果你改变 一个元素的名称,这棵树将被更新后用新的文本 把控制面板(例如,当选择另一个树元素)。

10.2添加JMS点对点的取样器

开始通过增加采样器JMS点对点点对点的元素 (AddSamplerJMS Point-to-Point)。 然后,选择JMS点对点取样器元素树。 在构建示例将提供一个配置,使用ActiveMQ 3.0。

名字价值描述
JMS资源
QueueConnectionFactory ConnectionFactory 这是默认的连接工厂的JNDI条目在ActiveMQ。
JNDI Name Request
Q.REQ 这等于在JNDI属性定义的JNDI名称。
JNDI Name Reply Queue
Q.RPL 这等于在JNDI属性定义的JNDI名称。
消息属性
Communication Style
请求响应 这意味着您需要至少一个服务运行JMeter之外,将响应请求。 该服务必须听请求队列,将消息发送到队列的引用message.getJMSReplyTo ()
Content 测试 这是消息的内容。
JMS Properties
  ActiveMQ所需。
JNDI属性
InitialContextFactory org.apache.activemq.jndi.ActiveMQInitialContextFactory 的标准InitialContextFactory ActiveMQ
属性
queue.Q.REQ example.A 这定义了一个JNDI名称Q.REQ为请求队列指向队列
queue.Q.RPL example.B 这定义了一个JNDI名称Q.RPL点到队列的应答队列example.B
提供者URL
Provider URL tcp: / / localhost: 61616 这个定义的URL ActiveMQ消息传递系统。

10.3添加一个侦听器来查看存储测试结果

最后一个元素是一个需要添加到您的测试计划侦听器。 这个元素是 负责将所有JMS请求的结果存储在一个文件和展示 数据的可视化模型。

选择并添加一个线程组的元素图结果侦听器 (AddListenerGraph Results). 接下来,您需要指定一个目录和文件名 输出文件。 你可以到文件名字段类型,或选择 浏览按钮,浏览到一个目录,然后输入一个文件名。


Figure 10.2. Graph Results Listener图10.2。 图结果侦听器
 
 
 
 

11。 建立一个JMS主题测试计划

JMS需要下载一些可选的罐子。 请参考开始全部细节。

在本节中,您将学习如何创建一个测试计划测试JMS提供者。 你会 创建五个用户和出版商。 您将创建两个线程组和组 每一个到10迭代。 总消息线程(6)x(1消息) (重复10次)= 60消息。 建立测试计划,您将使用 以下元素:线程组,JMS的出版商,JMS用户,图结果

一般笔记JMS:目前有两个JMS采样。 一个使用JMS主题 和另一种使用队列。 主题通常被称为发布/订阅消息传递的消息。 主题消息通常是用在这种情况下,消息由生产者和出版 被多个订阅者。 队列消息通常是用于交易 发送方期待响应。 消息传递系统有很大的不同 正常的HTTP请求。 在HTTP中,单个用户发送一个请求并获得响应。 信息系统可以在同步和异步模式下工作。 JMS取样器的需求 JMS实现的jar文件; 例如,从Apache ActiveMQ。 看到在这里列表的ActiveMQ提供的jar。

11.1添加用户

第一步是添加一个线程组元素。 线程组告诉JMeter的用户数量你想模拟, 多长时间用户应该发送请求,请求他们应该多少 发送。

继续添加ThreadGroup元素首先选择测试计划, 点击你的鼠标右键添加菜单,然后选择AddThreadGroup

您现在应该看到测试计划下的线程组元素。 如果你不 看到的元素,那么“扩大”点击测试计划树 测试计划的元素。

接下来,您需要修改默认属性。 选择线程组元素 在树上,如果您还没有选择它。 您现在应该看到线程 JMeter的控制面板在正确的部分窗口(见图11.1 下图)


Figure 11.1. Thread Group with Default Values图11.1。 线程组的默认值

首先提供一个更具描述性的名字我们的线程组。 的名字 字段中,输入用户

接下来,增加用户的数量(称为线程)5

下一个字段,过渡时期,将值设置为0秒。 这个属性告诉JMeter多久开始每个之间的延迟 用户。 例如,如果你输入一个5秒的过渡时期,JMeter的意志 完成你所有的用户开始在年底前5秒。 所以,如果我们有 5用户和一个5秒过渡时期,然后开始用户之间的延迟 将1秒(5用户/ 5秒= 1用户每秒)。 如果你设置 值为0,JMeter将立即开始所有用户。

清除复选框标记为“永远”,并输入一个值10在循环 计算字段。 这个属性告诉JMeter多少次重复测试。 如果你进入一个循环计数的价值0,然后JMeter只运行您的测试 一次。 JMeter反复运行您的测试计划,选择永远复选框。

重复这个过程,添加另一个线程组。 第二个线程 组,输入“出版商在name字段,设置线程的数量1, 并设置迭代10

在大多数应用程序中,您必须手动接受 您所作的改变在一个控制面板。 然而,在JMeter,控制面板 你让他们自动接受您的更改。 如果你改变 一个元素的名称,这棵树将被更新后用新的文本 把控制面板(例如,当选择另一个树元素)。

11.2添加JMS用户和出版商

确保所需的jar文件在JMeter的自由目录中。 如果他们是 JMeter关闭,重启JMeter复制jar文件。

开始通过增加采样器JMS用户用户元素 (AddSamplerJMS Subscriber)。 然后,选择JMS用户树中的元素和编辑以下属性:

  1. Name字段更改为“Sample Subscriber
  2. 如果JMS提供者使用jndi.properties文件,选中复选框
  3. 输入InitialContextFactory类的名称。 例如,使用ActiveMQ 5.4,值是“org.apache.activemq.jndi.ActiveMQInitialContextFactory
  4. 输入提供者URL。 这是JNDI服务器的URL,如果有的话。 例如,使用ActiveMQ 5.4在本地机器上使用默认端口,价值是“tcp: / / localhost: 61616
  5. 输入连接工厂的名称。 请参考文档 JMS提供者的信息。 ActiveMQ,默认是“ConnectionFactory
  6. 输入消息的主题的名称。 ActiveMQ动态主题(动态地创建主题),值是“dynamicTopics / MyStaticTopic1
    注意:设置在启动意味着JMeter开始监听目标没有名称的改变可能在开始测试。 设置在每个样本均值JMeter(重新)开始运行每个JMS用户示例之前,听 最后一个选项允许有目的地名称有些JMeter变量
  7. 如果JMS提供者需要身份验证,检查”request”,进入 用户名和密码。 例如,猎户座JMS需要身份验证,而ActiveMQ 和MQSeries不
  8. 输入10在“Number of samples to aggregate”。 由于性能原因,取样器 将聚合信息,因为小消息将很快到达。 如果取样器 没有聚合的消息,JMeter无法跟上。
  9. 如果你想阅读响应,复选框
  10. 有两个客户端实现用户。 如果JMS提供展品僵尸线程和一个客户端,试试另一个。

Figure 11.2. JMS Subscriber图11.2。 JMS用户

接下来添加取样器JMS的出版商出版商元素 (AddSamplerJMS Publisher)。 然后,选择JMS出版商元素在树上和编辑以下属性:

  1. Name字段更改为“Sample Subscriber”。
  2. 如果JMS提供者使用jndi.properties文件,选中复选框
  3. 输入InitialContextFactory类的名称。 例如,使用ActiveMQ 5.4,值是“org.apache.activemq.jndi.ActiveMQInitialContextFactory
  4. 输入提供者URL。 这是JNDI服务器的URL,如果有的话。 例如,使用ActiveMQ 5.4在本地机器上使用默认端口,价值是“tcp: / / localhost: 61616
  5. 输入连接工厂的名称。 请参考文档 JMS提供者的信息。 ActiveMQ,默认是“ConnectionFactory
  6. 输入消息的主题的名称。 ActiveMQ动态主题(动态地创建主题),值是“dynamicTopics / MyStaticTopic1”。
    注意:设置在启动意味着JMeter开始与目的地没有名称的改变可能在开始测试。 设置在每个样本均值JMeter(重新)开始连接在运行每个JMS出版商示例之前, 最后一个选项允许有目的地名称有些JMeter变量
  7. 如果JMS提供者需要身份验证,检查”request”,进入 用户名和密码。 例如,猎户座JMS需要身份验证,而ActiveMQ 和MQSeries不
  8. 输入10在“Number of samples to aggregate”。 由于性能原因,取样器 将聚合信息,因为小消息将很快到达。 如果取样器 没有聚合的消息,JMeter无法跟上。
  9. 选择适当的配置消息发布。 如果你 希望取样器随机选择消息,将消息放到一个目录中 使用浏览并选择目录。
  10. 选择消息类型。 如果消息在对象格式或地图信息,确保 消息是正确地生成的。

Figure 11.3. JMS Publisher图11.3。 JMS的出版商

11.3添加一个侦听器来查看存储测试结果

最后一个元素是一个需要添加到您的测试计划侦听器。 这个元素是 负责将所有HTTP请求的结果存储在一个文件和展示 数据的可视化模型。

选择测试计划并添加一个元素图结果侦听器 (AddListenerGraph Results). 接下来,您需要指定一个目录和文件名 输出文件。 你可以到文件名字段类型,或选择 浏览按钮,浏览到一个目录,然后输入一个文件名。


Figure 11.4. Graph Results Listener
图11.4。 图结果侦听器
 
 
 
 

12。 介绍侦听器

一个侦听器是一个组件,显示的结果 样本。 结果可以显示在一个树,表格,图表或简单地写入到日志中 文件。 查看的内容反应任何给定的采样器,添加的监听器”视图 结果树”或“视图的结果表一个测试计划。 查看图形的响应时间,添加 图的结果。侦听器部分组件的页面完整描述所有的侦听器。

不同的侦听器以不同的方式显示的响应信息。 然而,他们都写相同的原始数据到指定的输出文件——如果一个。

配置”按钮可以用来指定哪些字段写入文件,以及是否 把它写成CSV或XML。 比XML文件CSV文件要小得多,所以使用CSV如果你生成了大量的样品。

文件名可以指定使用一个相对或绝对路径名。 相对路径解析相对于当前工作目录(默认bin /目录)。 JMeter还支持路径相对于包含当前目录测试计划(JMX文件)。 如果路径名始于“~/”(或任何jmeter.save.saveservice.base_prefixJMeter属性), 那么路径被认为是相对于JMX文件位置。

如果你只希望记录某些样本,取样器的添加侦听器作为一个孩子。 或者你可以使用一个简单的控制器组一组采样,并将侦听器添加到。 可以使用相同的文件名由多个采样,但确保他们都使用相同的配置!

12.1默认配置

默认的项目可以定义在得救jmeter.properties(或user.properties)文件。 属性被用作初始设置监听器配置弹出,和也 用于指定的日志文件- l命令行标志(通常用于CLI模式测试运行)。

改变默认格式,发现下面的线jmeter.properties:

jmeter.save.saveservice.output_format =

信息保存的是可配置的。 最大的信息,选择“xml“格式和指定”功能测试模式在测试计划的元素。 如果不检查这个盒子,默认保存 数据包含一个时间戳(午夜以来的毫秒数, 1970年1月1日UTC),数据类型,线程名称,标签, 响应时间、消息和代码,一个成功的指标。 如果勾选此项,所有的信息,包括完整的响应数据将被记录。

下面的例子显示如何设置 属性来得到一个竖线(“|会”)分隔的格式 输出结果:。

相应的jmeter.properties需要设置如下所示。 一个奇怪的地方 在这个例子中是,output_format被设置为csv,这 通常 表明逗号分隔值。 然而,default_delimiter是 将一个竖线,而不是一个逗号,因此csv标签 在这种情况下用词不当。 (认为CSV意义字符分隔值)

属性,影响结果的全套文件输出如下所示。


日期格式用于timestamp_format描述的是 SimpleDateFormat。 时间戳的格式用于写作和阅读文件。 如果格式设置为“女士”,并作为一个长整数列不解析, JMeter(2.9 +)将下列格式:

  • yyyy / MM / dd HH: MM: ss.SSS
  • yyyy / MM / dd HH: MM: ss
  • yyyy-MM-dd HH: mm: ss.SSS
  • yyyy-MM-dd HH: mm: ss
  • MM / dd / yy HH: MM: ss(这是为了兼容以前的版本; 不建议作为一种格式)
匹配(non-lenient)现在也严格。 2.8和更早的JMeter宽松模式导致使用时间戳与不正确的日期 通常是正确的(倍)。

12.1.1样本变量

JMeter支持sample_variables属性定义一个额外的JMeter变量列表的得救 韩国乐团中的每个样本文件。 的值将被写入到CSV文件作为额外的列, 和附加属性的XML文件。 在上面看到了一个例子。

12.1.2样本结果保存配置

侦听器可以配置为不同的项目保存到日志文件(韩国乐团)结果通过使用配置弹出如下所示。 默认值被定义为描述的侦听器默认配置上面的部分。 项目名称后(CSV)只适用于CSV格式; 项目(XML)只适用于XML格式。 CSV格式目前不能用于保存任何物品,包括换行符。


配置对话

注意,饼干,方法和查询字符串保存的一部分”取样器数据”选项。

12.2 CLI模式(批)测试运行

在CLI模式下运行时,- l国旗可以用来创建一个顶级侦听器的测试运行。 这是除了任何侦听器在测试计划中定义。 此侦听器的配置控制文件中的条目jmeter.properties如前一节所述。

此功能可用于指定不同的数据和日志文件对于每个测试运行,例如:

注意,JMeter日志消息写入到文件中jmeter.log默认情况下。 每次重新创建这个文件,所以如果你想保持每个运行的日志文件, 您将需要使用的重命名它- j选择如上所述。

JMeter支持日志文件中的变量名称。 如果文件名包含成对的单引号,那么名字是处理 作为一个SimpleDateFormat格式应用于当前日期,例如:log_file = ' jmeter_ ' yyyyMMddHHmmss .tmp”。 这可以用于生成一个唯一的名称为每个测试运行。

12.3资源使用情况

侦听器可以使用大量内存,如果有很多样品。

目前大多数的侦听器保持一份每个样本显示,除了:

  • 简单的数据记录
  • BeanShell / JSR223侦听器
  • 梅勒可视化工具
  • 监测结果
  • 摘要报告

下面的侦听器不再需要保持每一个样本的副本。 相反,和样品相同的运行时间是聚合。 现在需要更少的内存,尤其是大多数样品只需要一两秒。

  • 总报告
  • 综合图

尽量减少所需的内存,使用简单的数据的作家,并使用CSV格式。

12.4 CSV日志格式

CSV日志格式取决于哪些数据项中选择配置。 只有指定的数据项记录在文件中。 外观的列的顺序是固定的,如下:

  • timeStamp-1/1/1970以来,以毫秒为单位
  • elapsed-以毫秒为单位
  • label-取样器标签
  • responseCode-如:200,404
  • responseMessage-如:好吧
  • threadName
  • dataType-如:文本
  • success-
  • failureMessage-如果任何
  • bytes-在样例的字节数
  • sentBytes-样品发送的字节数
  • grpThreads-该线程组的活动线程数
  • allThreads-在所有组活动线程的总数
  • URL
  • Filename-如果保存对文件使用
  • latency-时间的第一反应
  • connect-时间建立连接
  • encoding
  • SampleCount-数量的样品(1,除非聚合多个样本)
  • ErrorCount-错误数量(0或1,除非聚合多个样本)
  • hostname-生成的示例
  • IdleTime-“空闲”时间的毫秒数(通常0)
  • variables-如果指定

12.5 XML日志格式2.1

更新XML(2.1)的格式如下(换行符将会不同):

注意,示例节点名称可以是“样本”或“httpSample”。

12.6 XML日志格式2.2

JTL文件的格式是一样的2.2和2.1。 2.2仅影响JMX文件格式。

12.7样本的属性

样本的属性有以下意义:

属性内容
by 字节
sby 发送字节
de 数据编码
dt 数据类型
ec 错误数(0或1,除非聚合多个样本)
hn 主机名示例生成的地方
it 空闲时间=时间不花在抽样(毫秒)一般(0)
lb 标签
lt 延迟=初始响应时间(毫秒)——并不是所有的取样器支持这个
ct 连接时间=建立连接的时间(毫秒)——并不是所有的取样器支持这个
na 所有线程组的活动线程的数量
ng 这组活动线程的数量
rc 响应代码(如:200)
rm 响应消息(如:好吧)
s 成功的标志(/)
sc 样本计数(1,除非聚合多个样本)
t 运行时间(毫秒)
tn 线程的名字
ts 自1970年1月1日午夜时间戳(毫秒UTC)
varname 指定变量的值
JMeter允许额外的变量保存的测试计划。 目前,该变量是保存为额外的属性。 使用testplan变量名称作为属性名称。 看到样本变量更多信息(上图)。

12.8保存响应数据

如上所示,可以保存在XML响应数据日志文件如果需要。 然而,这可以使文件很大,和文本必须编码 它仍然是有效的XML。 另外,图片不能包括在内。 只有样品反应类型文本可以保存。
另一个解决方案是使用后处理器Save_Responses_to_a_file。 这对每个样本生成一个新文件,并保存文件名与样品。 文件名可以包含在示例日志输出。 检索的数据将从文件示例日志文件重新加载时如果有必要。

12.9加载(阅读)响应数据

查看现有的结果文件,您可以使用文件”浏览…”按钮选择一个文件。 如果有必要,就创建一个虚拟测试规划适当的监听器。

结果可以读取XML或CSV格式的文件。 当阅读从CSV文件,结果头(如果存在)是用来确定哪些字段保存。为了解释header-less CSV文件正确,适当的JMeter属性必须设置。

JMeter之前不清楚任何当前数据加载新文件从而使文件合并。 如果你想要清除当前数据,使用菜单项:RunClear(Ctrl+E)运行清除所有(Ctrl+E)加载文件前的内容

12.10侦听器GUI数据保存

JMeter的任何侦听器保存为PNG文件。 为此,选择 侦听器在左边的面板。 点击EditSave Node as Image。 一个文件对话框 出现。 输入所需的名称并保存侦听器。

的侦听器产生输出表也可以使用复制/粘贴保存。 表中选择所需的细胞,并使用操作系统复制捷径(正常Ctrl+C)。 数据将被保存到剪贴板,从那里可以粘贴到另一个应用程序, 如一个电子表格或文本编辑器。

Figure 1 -
图1 -编辑将节点保存为图片
 
 
 

13。 远程测试

如果你的JMeter客户机不能进行属性,来模拟 足够的用户强调您的服务器或在网络水平是有限的,存在一个选项来控制多个远程JMeter 引擎从一个JMeter客户机。 通过运行JMeter远程,你可以复制 一个测试在许多低端电脑,从而模拟服务器上的负载更大。 一个 JMeter的实例客户端可以控制任意数量的远程JMeter实例,并收集 所有的数据。 这提供了以下功能:

  • 测试样品的保存到本地计算机
  • 管理多个JMeterEngines从一个机器
  • 不需要复制测试计划每个服务器-客户端发送到服务器
注:相同的测试计划是由所有的服务器。 JMeter不分发服务器之间的负载,每一个运行完整的测试计划。 如果你设置1000个线程,有6个JMeter服务器,你最终注入6000个线程。

然而,远程模式并使用更多的资源比独立运行相同数量的CLI模式测试。 如果使用了许多服务器实例,客户机JMeter可以成为重载,因为客户端网络连接。 这是提高了切换到剥夺模式(见下文),但你应该经常检查你的客户不是超载。

注意,虽然您可以执行JMeterEngine在您的应用程序 服务器,您需要注意这一事实,这将是增加处理 开销在应用服务器上,因此您的测试结果 有些污染。 推荐的方法是有一个或多个机器上 相同的以太网段配置运行您的应用程序服务器 JMeter引擎。 这将最小化网络测试的影响 结果而不影响应用程序服务器的性能 本身。

步骤0:配置节点

确保所有节点(客户机和服务器):

  • 运行JMeter的完全相同的版本。
  • 所有系统上使用相同的Java版本。 使用不同版本的Java可能工作但不鼓励。
  • 有一个有效的为RMI / SSL密钥存储库,或者你有困难使用SSL。

如果测试使用任何数据文件,请注意,这些都不是跨由客户机发送 确保这些在每个服务器上相应的目录。 如果有必要你可以定义不同的值通过编辑属性user.propertiessystem.properties在每个服务器上的文件。 这些属性将会捡起当服务器启动和可能 测试计划中使用影响其行为(例如,连接到一个不同的远程服务器)。 或者使用不同的内容所使用的任何数据文件来完成测试 (例如,如果每个服务器必须使用独特的id,把这些数据文件)之间的

步骤1:启动服务器

运行JMeter远程节点,在所有机器上启动JMeter服务器组件你希望通过运行上运行 的JMETER_HOME / bin / jmeter-server(unix)或JMETER_HOME / bin / jmeter-server.bat(windows)脚本。

注意,在每个节点上只能有一个JMeter服务器不同,除非使用RMI端口。

JMeter服务器应用程序启动RMI注册中心本身; 没有必要开始单独RMI注册表。

默认情况下,RMI使用动态端口为JMeter服务器引擎。 这可能会导致问题防火墙、 所以你可以定义JMeter属性server.rmi.localport控制这个端口号。 它将被用作本地端口号服务器引擎。

步骤2:添加服务器IP客户的属性文件

编辑属性文件在控制JMeter的机器。 在JMETER_HOME / bin / jmeter.properties, 找到属性命名为“remote_hosts”, 添加的值运行JMeter服务器的IP地址。 可以添加多个这样的服务器,以逗号分隔。

请注意,您可以使用-R 命令行选项而不是指定远程主机(s)使用。 这有同样的效果-r-Jremote_hosts ={serverlist} 如。

如果您定义JMeter属性server.exitaftertest = true后退出,那么服务器将运行一个测试。 看到也- x标志(下面描述)

步骤3:从GUI客户机启动JMeter客户端检查配置

现在您已经准备好开始控制JMeter客户机。 微软视窗系统,启动客户端脚本”bin / jmeter.bat". . 对于UNIX, 使用脚本”bin / jmeter". . 你会注意到Run菜单包含两个子菜单:“遥控起动”和“远程停止” (见图1)。这些菜单包含您在属性文件中设置客户端。 使用远程启动和停止的 正常的JMeter启动和停止的菜单项。

Figure 1 - Run Menu
图1 -运行菜单

步骤3 b: JMeter的CLI模式启动客户端

GUI模式只能用于调试,作为一个更好的选择,你应该在远程服务器上启动测试(s)从一个CLI模式(命令行)客户端。 命令就是:

其他标志可能有用:

-Gproperty =value
定义一个属性在所有服务器(可能出现不止一次)
- x
退出远程服务器的测试。

第一个例子将开始测试在任何服务器上定义在JMeter属性remote_hosts;
第二个例子将定义remote_hosts从服务器列表中,然后开始测试在远程服务器上。
命令行客户端将退出当所有的远程服务器已停止。

13.1建立SSL

因为JMeter 4.0默认的RMI传输机制将使用SSL。 SSL密钥和证书需要工作。 你必须自己创建的密钥。

最简单的设置是对所有JMeter使用一对密钥/证书服务器和客户端连接。 JMeter附带了一个脚本生成一个密钥存储库 包含一个关键(及其相应的证书)rmi。 脚本位于目录,并可用于Windows系统(称为bin / create-rmi-keystore.bat)和Unix系统(称为bin / create-rmi-keystore.sh)。 这将生成一个密钥对,有效期为7天,默认密码的价值”changeit'. 这是建议在调用它目录中。

当您运行这个脚本时,它会问你一些问题将嵌入证书名称。 你可以输入任何你想要的,只要密钥存储库工具接受它。 该值必须匹配的属性server.rmi.ssl.keystore.alias,默认为rmi。 一个样本会话创建密钥存储库如下所示。

RMI默认设置应该使用此设置。 复制文件bin / rmi_keystore.jks每一个您希望使用JMeter服务器和客户端分布式测试设置。

13.2人为操作

在某些情况下,jmeter-server脚本可能不会为你工作(如果您正在使用一个操作系统平台没有预期到的JMeter开发人员)。 下面是如何开始JMeter服务器(步骤1),更多的手动过程:

步骤1:启动RMI注册表

JMeter 2.3.1以来,JMeter的RMI注册表启动服务器,所以本节不适用在正常的情况下。 回到之前的行为,定义JMeter的财产server.rmi.create = false在服务器主机系统 遵循下面的说明。

JMeter使用远程方法调用(RMI)作为远程通信机制。 因此,您需要 运行RMI注册应用程序(被命名为“rmiregistry”)与JDK和位于”” 目录中。 在运行之前rmiregistry,确保以下jar文件在你的系统类路径:

  • JMETER_HOME / lib / ext / ApacheJMeter_core.jar
  • JMETER_HOME / lib / jorphan.jar
  • JMETER_HOME / lib / logkit-2.0.jar
的 rmiregistry某些JMeter应用程序需要访问类。 运行rmiregistry不带参数。 默认情况下, 应用程序听端口1099年

步骤1 b:启动JMeter服务器

RMI注册应用程序运行后,启动JMeter服务器。 使用“- s“jmeter启动脚本选项(“jmeter - s”)。

步骤2和3是相同的。

13.3建议

JMeter / RMI需要从客户端到服务器的连接。 这将使用你选择端口,默认1099
JMeter / RMI还需要反向连接,以便从服务器返回的样本结果给客户端。
这些将使用编号港口。
这些端口可以由jmeter控制财产client.rmi.localportjmeter.properties
如果这是零,它将被用作基础为客户端引擎本地端口号。 此时将打开JMeter 开头的三个港口中定义的端口client.rmi.localport。 如果有防火墙或其他网络过滤器JMeter客户机和服务器之间, 您将需要确保他们通过设置允许连接。 如果有必要,使用监控软件展示交通生成。

如果你运行Suse Linux,这些建议可能会有帮助。 默认的安装可能会启用防火墙。 在这种情况下, 远程测试将不会正常工作。 下面的建议来自谢尔盖十。

如果你看到连接拒绝,打开调试通过以下选项。

JMeter 2.3.1以来,RMI注册表启动的服务器; 然而JMeter的选项仍然可以通过命令行。 例如:“jmeter - s -Dsun.rmi.loader.logLevel =verbose”(即省略了- j前缀)。 或者可以定义的属性system.properties文件。

解决问题是消除回路127.0.0.1127.0.0.2设置。 发生了什么是jmeter-server不能连接到rmiregistry如果127.0.0.2回送是不可用的。 使用以下设置来解决这个问题。

取代

还创建一个政策文件和添加[computer_name] [computer_domain]设置

为了更好地支持使用RMI通信通道的ssh隧道 远程测试,因为JMeter 2.6:

  • 一个新的属性”client.rmi.localport“可以设置为控制RemoteSampleListenerImpl使用RMI端口
  • 支持SSH隧道的隧道RMI通信远程端点在本地机器上使用一个端口, 环回接口现在可以使用如果已指定直接使用Java系统属性 ”java.rmi.server.hostname”参数。

13.4使用不同的端口

默认情况下,JMeter使用标准RMI端口1099。 可以改变这种情况。 对于这个工作成功, 所有需要同意如下:

  • 在服务器上,开始rmiregistry使用新的端口号
  • 在服务器上,开始JMeter的财产server_port定义
  • 在客户端更新remote_hosts财产包括新的远程主持人:港口设置

JMeter 2.1.1以来,jmeter-server脚本改变端口提供支持。 例如,假设您想要使用的端口1664年(也许1099年已经使用)。

在Windows上(在一个DOS框)
在Unix:
(注意: 使用大写的环境变量)

在这两种情况下,脚本开始rmiregistry指定端口, 然后开始JMeter在服务器模式,定义了”server_port”属性。

选择端口将登录服务器jmeter.log文件(rmiregistry不创建一个日志文件)。

13.5使用不同的样本发送者

听众在测试计划将结果发送回客户端JMeter将结果写入指定的文件 默认情况下,样品返回同步生成。 这可能会影响服务器的最大吞吐量测试; 样本的结果必须在线程可以发回 继续下去。 有一些JMeter属性可以设置为改变这种行为。

mode
样品发送模式违约StrippedBatch因为2.9。 这应该是在客户机上设置节点。
Standard
尽快发送样品同步生成
Hold
数组中保存样品,直到运行结束。 这可能在服务器上使用了大量的内存,气馁。
DiskStore
(在样本存储在磁盘文件java.io.temp),直到运行结束。 JVM退出的序列化数据文件被删除。
StrippedDiskStore
删除responseData成功的样本中,并使用DiskStore发送者发送它们。
Batch
时发送保存样本计数(num_sample_threshold)和时间(time_threshold)超过一个阈值, 此时样品发送同步。 可以在服务器上配置的阈值使用以下属性:
num_sample_threshold
样品的数量积累,违约One hundred.
time_threshold
时间阈值,默认60000毫秒= 60秒
看到也中模式,下面描述。
Statistical
发送一个总结样本当数或时间超过一个阈值。 样品是由线程组名称和总结样品标签。 以下字段是积累:
  • 运行时间
  • 延迟
  • 字节
  • 样品数
  • 错误数
其他字段,不同样品丢失。
Stripped
删除responseData从成功中样本
StrippedBatch
删除responseData成功的样本中,并使用批量发送方发送它们。
Asynch
样品暂时存储在一个本地队列。 一个单独的工作线程发送样品。 这允许测试线程继续没有等待结果发送回客户端。 然而,如果样品正在形成的速度比他们可以发送,队列最终将填满, 和取样器线程将阻塞,直到一些样品可以从队列中排水。 这种模式有助于消除峰值在样本的一代。 队列的大小可以调节通过设置JMeter的财产asynch.batch.queue.size(默认One hundred.在服务器节点)。
StrippedAsynch
删除responseData成功的样本中,并使用异步发送方发送它们。
Custom implemetation
模式参数设置为您的自定义样本发送方类名。 必须实现这个接口SampleSender构造函数带有一个单 类型的参数RemoteSampleListener
Stripped模式的家庭条responseData所以这意味着一些元素的依赖 在前面的responseData可以不工作。
这并不是一个问题,总有一个更有效的方法来实现这个功能。

适用于以下属性批处理统计模式:

num_sample_threshold
一批的样品数量(默认100.)
time_threshold
等待的毫秒数(默认60秒)

13.6处理节点失败的开始

为大规模的测试有可能将部分远程服务器不可用。 例如,当您使用自动化脚本分配许多云机器和使用它们作为发电机, 要求机器可能会失败的一些引导因为云的问题。 因为JMeter 2.13有新的属性来控制这种行为。

首先你可能希望重试失败节点的初始化尝试希望稍微推迟他们的引导。 要启用重试,你应该设置client.tries房地产总数量的连接尝试。 默认情况下它只有一个尝试。 控制重试延迟,设置client.retries_delay财产 之间的毫秒数睡觉尝试。

最后,您可能还想要运行的测试与发电机成功初始化和跳过失败节点。 启用,设置client.continue_on_fail = true财产。

13.7使用安全管理器

在分布式环境中运行JMeter时你必须意识到,JMeter基本上是一个远程执行代理服务器和客户端上。 这可能是使用的恶意方获得进一步访问,一旦妥协JMeter客户机或服务器之一。 为了减轻这个Java安全管理器的概念,被JVM之前问潜在危险的操作执行。 这些操作可以解决主机名,创建或阅读文件或执行命令的操作系统。

安全管理器可以通过设置启用Java系统属性java.security.managerjava.security.policy。 一定要看一下快速访问控制的应用程序

使用新的mechansismsetenv.sh(或setenv.batWindows下)您可以启用安全性管理器通过添加下面的代码片段$ {JMETER_HOME} / bin / setenv.sh:

JVM将添加中定义的政策文件$ {JMETER_HOME} / bin / java.policy可能在全球范围内定义的策略。 如果你想让你的定义是唯一来源政策,设置时使用两个等号,而不是一个性质java.security.policy

政策将依赖于你的用例,可能需要一段时间才能找到正确的限制,允许操作。 Java可帮助您找到所需的政策与财产java.security.debug。 将其设置为访问它会记录所有权限,它被要求允许。 添加以下行setenv.sh:

这看上去可能有点奇怪,我们定义一个Java系统属性jmeter.home的值$ {JMETER_HOME}。 这个变量将使用的例子java.policy限制文件系统访问,让它只读取jmeter配置和库和写访问限制到特定的位置,。

以下策略定义文件已被用于一个简单的远程测试。 你可能要调整政策,当您运行更复杂的场景。 测试计划的地方放置在用户的主目录下的一个目录jmeter-testplans。 样例java.policy看起来像:

使用java.security.AllPermission是一种简单的方法来让你的测试计划的工作,但这可能是一个危险的方式。
 
 
 
 
   

14。 生成报告指示板

JMeter支持仪表板图表和报告生成 数据从一个测试计划。
这一章描述了如何配置和使用生成器。

14.1概述

JMeter的仪表板生成器是一个模块化的扩展。 它的缺省行为是读取和处理样本 CSV文件生成HTML文件包含图表视图。 它可以生成报告的负载测试或需求。

这份报告提供了以下指标:

  • APDEX(应用程序性能指标)表,计算每笔交易APDEX的容忍和满足阈值基于可配置的值
  • 请求总结图显示了成功和失败的请求(事务控制器样品结果不考虑)百分比:
  • 数据表中提供一个表总结每个事务的所有指标包括3可配置的百分位数:
  • 错误表提供一个汇总所有错误及其比例的总要求:
  • 取样器的五大错误表提供每一个取样器(不含事务默认控制器)的五大错误:
  • 缩放的图表,您可以检查/取消显示/隐藏它的每一笔交易:
    • 随时间的响应时间(包括事务控制器样品结果):
    • 响应时间百分位数随时间(仅成功反应):
    • 活动线程结束时间:
    • 字节吞吐量随着时间的推移(忽略事务控制器样品结果):
    • 随着时间延迟(包括事务控制器样品结果):
    • 连接时间随时间变化(包括事务控制器样品结果):
    • 达到每秒(忽略事务控制器样品结果):
    • 每秒响应代码(忽略事务控制器样品结果):
    • 每秒事务数(包括事务控制器样品结果):
    • 响应时间和每秒请求(忽略事务控制器样品结果):
    • 延迟和请求/秒(忽略事务控制器样品结果):
    • 事务响应时间(不包括概述控制器样品结果):
    • 响应时间百分位数(包括事务控制器样品结果):
    • 次与线程(包括事务控制器样品结果):
      在分布式模式中,这张图显示了一个水平轴1服务器的线程的数量。 这是一个当前的限制
    • 响应时间分布(包括事务控制器样品结果):

14.2配置仪表板的一代

仪表板代使用JMeter属性来定制 报告。 一些属性是用于一般设置等 用于一个特定的配置图配置或出口国。

所有报告生成器属性可以在文件中找到reportgenerator.properties。 自定义这些属性,你应该复制它们user.properties文件,并修改它们。

14.2.1需求

14.2.1.1过滤配置

确保你设置属性jmeter.reportgenerator.exporter.html.series_filter只保留交易 你想要在报告中如果你不想一切。
在下面的例子中您必须修改搜索|秩序保持休息:

14.2.1.2保存服务配置

使发电机运行,JMeter的CSV文件生成的 必须包含某些必需的数据吗默认是正确的在过去住版本吗JMeter。
如果你修改这些设置,检查您的JMeter配置遵循这些设置(这是默认值):

14.2.1.3事务控制器配置

如果你使用事务控制器年代,以确保最准确的结果:

  • 取消选中对应的复选框(这是默认配置):生成父样本
  • 如果事务控制器被用作一个容器来代表一个HTML页面的请求,将触发Ajax调用,你呢 只希望你的报告事务控制器,然后右键单击节点并应用命名的政策您将获得:

14.2.2一般设置

必须前缀的所有属性
jmeter.reportgenerator。

 

百分位数用汇总表和百分位图可以调整不同的值通过使用三个属性:
  • aggregate_rpt_pct1:默认为90
  • aggregate_rpt_pct2:默认为95
  • aggregate_rpt_pct3:默认为99
JMeter的相对路径是建立工作目录 (默认值:)。

您可以定义一些整体属性使用的 发电机的配置。 这些属性是自由命名 但是你应该使用前缀

jmeter.reportgenerator。
为了避免属性重叠。

例如:

属性定义:
jmeter.reportgenerator.overall_granularity = 60000
属性引用:
$ {jmeter.reportgenerator.overall_granularity}

14.2.3图设置

每个属性描述图配置必须前缀 与

jmeter.reportgenerator.graph。
其次是图形标识符。

14.2.3.1一般性质

所有的图表都支持这些属性:

14.2.3.2特定属性

具体的图形属性必须使用前缀:

jmeter.reportgenerator.graph。<graph_id>.property
属性的名称将使用驼峰式大小写映射 转换和匹配方法的类 被称为属性值作为参数。

例如:

jmeter.reportgenerator.graph。<graph_id>.property.set_granularity = 150
归纳方法的调用setGranularity (150)在 图的实例。

14.2.4出口设置

每个属性配置必须描述一个出口前缀与

jmeter.reportgenerator.exporter
其次是出口国标识符。

14.2.4.1一般性质

所有出口商都支持这些属性:

 

14.2.4.2特定属性

特定出口国属性必须使用前缀

14.2.4.3图形属性

图形属性允许出口商覆盖一些图表数据。
他们必须使用前缀:

14.2.4.4过滤机制

不同的过滤部分一般性质丢弃数据计算之前,这里的吗 过滤后进行计算和服务 简化最终报告。

房地产series_filter允许过滤这一系列的图表(分别地。 行 使用正则表达式匹配汇总表) 系列的名称(分别地。 行)。 然而,即使的名称 系列(分别地。 行)匹配滤波器、设置 其他的可以导致其滤波特性 丢弃。 相反如果没有匹配的, 其他属性可以保持它。

下表显示的设置过滤 属性的作品。

例模式匹配时丢弃
filter_only_sample_series图/总结支持控制器的歧视当前系列是一个控制器系列show_controllers_only被丢弃的
- - - - - -
真正的
- - - - - -
真正的
真正的
真正的
真正的
真正的
真正的 - - - - - -
真正的
- - - - - -
真正的
真正的
真正的 真正的
真正的
真正的
保留在没有模式匹配的病例
filter_only_sample_series图/总结支持控制器的歧视保持
真正的
真正的 真正的
真正的
不正确的过滤器配置会导致生成空 图/汇总表:
  • 如果你设置的属性show_controllers_only和图配置为排除 控制器。
  • 如果属性series_filter比赛没有一个系列。

14.2.5示例配置

你可以复制以下配置user.properties 文件为了测试报告生成器。

调整参数output_dir于您的环境。

这种配置允许生成报告地点:

  • 随着时间的推移图有一个时间粒度等于1分钟。
  • ADPEX满足阈值的计算是1秒半。
  • ADPEX耐受阈值计算是3秒。
  • 在目录中生成的HTML文件/ tmp /测试报告
  • 只有系列始于”这个名字s0”或“s1”所示。
  • 前面的过滤器只适用于图表(分别地。 汇总表)系列(分别地。 行)匹配样本

14.3生成报告

报告生成可以作为一个独立的过程 示例日志文件或后自动运行负载测试。

14.3.1生成日志文件从现有的样例CSV

使用下面的命令:

jmeter -g <日志文件>-o <输出文件夹路径>

14.3.2负载测试后一代

使用下面的命令:

jmeter -n -t <测试JMX文件>-l <测试日志文件>-e -o <输出文件夹路径>

14.3.3代使用GUI工具菜单

你可以使用菜单项生成HTML报告工具→生成HTML报告:

Figure 14.1. HTML Report Dialog Menu图14.1。 HTML报告对话框菜单

对于每个参数见下表:

 

如果没有定义输出目录,控制器将使用$ {JMETER_HOME} / bin /报告输出

你只需要点击生成报告按钮,等待一个信息对话框出现

如果报告生成时间超过两分钟,调整房地产generate_report_ui.generation_timeout

14.4默认图

由于早期版本的限制,每个默认的图 必须声明在JMeter属性。 否则,图 视图将是空的。

本报告提供的所有图形引擎位于 包org.apache.jmeter.report.processor.graph.impl

仪表板发生器提供了以下图表类:

描述支持控制器的歧视
ActiveThreadsGraphConsumer 这张图代表活动线程的数量。
BytesThroughputGraphConsumer 这张图代表了接收和发送数据的吞吐量 随着时间的推移。
CodesPerSecondGraphConsumer 这张图代表的速度响应代码。
HitsPerSecondGraphConsumer 这张图代表完成请求的速度 时间。
LatencyOverTimeGraphConsumer 这张图代表的平均延迟时间。 真正的
ConnectTimeOverTimeGraphConsumer 这张图代表了连接时间。 真正的
LatencyVSRequestGraphConsumer 这张图代表了中值和平均等待时间 根据当前请求的数量。
ResponseTimeDistributionGraphConsumer 这张图代表样本的分布 根据他们的时间和名称。 真正的
ResponseTimeOverTimeGraphConsumer 这张图代表了平均响应时间。 真正的
ResponseTimePercentilesGraphConsumer 这张图代表了时间的百分位数 随着时间的推移。 真正的
ResponseTimePercentilesOverTimeGraphConsumer 这个图表显示了最小/最大响应时间和3百分位数。 真正的
ResponseTimeVSRequestGraphConsumer 这张图代表了中值和平均响应时间 根据当前请求的数量。
TimeVSThreadGraphConsumer 这张图代表了平均响应时间 根据当前活动线程的数量。

*聚合系列代表平均水平 响应时间的数量无关 当前活动线程。 这些系列 由一个唯一的点,因为数量的表示 当前活动线程是聚合 平均。 所以对于这些点:

  • 横坐标是平均水平 当前活动的数量 当样品的线程 系列完成。
  • 纵坐标的平均值 响应时间的样本 系列无论当前的数量 活动线程。
真正的
TransactionsPerSecondGraphConsumer 这张图代表了交易的速度 样品名称。 真正的

 

 

14.5产生海关图形随着时间的推移

你可以任何sample_variable CSV随着时间的推移图,您可以定制您的图表 用户通过设置它们的属性。 属性文件。
他们必须使用id前缀custom_:

jmeter.reportgenerator.graph.custom_<your_graph_name_id>.property.<your_option_name>
指定,这个图是一个定制的:
jmeter.reportgenerator.graph.custom_<your_graph_name_id>.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer

这是一个自定义的一个例子图配置图变量ts-hit:

14.6仪表板想改善报告吗?

如果你想贡献新的图表或改善当前的你 可以阅读这开发人员文档
读到这文档在做贡献。
 
 
 
 

15。 实时搜索结果

因为JMeter 2.13你可以得到实时搜索结果发送到后端通过后端侦听器使用潜在的任何后端(JDBC、JMS、网络服务、…) 通过提供一个实现类AbstractBackendListenerClient
JMeter附带:

  • GraphiteBackendListenerClient它允许您发送规格石墨后端。
    这个特性提供了:
    • 生活的结果
    • 漂亮的图表为指标
    • 比较2个或更多的负载测试的能力
    • 监控数据存储在同一后端只要JMeter结果
  • JMeter 3.2中引入一个InfluxDBBackendListenerClient你可以发送指标InfluxDB端使用UDP或HTTP协议 这个特性提供了:
    • 生活的结果
    • 漂亮的图表为指标
    • 比较2个或更多的负载测试的能力
    • 能力将注释添加到图表
    • 监控数据存储在同一后端只要JMeter结果
在本文档中,我们将配置设置图和historize数据在不同的后端:
  • InfluxDB设置InfluxDBBackendListenerClient
  • InfluxDB设置GraphiteBackendListenerClient
  • Grafana
  • 石墨

 

15.1指标暴露

供线程/虚拟用户指标

线程指标如下:

<rootMetricsPrefix>test.minAT
分钟活动线程
<rootMetricsPrefix>test.maxAT
马克斯活动线程
<rootMetricsPrefix>test.meanAT
活动线程的意思
<rootMetricsPrefix>test.startedT
启动线程
<rootMetricsPrefix>test.endedT
完成线程

15.1.2响应时间指标

响应相关指标如下:

<rootMetricsPrefix><samplerName>.ok.count
许多成功的响应采样器的名字
<rootMetricsPrefix><samplerName>.h.count
服务器每秒钟,这个指标堆积样本结果和子结果(如果使用事务控制器,应该无节制的“生成父取样器”)
<rootMetricsPrefix><samplerName>.ok.min
最小响应时间成功响应采样器的名字
<rootMetricsPrefix><samplerName>.ok.max
最大响应时间成功响应采样器的名字
<rootMetricsPrefix><samplerName>.ok.avg
平均响应时间成功响应采样器的名字。
<rootMetricsPrefix><samplerName>.ok.pct <percentileValue>
百分比计算成功响应采样器的名字。 将有一个为每个计算值指标。
<rootMetricsPrefix><samplerName>.ko.count
失败的反应数量取样器的名字
<rootMetricsPrefix><samplerName>.ko.min
最小响应时间没有响应的采样器的名字
<rootMetricsPrefix><samplerName>.ko.max
最大响应时间没有响应的采样器的名字
<rootMetricsPrefix><samplerName>.ko.avg
平均响应时间没有响应的采样器的名字。
<rootMetricsPrefix><samplerName>.ko.pct <percentileValue>
百分比计算失败的响应的采样器的名字。 将有一个为每个计算值指标。
<rootMetricsPrefix><samplerName>.a.count
取样器的反应数量名称(好吧。 计数和ko.count)
<rootMetricsPrefix><samplerName>.sb.bytes
发送字节
<rootMetricsPrefix><samplerName>.rb.bytes
收到的字节
<rootMetricsPrefix><samplerName>.a.min
最小响应时间响应采样器的名字
<rootMetricsPrefix><samplerName>.a.max
最大响应时间取样器名称
<rootMetricsPrefix><samplerName>.a.avg
平均响应时间取样器名称
<rootMetricsPrefix><samplerName>.a.pct <percentileValue>
百分比计算响应的采样器的名字。 将有一个为每个计算值指标

默认的百分位数设置在后端侦听器是“90;95;99”, 即3百分位数90%、95%和99%。

石墨命名层次结构使用点(“。”)单独的元素。 这可能与十进制百分位值混淆。 JMeter转换任何这样的价值观,用下划线代替点(“。”)(“-”)。 例如,“99.9“变成了”99_9

默认JMeter发送采样指标累计samplerName”all”。 如果后端侦听器samplersList配置,然后JMeter也发送指标吗 除非匹配样本的名字summaryOnly = true

15.2 JMeter配置

JMeter指标发送给后端添加一个BackendListener使用InfluxDBBackendListenerClient。

InfluxDB configurationInfluxDB配置

15.3 InfluxDB数据库配置

连接到InfluxDB使用InfluxDB的命令行接口(CLI)。创建JMeter数据库:

  • jmeter: InfluxDB用来存储后端侦听器发送的数据
也可以通过使用HTTP API。

 

15.3.1 InfluxDB InfluxDBBackendListenerClient设置

InfluxDB是一个开源的、分布式的、允许时间序列数据库 很容易存储度量。 安装和配置很简单,读了更多的细节InfluxDB文档
InfluxDB数据可以很容易地在浏览器中查看Grafana

15.3.2 InfluxDB InfluxDBBackendListenerClient 2设置

应该指定的配置influxdbToken参数并指定org作为查询参数influxdbUrl。 看到InfluxDB v2 API为更多的细节。

如何检索所需的信息在InfluxDB界面:

 

InfluxDB 2 configuration
InfluxDB 2配置

15.4 Grafana配置

安装grafana
文档为更多的细节。 添加数据源 

这里的仪表板,您可以获得:Grafana dashboardGrafana仪表板

15.5石墨

帮助欢迎这一节中,看到的提供文档

 

 

 

16。 最佳实践

16.1总是使用最新版本的JMeter

JMeter的性能正在不断完善,所以用户高度鼓励使用最新版本。
确保你总是读修改列表需要注意的新的改进和组件。 你绝对应该避免使用超过3的版本之前最后一个版本。

16.2使用正确的数量的线程

你的硬件功能以及测试计划设计将两个线程的数量可以有效地影响 使用JMeter运行。 数量还将取决于你的服务器(速度更快的服务器 使JMeter努力工作因为它返回一个响应更快)。 与任何负载测试工具,如果你不正确的大小 线程的数量,你将面临的“协调遗漏”的问题可以给你错误的或不准确的结果。 如果你需要大规模的负载测试,考虑到多台机器上运行多个CLI JMeter实例 使用分布式模式(或没有)。 当使用分布式模式结果文件结合在控制器节点上,如果 使用多个自主的情况下,示例结果文件可以用于后续分析相结合。 用于测试JMeter如何执行一个给定的平台上,可以使用JavaTest取样器。 它不需要任何网络访问所以可以给一些想法的最大吞吐量可以实现的。

JMeter有选择推迟线程创建的线程开始采样,即在任何线程组延迟和线程的加速时间本身。 这允许一个非常大的总数量的线程,如果没有太多的并发活动。

16.3安置Cookie Manager

看到建立一个网络测试获取信息。

16.4安置授权管理器

看到建立一个先进的 网络测试获取信息。

16.5使用HTTP (S)测试脚本录音机

HTTP (S)测试脚本录音机细节设置 录音机。 最重要的事情是过滤掉所有请求你不是 感兴趣的。 例如,没有点请求(JMeter可以记录图像 被要求下载页面上的所有图片,请参阅HTTP请求)。 这些只会混乱你的测试计划。 最有可能的是,有一个扩展您的所有文件 分享,如. jsp,asp,. php,. html或类似的。 这些你应该”包括“进入”* \ . jsp。“作为”包括模式”。

另外,您可以通过输入“排除图像* \ gif。“作为一个“排除模式”。 取决于您的应用程序,这可能是也可能不是一个更好的路要走。 你可能 也排除了样式表,包括javascript文件和其他文件。 测试 你的设置来验证你记录你想要什么,然后擦除和开始 新鲜。

HTTP (S)测试脚本记录器希望找到ThreadGroup元素记录控制器 这下它会记录HTTP请求。 这所有的样品在一个方便包 控制器,它可以被赋予一个名称,描述测试用例。

现在,经过一个测试用例的步骤。 如果你没有预定义的测试用例,使用 JMeter来记录你的行动来定义你的测试用例。 一旦你已经完成了一个 明确的一系列步骤,保存整个测试用例在一个适当命名的文件。 然后,擦 干净,开始一个新的测试用例。 通过这样做,您可以快速大量的记录 测试用例“草稿”。

最有用的功能之一的HTTP (S)测试脚本录音机是你可以抽象出来 某些常见元素的记录的样本。 通过定义一些用户定义的变量在测试计划或水平用户定义的变量元素,可以自动JMeter 替换值记录样本。 例如,如果您正在测试的应用程序 服务器”xxx.example.com”,那么您可以定义一个变量被称为“服务器”的值 ”xxx.example.com”,价值发现的任何地方在您的记录样本将被替换 以“${服务器}”。

 
请注意,匹配是区分大小写的。
 

 

如果JMeter不记录任何样本,检查浏览器是使用代理。 如果浏览器工作好即使JMeter没有运行,那么浏览器不能使用代理。 一些浏览器忽略代理设置本地主机127.0.0.1; 尝试使用本地主机名或IP。

错误”unknown_ca“可能意味着你正试图记录HTTPS,和浏览器没有接受 JMeter代理服务器证书。

16.6用户变量

一些测试计划需要为不同的用户使用不同的值/线程。 例如,您可能想要测试序列,需要为每个用户一个独特的登录。 这很容易实现与JMeter提供的设施。

例如:

  • 创建一个包含用户名和密码的文本文件,之间用逗号分隔。 把这个在同一个目录作为您的测试计划。
  • CSV数据集配置元素添加到测试计划。 变量的名字用户通过
  • 取代的登录名$ {USER}和密码通过$ {}在适当的 取样器

CSV数据集元素为每个线程将读取一个新行。

16.7减少资源需求

一些建议减少资源的使用。

  • 使用CLI模式:jmeter - n - test。 jmx - l test.jtl
  • 使用尽可能少的听众; 如果使用- l国旗上面他们都可以被删除或禁用。
  • 树不使用“查看结果”或“视图结果在表“听众在负载测试期间,使用它们只在脚本阶段调试脚本。
  • 而不是使用大量的类似的采样, 在一个循环中使用相同的采样器,使用变量(CSV数据集)来改变样本。 (包括控制器并没有帮助,因为它将所有文件中的测试元素添加到测试计划。)
  • 不要使用功能模式
  • 使用CSV输出而不是XML
  • 只有你需要保存数据
  • 使用尽可能少的断言
  • 使用最执行脚本语言(参见JSR223部分)

如果您的测试需要大量的数据,特别是如果它需要随机——在一个文件中创建测试数据 可以阅读和CSV数据集。 这可以避免浪费资源在运行时。

16.8 BeanShell服务器

BeanShell解释器有一个非常有用的功能,它可以作为一个服务器, 这是通过telnet或http访问。

 
没有安全。 谁可以连接到端口可以发行任何BeanShell命令。 这些可以提供无限制的访问JMeter应用程序和主机。不要使服务器,除非对访问端口保护,例如防火墙。
 

如果你希望使用服务器,定义以下jmeter.properties:

  

在上面的示例中,服务器将启动,并将监听端口9000年9001年。 港口9000年将用于http访问。 港口9001年将用于远程登录访问。 的startup.bsh文件将由服务器处理,可用于定义不同的功能和设置变量。 启动文件定义设置和打印JMeter方法和系统属性。 这是你应该看到在JMeter控制台:

  

有一个示例脚本(临时演员/ remote.bsh),你可以使用它来测试服务器。 (看一看,看看它是如何工作的。)
在JMeter bin目录 (如果从其他地方运行必要的调整路径) 输出应该类似于:

 

 

 作为一个实际的例子,假设您有一个长期运行JMeter测试在CLI模式下运行, 你想测试期间的吞吐量在不同时期不同。 测试计划包括一个常数吞吐量计时器定义的属性, 如。$ {__P(吞吐量)}。 以下BeanShell命令可以用来改变测试:

 

这个脚本可以存储在一个文件(throughput.bsh说,),发送到服务器bshclient.jar。 例如:

 

16.9 BeanShell脚本

 
JMeter 3.1以来,我们建议从BeanShell转向JSR223测试元素(见JSR223章节更多细节),和交换__Beanshell函数 来__groovy函数。
 

16.9.1概述

每个BeanShell测试元素都有自己的翻译的副本(每个线程)。 如果测试元素多次调用时,如在一个循环,则保留解释器 调用之间,除非“重置bsh。 翻译每个调用之前”选项被选中。

一些长时间运行的测试可能会导致翻译使用大量内存; 如果是这样的话试着使用重置选项。

可以通过使用外JMeter测试BeanShell脚本命令行解释器:

  

 

 

 

16.9.2共享变量

中定义的变量可以启动脚本(初始化)。 这些将被保留在调用的测试元素,除非使用重置选项。

脚本还可以访问使用JMeter变量get ()put ()”的方法var”变量, 例如:

 

get ()put ()方法只支持变量和字符串值, 但也有getObject ()putObject ()方法可用于任意对象。 JMeter变量是当地一个线程,但是可以通过所有的测试元素(不仅仅是Beanshell)。

 

如果你需要在线程之间共享变量,那么可以使用JMeter属性:

 
样例.bshrc文件包含示例的定义getprop ()记者()方法。

 

共享变量的另一个可能的方法是使用“bsh.shared“共享名称空间。 例如:

 

而不是创建对象的测试元素,它可以启动文件中创建 JMeter定义的财产”beanshell.init.file”。 这是只处理一次。

 

16.10发展中在Groovy脚本函数或Jexl3等等。

很难以编写和测试脚本的功能。 然而,JMeter JSR223取样器,而不使用任何语言支持它。 我们建议使用Apache Groovy或者支持的任何语言CompilableJSR223接口。

创建一个简单的测试计划包含JSR223取样器和树视图的侦听器。 取样器脚本窗格中的脚本代码,通过运行测试和测试它。 如果有任何错误,这些都将出现在树视图jmeter.log文件。 运行脚本的结果也会显示为响应。

一旦脚本正常工作,它可以存储为一个变量在测试计划。 脚本变量可以用来创建函数调用。 例如,假设一个Groovy脚本存储在变量RANDOM_NAME。 函数调用可以编码$ {__groovy ($ {RANDOM_NAME})}。 不需要逃避任何脚本中逗号, 因为之前解析函数调用变量的值是插值。

16.11 Parameterising测试

通常是很有用的可以重新运行相同的测试有不同的设置。 例如,改变或循环的线程数量,或更改主机名。

要做到这一点的方法之一是测试计划定义一组变量,然后使用这些变量在测试元素。 例如,可以定义一个变量循环= 10,指的是在线程组${循环}。 与20个循环运行测试,只是改变的价值循环变量的测试计划。

这很快就会变得乏味,如果你想在CLI模式运行大量的测试。 解决方案之一是定义测试计划变量的一个属性, 例如循环= $ {__P(循环、10)}。 它使用财产”的价值循环”,违约10如果属性没有找到。 “循环”属性可以被定义在JMeter命令行:


如果有很多属性,需要更改, 然后实现这一点的方法之一是使用一组属性文件。 可以通过适当的属性文件JMeter使用q命令行选项。

 

16.12 JSR223元素

密集的负载测试,推荐的脚本语言的ScriptingEngine实现了Compilable接口。 Groovy脚本引擎实现Compilable。 然而无论是Beanshell还是Javascript 3.1 JMeter的发布日期,这是 建议避免密集的负载测试。

 
注意:Beanshell实现了Compilable界面,但没有编码,该方法只是将抛出一个异常。 JMeter显式的绕过了这个bug。
 
当使用JSR 223的元素,它是建议检查如果可用缓存编译脚本属性,以确保脚本编译缓存如果底层语言支持。 在这种情况下,确保脚本不会使用任何变量使用$ {varName}缓存将只有第一个值$ {varName}。 而不是使用:

你也可以将它们作为参数传递给脚本并使用它们。

16.13在线程和线程之间共享变量组

变量是当地一个线程; 一组变量在另一个线程不能读。 这是通过设计。 为变量,可以确定一个测试开始前,看到的Parameterising Tests(见上图)。 如果该值是未知的,直到测试开始,有多种选择:

  • 存储变量属性-属性是全球JMeter实例
  • 写变量文件和重读。
  • 使用bsh.shared名称空间,看到以上
  • 编写您自己的Java类

 

16.14管理属性

当您需要修改jmeter属性,确保你不修改jmeter.properties文件,而不是复制的财产jmeter.properties和修改它的值user.properties文件
这样做可以缓解你JMeter的迁移到下一个版本。
注意,在文档中jmeter.properties经常提到的但这应该被理解为 “复制从jmeter.propertiesuser.properties您想修改属性,在后者的文件”。

 
user.properties文件中定义的属性取代jmeter.properties
 

16.15弃用元素

我们建议不要使用弃用元素(标记为修改列表而在组件引用) 和迁移到新的建议元素如果可用的新方法做同样的事情。
弃用元素从菜单中删除版本N但可以启用迁移通过修改not_in_menu财产user.properties文件和删除完整的类名 元素的。

 
请注意,弃用元素在版本N肯定将被删除在版本N + 1,所以确保你尽快停止使用它们。
 
 
 
 

17. 帮助!我的老板要我加载测试我们的应用程序!

这是一个相当不限成员名额的主张。首先要提出若干问题,此外还需要一些资源。您将需要一些硬件来运行基准测试/负载测试。许多工具将被证明是有用的。有许多产品需要考虑。最后,为什么Java是实现负载测试/基准测试产品的一个很好的选择。

17.1 要问的问题

我们的预期平均用户数(正常负载)是多少?

我们预计的峰值用户数是多少?

什么时候是加载测试我们的应用程序的好时候(即下班时间或工作周),同时记住,这很可能导致我们的一个或多个服务器崩溃?

我们的应用程序有状态吗?如果是,我们的应用程序如何管理它(cookie、会话重写或其他方法)?

测试的目的是实现什么?

17.2 资源

以下资源将证明非常有用。请记住,如果您找不到这些资源,您将成为这些资源。由于你已经为你削减了工作,所以值得知道下面的人是谁,所以如果你需要,你可以向他们寻求帮助。

17.2.1 网络

谁知道我们的网络拓扑?如果遇到任何防火墙或代理问题,这将变得非常重要。此外,专用测试网络(因此网络延迟非常低)也是一件非常好的事情。知道谁可以为你设置一个(如果你觉得这是必要的)将是非常有用的。如果应用程序没有像预期的那样扩展,谁可以添加其他硬件?

17.2.2 应用

谁知道我们的应用程序是函数的?法线顺序为

  • 测试(低容量 - 我们可以基准测试我们的应用程序吗?
  • 基准(平均用户数)
  • 负载测试(最大用户数)
  • 破坏性测试 (我们的硬限制是什么?
测试过程可能从黑盒测试到白盒测试(不同的是,第一个测试不需要对应用程序的了解[它被视为"黑匣子"),而第二个测试需要一些应用程序知识)。在这个过程中发现应用程序的问题并不罕见,所以要做好为工作辩护的准备。

 

17.3 我应该使用什么平台来运行基准测试/负载测试?

这应该是一个广泛使用的硬件,具有标准(即香草)软件安装。请记住,如果您公布结果,您的客户要做的第一件事是聘请一名研究生来验证它们。你不妨尽可能方便这个人。

对于 Windows,Windows XP 专业版应该是最低值(其他连接不超过 50-60 个连接,并且您预计用户数可能超过此)。

良好的免费平台包括 linuxes、BSD 和 Solaris Intel。如果你有多一点钱,有商业linux。如果您需要支持,这可能是值得的。

对于非 Windows 平台,请调查"ulimit -n 无限",以便将它包括在您的用户帐户启动脚本(.bashrc或.cshrc脚本中)。

另请注意,某些 Linux/Unix 版本供服务器使用。这些通常具有最少的或没有 GUI 支持。此类操作系统在 CLI 模式下运行 JMeter 应该没问题,但 JMeter GUI 模式可能不起作用,除非您安装最小的 GUI 环境。

随着您向更大规模的基准测试/负载测试发展,此平台将成为限制因素。因此,使用您现有的最佳硬件和软件是值得的。请记住,在已发布的基准中包括硬件/软件配置。

当您需要大量计算机或想要测试网络延迟时,云可以帮助您。JMeter 可以轻松地安装在云实例上,因为它几乎在云中可用的任何体系结构上运行。如果您不想自己管理,商业云 PAAS 中也支持 JMeter。

不要忘记 JMeter 批处理 (CLI) 模式。此模式应在负载测试期间使用,原因有很多:

  • 如果您有支持 Java 的强大服务器,但可能没有快速的图形实现,或者您需要远程登录。
  • 与使用远程显示或客户端服务器模式相比,批处理 (CLI) 模式可以减少网络流量。
  • 用于 GUI 模式的 Java AWT 线程有时可以通过阻止来改变注入行为
然后,批处理日志文件可以加载到工作站上的 JMeter 中进行分析,也可以使用 CSV 输出将数据导入电子表格。

 

 
请记住,GUI 模式用于脚本创建和调试,而不是用于负载测试
 

17.4 工具

以下工具都将证明是有用的。熟悉他们绝对值得。这应包括尝试它们,并阅读相应的文档(人页面、信息文件、应用程序 - 帮助消息和任何提供的文档)。

17.4.1 ping

这可用于确定是否可以到达目标站点。可以指定选项,以便 "ping" 提供与 " 跟踪路由 "相同的路由报告类型。

17.4.2 nslookup/挖掘

虽然用户通常使用人工可读的 Internet 地址,您可能希望在执行基准测试/负载测试时避免 DNS 查找的开销。这些可用于确定目标站点的唯一地址(点四)。

17.4.3 跟踪路由

如果无法"ping"目标站点,则可用于确定问题(可能是防火墙或代理)。它还可用于估计总体网络延迟(在本地运行应提供尽可能低的网络延迟 - 请记住,您的用户将在可能繁忙的 Internet 上运行)。一般来说,跳越少越好。

17.5 如何增强 JMeter?

有很多开源和商业供应商提供JMeter插件或其他资源,用于JMeter。其中一些列在JMeter维基上。它们列在以下几个类别下:

  • JMeterPlugins - 用于扩展 JMeter 的插件
  • JMeterAddons - 用于 JMeter 的附加组件,例如浏览器、Maven 和 Jenkins 的插件。
  • JMeter 服务-第3方服务,例如基于云的 JMeter
请注意,这些在 Wiki 上的外观并不意味着 Apache JMeter 项目的任何认可。任何支持请求都应向相关供应商提出。

 

17.6 为什么是Java?

为什么不是Perl或 C?

嗯, Perl 可能是一个很好的选择, 除了基准包似乎给出相当模糊的结果。此外,使用 Perl 模拟多个用户是一个棘手的命题(可以通过从 shell 脚本分叉多个进程来模拟多个连接,但这些进程不会是线程,而是进程)。然而,Perl 社区非常大。如果你发现某人已经写了一些似乎有用的东西,这可能是一个很好的解决方案。

C,当然,是一个很好的选择(看看阿帕奇ab工具)。但要准备好编写所有自定义网络、线程和状态管理代码,这些代码需要对应用程序进行基准测试。

Java 为您提供了自定义网络、线程和状态管理代码,您需要这些代码来基准测试应用程序。Java 知道 HTTP、FTP 和 HTTPS,以及 RMI、IIOP 和 JDBC(更不用说 Cookie、URL 编码和 URL 重写)。此外,Java 还为您提供了自动垃圾回收和字节代码级别安全性。

posted @ 2020-12-04 17:04  乌醍  阅读(807)  评论(0编辑  收藏  举报