jmeter5.1_压力测试基础(理论部分)

本文详述了如何使用JMeter 5.1进行WEB压力测试的基础知识,涵盖测试计划构建、组件功能、环境配置及运行模式,适合初学者快速上手。

jmeter5.1_使用参考手册

本文介绍如何使用jmeter 做WEB压力测试的一些基础知识. 如对JM了解已经有一定了解了,可以直接看下以章
  抱歉,这段时间工作比较忙,没有更新。编写不易,求关注!!!

在这里插入图片描述
  理论知识总是痛苦,乏味的,这点内容是我在官网上翻译出来的,排版了 一个多小时,那给我困得…… 总之我个人认为,理论知识虽然学起来比较乏味,但是用起来确实是作用很大。

Test plan building(测试计划建设)

  1. 你可以打开你的GUI然后点击“文件”→“模板”→“Recording”等等去录制一个脚本文件。
  2. 也可以自己创建一个测试计划
    备注: 是你要知道jmeter 的每一个组件都是做什么用的“测试计划的要素”,点击进去看看。
  3. 添加其他测试组件(线程组,采样器,监听器,断言,控制器等)
  4. 执行测试计划后,在“查看结果树”中展示(CSS/jQuery、JSON、Regexp、XPath)结果,确保测试计划的正确性

准备工作

  1. 开始使用JMeter最简单的方法是先下载最新的生产版本然后安装。该版本包含构建和运行大多数类型测试所需的所有文件,例如Web(HTTP/HTTPS)、FTP、JDBC、LDAP、Java、JUnit等。

  2. 如果您想要执行JDBC测试,那么您当然需要来自您的供应商的适当的JDBC驱动程序。JMeter没有附带任何JDBC驱动程序。

  3. JMeter包含JMSAPIJAR,但不包括JMS客户端实现。如果希望运行JMS测试,则需要从JMS提供程序下载适当的JAR。
    备注:JMeter Classpath 获取有关安装其他JAR的详细信息。

  4. 接下来,启动JMeter并通过建立测试计划“用户指南”中的一节,以使您熟悉JMeter基础知识(例如,添加和删除元素)。

  5. 最后,阅读关于如何构建特定类型的测试计划的适当部分。例如,如果您对测试Web应用程序感兴趣,请参见构建Web测试计划。其他具体的测试计划部分是:

  一旦您习惯于构建和运行JMeter测试计划,您就可以查看各种配置元素(计时器、侦听器、断言和其他配置元素),这些元素使您能够更好地控制您的测试计划。

Requirements(安装需求)

Java版本

  JMeter4.0与Java 8或Java 9兼容。出于安全和性能方面的考虑,我们强烈建议您安装这些主要版本的最新次要版本。

  虽然您可以使用JRE,但是最好安装一个JDK来记录HTTPS,JMeter需要钥匙工具来自JDK的实用程序

  由于JMeter只使用标准JavaAPI,如果JRE由于JRE实现问题而无法运行JMeter,请不要提交bug报告。

操作系统

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

  使用JMeter测试的操作系统可以在本页在JMeter wiki上。

  即使您的操作系统没有在wiki页面上列出,只要JVM是兼容的,JMeter也应该在上面运行。

Optional(可选择项)

Java编译器

  如果您想构建JMeter源代码或开发JMeter插件,那么您将需要一个完全兼容的JDK 8或更高版本。

SAX XML解析器

  JMeter附带Apache的Xerces XML parser。您可以选择告诉JMeter使用不同的XML解析器。为此,请将第三方解析器的类包含在jMeter中。classpath,并更新jmeter.properties具有解析器实现的完整类名的文件。

电子邮件支持

  JMeter具有广泛的电子邮件功能。它可以根据测试结果发送电子邮件,并有一个POP 3(S)/IMAP(S)采样器。它还有一个SMTP(S)取样器。

SSL加密

  为了使用SSL加密(HTTPS)测试Web服务器,JMeter要求提供SSL的实现,例如Sun Java 1.4及以上版本。如果您的Java版本不包括SSL支持,那么可以添加外部实现。在JMeter中包含必要的加密包classpath。另外,更新system.properties若要注册SSL提供程序,请执行以下操作。

  JMeterHTTP默认为协议级TLS。这可以通过编辑JMeter属性来更改。https.default.protocol在……里面jmeter.properties或user.properties.

  JMeterHTTP采样器被配置为接受所有证书,无论是否受信任,无论有效期如何等等。

JDBC驱动程序

  您需要将数据库供应商的JDBC驱动程序添加到classpath如果您想做JDBC测试。确保该文件是JAR文件,而不是zip文件。

JMS客户端

  JMeter现在包含了来自ApacheGeronimo的JMS API,因此您只需要从JMS提供者添加适当的JMS客户端实现JAR。详情请参阅文件。也可能有一些关于JMeter Wiki.

ActiveMQ JMS库

  您需要添加JARactivemq-all-X.X.X.jar类路径,例如将其存储在lib/目录。

Running Jmeter(运行jmeter)

  要运行JMeter,请运行jmeter.bat(适用于windows)或jmeter.sh(用于linux)文件。这些文件在bin目录。
GUI模式只能用于创建测试脚本,而CLI模式(非GUI)必须用于负载测试。
  还有一些附加脚本。Bin 目录下还有几个文件,稍微介绍一下。

文件名介绍
jmeter.bat运行JMeter(默认情况下在GUI模式下)
jmeterw.cmd在没有Windowsshell控制台的情况下运行JMeter(默认情况下在GUI模式下)
jm-n.cmd在此上删除一个JMX文件,以运行CLI模式测试。
jm-n-r.cmd删除JMX文件以远程运行cli模式测试。
jmeter-t.cmd将JMX文件放在上面,以GUI模式加载它
jm-server.bat在服务器模式下启动JMeter
mirro-server.cmd在CLI模式下运行JMeter镜像服务器
shutdown.cmd运行关机客户端以优雅地停止cli模式实例。
stoptest.cmd运行关机客户端以突然停止cli模式实例

其他
  特殊名称LAST可与jm-n.cmd, jmeter-t.cmd和jm-n-r.cmd表示交互运行的最后一个测试计划。

环境变量:

还有几个环境变量需要自己设置,在 bin 目录下创建一个 setenv.bat 的文件
模板:

rem This is the content of bin\setenv.bat,
rem it will be called by bin\jmeter.bat
set JVM_ARGS="-Xms1024m -Xmx1024m -Dpropname=value"
# 这个 JVM_ARGS中的jvm设置。jmeter.bat脚本在启动JMeter时进行设置,
jmeter -t test.jmx …
变量名称介绍
DDRAWJVM选项影响直接绘图的使用。-Dsun.java2d.ddScale=true。默认值为空。
GC_ALGOJVM垃圾收集器选项。默认为-XX:+UseG1GC-XX:MaxGCPauseMillis=250-XX:G1ReservePerent=20
HEAP启动JMeter时使用的JVM内存设置。默认为-Xms1g-Xmx1g-XX:MaxMetaspaceSize=256 m
JMETER_BINJMeter bin目录(必须以)。价值将被猜测,当扁蝙蝠叫做。
JMETER_COMPLETE_ARGS如果SET表示JVM_ARGS和JMETER选择只供使用。所有其他选择,如堆和GC_ALGO都会被忽视。默认值为空。
JMETER_HOME安装目录。将从jmeter.bat
JMETER_LANGUAGE指定使用过的语言的Java运行时选项。默认为:-Duser.language=“en”-Duser.Region=“en”
JMETE_OPTS启动JMeter时使用的Java运行时选项。JMeter可能会添加操作系统的特殊选项。
JM_LAUNCHjava可执行文件的名称,如java.exe(违约)或javaw.exe
JRE_HOME必须指向您的Java运行时安装。默认为JAVA_HOME
JVM_ARGS启动JMeter时使用的Java选项。这些内容将最后添加到java命令中。默认值为空

  剩下的就是 日志、代理、手动参数、user.properties、system.properties配置文件等等配置了。可以在http://jmeter.apache.org/usermanual/get-started.html#test_plan_building参考。

Building a Test Plan (创建一个测试计划)

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

添加和删除元素

  加法测试计划中的元素。可以通过右键单击树中的元素并从“add“列表。或者,可以从文件中加载元素并通过选择merge “或”open “选项。
  若要删除元素,请确保元素已被选中,右键单击该元素,然后选择“remove“选项。

装载和节省单元

  若要从文件中加载元素,请右键单击要向其中添加加载元素的现有树元素,并选择“merge “选项。选择保存元素的文件。JMeter将这些元素合并到树中。

  若要保存树元素,请右键单击某个元素并选择“Save Selection As …“选项。jMeter将保存选定的元素,以及它下面的所有子元素。这样,您可以保存测试树片段和单独的元素,供以后使用。

配置树元素

  测试树中的任何元素都将在JMeter的右侧框架中显示控件。这些控件允许您配置该特定测试元素的行为。可以为元素配置什么取决于元素的类型。
  可以通过在测试树周围拖放组件来操作TestTree本身。

保存测试计划

  虽然它不是必需的,但我们建议您在运行测试计划之前将其保存到文件中。若要保存测试计划,请选择“save“或”Save Selection As …“从”文件“菜单(在最新版本中,不再需要首先选择”测试计划“元素)。
  JMeter允许您保存整个测试计划树,或者只保存其中的一部分。若要仅保存位于测试计划树的特定“分支”中的元素,请在树中选择要启动“分支”的“测试计划”元素,然后单击鼠标右键访问“Save Selection As …“菜单项。或者,选择适当的测试计划元素,然后选择”Save Selection As …“从编辑菜单。

运行测试计划

  若要运行测试计划,请选择“start" (ctrl + r)从“run菜单项。当JMeter运行时,它在菜单栏的右端显示一个绿色小框。您也可以检查run“菜单。如果”Start“是残疾的,和”stop“启用了,那么JMeter正在运行您的测试计划(或者,至少它认为是这样)。
  绿色框左侧的数字是活动线程数/线程总数。这些只适用于本地运行的测试;当使用客户机-服务器模式时,它们不包括在远程系统上启动的任何线程。
这里描述的使用GUI模式只能在调试测试计划时使用。若要运行实际负载测试,请使用CLI模式。

停止测试

菜单中有两种类型的停止命令:

  • Stop (ctrl + . ) 点击后,立即停止线程。
    • 许多取样器是可中断的,这意味着活动样本可以提前终止。
    • 停止命令将检查所有线程是否在默认超时(5000 ms=5秒)内停止。
      • 可以使用JMeter属性更改此值。
    • 如果线程尚未停止,则会显示一条消息。可以重新尝试停止命令,但是如果失败,则必须退出JMeter来清理。
  • Shutdown (控制 + , ) 请求线程在当前工作结束时停止。
    • 不会中断任何有效的样本。模式关闭对话框将保持活动状态,直到所有线程停止为止。
  • 如果关闭时间太长。关闭“关机”对话框并选择run/stop,或者只是按ctrl + …
    目前支持的停止方式
  • stop-平稳停工
  • StopTestNow-立即关闭

  这些命令可以使用shutdown或stoptest分别写脚本。脚本可以在JMeter中找到bin目录。只有在脚本从同一主机运行时,命令才会被接受。

错误报告

  JMeter向jmeter.log文件,以及测试本身的一些信息。JMeter显示在jmeter.log文件在其窗口右侧的警告图标(三角形)旁边。单击警告图标以显示jmeter.log文件在JMeter的窗口底部。只是偶尔会出现一些Jmeter 无法捕获和记录的错误;这些错误将出现在命令控制台上。如果测试没有像您预期的那样运行,请检查日 志文件,以防报告任何错误(例如,函数调用中的语法错误)。
  采样错误(例如HTTP404-文件未找到)通常不会在日志文件中报告。相反,它们被存储为示例结果的属性。示例结果的状态可以在不同的侦听器中看到。

测试计划

  TestPlan对象有一个名为“功能测试“如果选中,将导致JMeter记录每个示例从服务器返回的数据。如果您在测试侦听器中选择了一个文件,这些数据将被写入文件。如果您正在进行一次小的运行以确保正确配置JMeter,并且您的服务器正在返回预期的结果,这将是非常有用的。其结果是,该文件将快速增长,JMeter的性能将受到影响。如果您正在进行压力测试,则此选项应该关闭(默认情况下是关闭的)。

线程组

  线程组元素是任何测试计划的起点。所有控制器和取样器必须在线程组下。其他元素,例如监听器,可以直接放在测试计划下面,在这种情况下,它们将应用于所有线程组。顾名思义,线程组元素控制JMeter将用于执行测试的线程数。线程组的控件允许您:

  • 设置线程数
  • 设置爬坡期
  • 设置执行测试的次数

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

  爬升周期告诉JMeter需要多长时间才能“爬升”到所选线程的全部数量。如果使用了10个线程,并且爬升周期为100秒,那么JMeter将花费100秒来使所有10个线程启动并运行。每个线程将在前一个线程开始后10秒(100/10)启动。如果有30个线程,爬升周期为120秒,则每个连续线程将延迟4秒。

  爬升需要足够长的时间,以避免在测试开始时负载过大,并且足够短,使最后的线程在第一个线程完成之前就开始运行(除非有人希望这样做)。

  从RAMPUP=线程数开始,根据需要调整向上或向下。默认情况下,线程组被配置为循环一次的元素。

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

  或者(虽然不是很灵活),您也可以使用另外两个字段启动时间和结束时间。当测试启动时,JMeter将在必要时等待,直到到达启动时间.在每个周期结束时,jMeter检查是否达到了结束时间,如果达到了,则停止运行,否则测试将继续进行,直到达到迭代极限。

控制器

  JMeter有两种类型的控制器:取样器和逻辑控制器。这些驱动测试的处理。
  采样器告诉JMeter向服务器发送请求。例如,如果希望JMeter发送HTTP请求,请添加HTTP请求采样器。您还可以通过向一个采样器添加一个或多个配置元素来自定义请求。有关更多信息,请参见采样器.
  逻辑控制器允许您自定义JMeter用于决定何时发送请求的逻辑。例如,您可以添加一个交织逻辑控制器,以在两个HTTP请求采样器之间交替使用。有关更多信息,请参见逻辑控制器.

取样器

  Samplers告诉JMeter向服务器发送请求并等待响应。它们按照它们在树中出现的顺序进行处理。控制器可以用来修改取样器的重复次数。
JMeter采样器包括:

  • FTP请求
  • http请求(也可用于SOAP或REST Webservice)
  • JDBC请求
  • Java对象请求
  • JMS请求
  • JUnit测试请求
  • LDAP请求
  • 邮件请求
  • OS进程请求
  • TCP请求

  每个采样器都有您可以设置的几个属性。您可以通过向测试计划中添加一个或多个配置元素来进一步自定义一个采样器。
  如果要向同一服务器发送相同类型的多个请求(例如HTTP请求),请考虑使用默认配置元素。每个控制器都有一个或多个默认元素(见下文)。
  请记住将侦听器添加到测试计划中,以查看或将请求的结果存储到磁盘。
  如果您对让JMeter对请求的响应执行基本验证,请去采样器添加断言。例如,在对Web应用程序进行压力测试时,服务器可能返回一个成功的“HTTP响应”代码,但页面上可能有错误或可能缺少部分。您可以添加断言来检查某些HTML标记、常见错误字符串等。JMeter允许您使用正则表达式创建这些断言。

逻辑控制器

  逻辑控制器允许您自定义JMeter用于决定何时发送请求的逻辑。逻辑控制器可以更改来自其子元素的请求的顺序。它们可以自己修改请求,使JMeter重复请求等。
  要了解逻辑控制器对测试计划的影响,请考虑以下测试树:

  • 试验计划
    • 线程组
      • 一次只有控制器
        • 登录请求(http请求)
      • 加载搜索页(HTTP采样器)
      • 交错控制器
        • 搜索“A”(HTTP采样器)
        • 搜索“B”(HTTP采样器)
        • http默认请求(配置元素)
        • http默认请求(配置元素)
      • Cookie Manager(配置元素)

  这个测试的第一件事是,登录请求将只在第一次执行。随后的迭代将跳过它。这是由于一次只有控制器.
  登录后,下一个采样器将加载搜索页面(假设用户登录的Web应用程序,然后转到搜索页面进行搜索)。这只是一个简单的请求,没有经过任何逻辑控制器过滤。

  加载搜索页面后,我们要进行搜索。实际上,我们想做两种不同的搜索。但是,我们希望在每次搜索之间重新加载搜索页面本身。我们可以通过4个简单的HTTP请求元素(加载搜索、搜索“A”、加载搜索、搜索“B”)来实现这一点。相反,我们使用交错控制器它每次通过测试传递一个子请求。它保持它的子元素的顺序(即它不是随机传递一个,而是“记住”它的位置)。交错两个子请求可能会过分,但很容易就会有8个子请求,或者20个子请求。
注意http请求默认值它属于交织控制器。假设“SearchA”和“SearchB”共享相同的路径信息(HTTP请求规范包括域、端口、方法、协议、路径和参数,以及其他可选项)。这是有意义的-两者都是搜索请求,访问相同的后端搜索引擎(比如servlet或CGI脚本)。与其在PATH字段中配置具有相同信息的两个HTTP采样器,不如将这些信息抽象到单个配置元素中。当InterleeController“传递”来自“SearchA”或“SearchB”的请求时,它将使用来自HTTP默认请求配置元素的值填充空白。因此,我们将这些请求的路径字段保留为空白,并将该信息放入配置元素中。在本例中,这充其量只是一个小好处,但它演示了这个特性。

  树中的下一个元素是另一个HTTP默认请求,这一次添加到Thread组本身。Thread Group有一个内置的逻辑控制器,因此,它使用这个配置元素就像上面描述的那样。它填补任何通过的请求的空白。在Web测试中,将域字段保留在所有HTTP示例元素中是非常有用的,并将这些信息放入添加到Thread Group的HTTP默认请求元素中。通过这样做,只需更改测试计划中的一个字段,就可以在不同的服务器上测试应用程序。否则,您将不得不编辑每个采样器。

  最后一个元素是HTTP Cookie管理器。Cookie Manager应该添加到所有网络测试中,否则JMeter将忽略Cookie。通过在Thread组级别添加它,我们确保所有HTTP请求都共享相同的cookie。
  逻辑控制器可以组合在一起,以达到不同的效果。见内置逻辑控制器.

测试碎片

  测试片段元素是一种特殊类型的控制器它存在于与线程组元素相同级别的测试计划树上。它与线程组的区别在于,除非由模块控制器或者包括控制器.
  此元素纯粹用于测试计划中的代码重用。

监听器

  监听器在JMeter运行时提供对JMeter收集的有关测试用例的信息的访问。这个,图结果侦听器在图形上绘制响应时间。“查看结果树”侦听器显示采样器请求和响应的详细信息,并可以显示响应的基本HTML和XML表示。其他侦听器提供摘要或聚合信息。

  此外,侦听器还可以将数据定向到文件以供以后使用。JMeter中的每个侦听器都提供一个字段来指示要将数据存储到的文件。还有一个配置按钮,可以用来选择要保存的字段,以及是使用CSV还是XML格式。
  注意,所有侦听器都保存相同的数据;唯一的区别是数据在屏幕上的显示方式。

  可以在测试的任何地方添加侦听器,包括直接在测试计划下添加监听器。它们将只从其级别上或以下的元素中收集数据。

定时器

  默认情况下,JMeter线程不停顿地按顺序执行取样器。我们建议您通过向线程组添加一个可用计时器来指定延迟。如果不添加延迟,JMeter可能会在很短的时间内发出太多请求,从而使服务器不堪重负。

计时器会导致JMeter延迟一定的时间以前每个采样器范围.
  
  如果您选择向线程组添加多个定时器,则JMeter在执行定时器应用到的采样器之前获取定时器和暂停的时间之和。;定时器可以作为取样器或控制器的子级添加,以限制其应用到的取样器。

  若要在测试计划中的单个位置暂停,可以使用试验行动采样器。

断言

  断言允许您断言从被测试服务器接收到的响应的事实。使用断言,您基本上可以“测试”您的应用程序正在返回预期的结果。
  例如,您可以断言对查询的响应将包含某些特定文本。您指定的文本可以是perl样式的正则表达式,并且可以指示响应包含文本,或者它应该匹配整个响应。
  您可以向任何采样器添加断言。例如,您可以将一个断言添加到一个检查文本的HTTP请求中,“<HTML>“.JMeter将检查该文本是否存在于HTTP响应中。如果JMeter无法找到文本,则它将其标记为失败请求。
  请注意,断言适用于其范围。若要将断言限制为单个采样器,请将断言作为取样器的子实例添加。
  若要查看断言结果,请向Thread组添加断言侦听器。失败的断言也将显示在“树视图”和“表侦听器”中,并将计算到错误%的年龄(例如,在聚合报告和摘要报告中)。

配置要素

  配置元素与采样器密切合作。虽然它不发送请求(除了http(S)测试脚本记录器),它可以添加或修改请求。
  配置元素只能从放置元素的树分支中访问。例如,如果将HTTPCookie管理器放置在简单逻辑控制器中,Cookie管理器将只对您放置在简单逻辑控制器中的HTTP请求控制器访问(请参见图1)。Cookie Manager可以被HTTP请求“Web Page 1”和“Web Page 2”访问,而不是“Web Page 3”。
  此外,树分支中的配置元素比“父”分支中的相同元素具有更高的优先级。例如,我们定义了两个HTTP请求默认值元素,“Web默认值1”和“Web默认值2”。因为我们将“Web默认值1”放置在循环控制器中,所以只有“WebPage 2”才能访问它。其他HTTP请求将使用“Web默认值2”,因为我们将其放置在ThreadGroup(所有其他分支的“父”)中。
  图1-测试计划显示配置元素的可访问性
在这里插入图片描述
  这个用户定义变量配置元素是不同的。它是在测试开始时处理的,不管它放在哪里。为了简单起见,建议只将元素放在线程组的开头。

预处理元件

  预处理器在提出采样器请求之前执行一些操作.如果一个预处理器附加到一个取样器元素上,那么它将在该样本元素运行之前执行。预处理器通常用于在示例请求运行之前修改其设置,或更新未从响应文本中提取的  变量。见范围规则有关执行预处理器的更多详细信息。

后处理器元件

  后处理器在采样器请求发出后执行一些操作.如果后处理器附加到一个取样器元素,那么它将在该样本元素运行后执行。后处理器通常用于处理响应数据,通常用于从中提取值。见范围规则有关何时执行后处理器的更多详细信息。

执行命令

  1. 配置元素
  2. 预处理器
  3. 定时器
  4. 采样器
  5. 后处理器(除非SampleResult是零)
  6. 断言(除非SampleResult是零)
  7. 侦听器(除非SampleResult是零)

  请注意,计时器、断言、预处理器和后处理器只有在它们应用到的采样器时才会被处理。逻辑控制器和取样器按照它们在树中出现的顺序进行处理。其他测试元素根据发现它们的范围和测试元素的类型进行处理。[在一种类型中,元素按它们在树中出现的顺序进行处理]。
例如,在以下测试计划中:

  • 控制器
    • 后处理器1
    • 采样器1
    • 采样器2
    • 定时器1
    • 断言1
    • 预处理器1
    • 定时器2
    • 后处理器2
      执行顺序为:
Pre-Processor 1
Timer 1
Timer 2
Sampler 1
Post-Processor 1
Post-Processor 2
Assertion 1
Pre-Processor 1
Timer 1
Timer 2
Sampler 2
Post-Processor 1
Post-Processor 2
Assertion 1

范围界定规则

  JMeter测试树包含分层和有序的元素。测试树中的一些元素是严格分层的(侦听器、Config元素、后处理器、预处理器、断言、定时器),还有一些元素主要是有序的(控制器、取样器)。当您创建测试计划时,您将创建一个示例请求的有序列表(通过样本),该列表表示要执行的一组步骤。这些请求通常是在控制器中组织的,控制器也是有序的。给定以下测试树:
在这里插入图片描述
示例测试树
  请求的顺序是,一,二,三,四。
  有些控制器会影响子元素的顺序,您可以在组件引用.
  其他元素是分层的。例如,断言在测试树中是分层的。如果其父请求是请求,则将其应用于该请求。如果它的父级是Controller,那么它会影响到该控制器的所有后代请求。在以下测试树中:
层次示例
断言#1只应用于请求一个,而断言#2应用于请求二和请求三。
另一个例子是,这次使用计时器:
在这里插入图片描述
  在本例中,请求的命名反映了它们的执行顺序。计时器#1将适用于请求2、3和4(注意顺序如何与层次元素无关)。断言1只适用于请求3。计时器#2将影响所有请求。

  希望这些示例说明配置(分层)元素是如何应用的。如果您想象每个请求被传递到树枝上、它的父请求、其父请求的父请求,以及每次收集该父请求的所有配置元素时,那么您将看到它是如何工作的。

  配置元素头管理器、Cookie管理器和授权管理器与配置默认元素不同。配置默认元素中的设置被合并到一组值中,样本可以访问这些值。但是,来自管理器的设置没有合并。如果一个采样器范围内有多个Manager,则只使用一个Manager,但目前无法指定哪一个被使用了。

属性和变量
  JMeter特性定义为jmeter.properties(见开始-配置JMeter了解更多细节)。
属性对于jmi是全局的,并且主要用于定义JMeter使用的一些缺省值。例如,属性远程主机定义JMeter将尝试远程运行的服务器。属性可以在测试计划中引用-请参阅函数-读取属性-但不能用于线程特定的值。

  JMeter变量每个线程都是本地的。每个线程的值可能是相同的,也可能是不同的。
如果变量由线程更新,则只更改变量的线程副本。例如,正则表达式抽取器后处理器将根据线程读取的示例设置变量,这些变量可以稍后由同一个线程使用。有关如何引用变量和函数的详细信息,请参阅函数与变量

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

  这个,集属性函数可用于定义JMeter属性。这些对于测试计划是全局的,因此可以用来在线程之间传递信息-如果需要的话。

  备注: 变量和属性都区分大小写.

使用变量对测试进行参数化

  变量不必改变-它们可以定义一次,如果单独使用,则不会更改值。因此,您可以将它们用作测试计划中经常出现的表达式的缩写。或者对于在运行过程中为常量,但在运行期间可能会有所不同的项。例如,主机的名称或线程组中的线程数。

  在决定如何构造测试计划时,请记下运行时哪些项是常量,但在运行期间哪些项可能会更改。为这些变量确定一些变量名-可能使用命名约定,例如用C_或K_或者只使用大写字母将它们与测试期间需要更改的变量区分开来。还要考虑哪些项需要是线程的本地项-例如,使用正则表达式后处理器提取的计数器或值。您可能希望对它们使用不同的命名约定。

  例如,您可以在测试计划中定义以下内容:

HOST             www.example.com
THREADS          10
LOOPS            20

  您可以在测试计划中将这些引用为${主机} ${线程}等。如果以后要更改主机,只需更改寄主变量。对于少量的测试来说,这很好,但是当测试许多不同的组合时,会变得很乏味。一种解决方案是使用属性来定义变量的值,例如:

HOST             ${__P(host,www.example.com)}
THREADS          ${__P(threads,10)}
LOOPS            ${__P(loops,20)}

  然后,可以按以下方式更改命令行中的部分或全部值:

jmeter … -Jhost=www3.example.org -Jloops=13

  抱歉,前段时间工作比较忙,没有更新。
  编写不易,求关注!!!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值