jmter新手入门-测试计划要素

上一篇 / 下一篇  2012-07-16 11:45:23 / 个人分类:jmeter

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

如果您没有记录的数据文件,这个选项没有什么区别。

您也可以使用上监听器的配置按钮来决定哪些字段保存

4.1 ThreadGroup的

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

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

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

斜坡告诉JMeter多久采取“上升”的选择线程。如果使用10个线程,以及斜坡上升周期为100秒,那么JMeter将采取100秒得到所有10个线程的启动和运行。前一个线程开始后,每个线程都将开始10秒(100/10)。如果有30个线程和120秒的加速期,那么每个连续的线程将被推迟了4秒。

斜坡需要足够长的时间,以避免过大的工作负荷,在测试开始和足够短,最后一个线程开始运行前首先完成(除非你想这样的事情发生)。

开始斜坡上升=线程数,向上或向下调整需要。

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

1.9版本引入了一个测试运行调度线程组面板的底部单击复选框以显示额外的字段,可以在其中输入运行的开始和结束时间。当测试开始时,JMeter将等待,如有必要,直到启动时间已经达到。在每个周期结束时,JMeter的检查结束时间已达到,若有,停止运行,否则测试是可以继续下去,直到达到迭代限制。

另外,可以使用相对延迟和持续时间等领域。注意:延迟覆盖的启动时间,持续时间超过乘坐的结束时间。

4.2.3测试片段

测试片段元素是一种特殊类型的控制器,在同一级别的线程组元件的测试计划树中存在。它不同于一个线程组,因为它是不会执行,除非它是由一个引用的模块控制器一个Include_Controller。

此元素是纯粹为测试计划内重复使用的代码,并在2.5版推出

4.3听众

听众提供访问JMeter的测试案例的收集,同时JMeter的运行信息。图形结果监听器图,图上的响应时间。“查看结果树”监听器显示的采样请求和响应的详细信息,并能显示基本的HTML和XML响应交涉。其他听众提供信息汇总或聚合。

此外,听众可以直接的数据,以供日后使用的文件。每一个听者在JMeter提供了一个字段来指示该文件将数据存储到。还有配置的按钮,可以用来选择哪些领域,以节省,以及是否使用CSV或XML格式请注意,所有的监听器保存相同的数据,唯一的区别是在数据呈现在屏幕上的方式。

听众可以添加在测​​试中的任何地方,包括直属的测试计划。他们将收集数据,只能从自己的水平或低于元素。

使用JMeter来,有几个听众。

4.4定时器

默认情况下,一个JMeter线程发送请求而每个请求之间的暂停。我们建议您通过添加一个线程组可用的定时器指定一个延迟。如果不加延迟,JMeter的可能太多的要求,在很短的时间量压倒你的服务器。

定时器将导致JMeter的每个采样是在其一个延迟一定的时间范围

如果您选择添加多个定时器线程组,JMeter的需要定时器的总和,该时间之前暂停执行采样定时器适用。定时器可以增加一条,作为采样器或控制器的儿童,以限制它们应用于采样。

要在测试计划中的一个单一的地方提供了一个暂停,可以使用测试行动取样。

4.5断言

断言允许你断言被测试的服务器收到的答复的事实。使用断言,你基本上可以“测试”,您的应用程序是你希望它返回的结果。

例如,您可以断言,查询响应将包含一些特定的文本。您所指定的文字可以是一个Perl风格的正则表达式,你可以表明反应是包含文字,或者说,它应该符合整个响应。

您可以添加任何采样断言。例如,您可以添加到一个HTTP请求检查文本,断言“”。JMeter会检查该文本是在HTTP响应。如果JMeter可以找到的文本,然后将其标记为失败的请求。

请注意断言适用于所有采样器,其范围。要限制的说法,以一个单一的采样,添加断言,作为一个孩子的采样。

要查看断言结果,断言监听器添加到线程组。失败的断言也将显示在树视图和表听众,并在总结和总结报告,例如对错误%年龄。

4.6配置元素

配置元素密切配合采样器。虽然它不发送请求(HTTP代理服务器的除外),它可以添加或修改请求。

配置元素是从仅在树枝访问你的地方元素。例如,如果你在一个简单的逻辑控制器内的HTTP Cookie管理Cookie管理器将只能访问HTTP请求的控制器简单的逻辑控制器内的地方(见图1)。Cookie管理器可访问的HTTP请求“网页1”和“网页”,但不是“网页3”。

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


图1 -测试计划配置元素显示Accessability
用户定义的变量的配置元素是不同的。这是在测试的开始,它被放置在任何地方的问题处理。为了简单起见,建议该元素被放置在启动一个线程组。
4.7预处理器元素

预处理器执行前一个采样的请求遭到了一些行动。如果预处理器连接到一个取样元素,那么它会执行之前运行,采样元素。预处理器是最常用的一个样品申请修改设置,运行之前,或更新不从响应文本中提取的变量。作用域规则预处理器执行时的更多细节。

4.8后处理器元件

后处理器执行某些动作后已经取得了一个采样请求。如果后处理器连接到一个采样元素,那么它会执行运行后,采样元素。后处理器是最常用的处理响应数据,往往从中提取的值。作用域规则时执行后处理器的更多细节。

4.9执行顺序
  1. 配置元素
  2. 预处理器
  3. 定时器
  4. 取样器
  5. 后处理器(除非SampleResult是空)
  6. 断言(除非SampleResult是空)
  7. 监听器(除非SampleResult是空)
请注意,定时器,断言前和后处理器只处理,如果有一个采样器,它们所适用。他们在树中出现的顺序处理逻辑控制器和采样。其他测试元素处理的范围中,他们发现,和测试元素的类型。[在一个类型,元素被处理的顺序,它们在树中出现]。

例如,在下面的测试计划:

  • 控制器
    • 后处理器1
    • 采样器1
    • 采样器2
    • 定时器1
    • 声明1
    • 预处理器1
    • 定时器2
    • 后处理器2
执行的顺序将是:
预处理器1定时器1定时器2采样器1后处理器1后处理器2声明1预处理器1定时器1定时器2采样器2后处理器1后处理器2声明1
4.10作用域规则

JMeter测试树中包含的元素,这是两个层次,并下令。在测试树的某些元素是严格分层​​(听众,配置元素后Procesors,预处理器,断言,定时器),和一些主要命令(控制器,采样器)。当您创建您的测试计划,您将创建一个索取样品的有序列表(通过取样)表示要执行的步骤。经常组织这些请求,也下令控制器内。由于下面的测试树:


测试树示例

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

有些控制器会影响其子元素的顺序,您可以阅读有关在这些特定的控制器组件的引用。

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


层次结构的例子

断言#1仅适用于请求一个,而断言#2应用于要求第二及第三。

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


复杂的例子:

在这个例子中,请求被命名,以反映在它们的执行顺序。定时器1将适用于要求二,三,四(通知层次元素的顺序是如何无关)。断言#1只适用于请求三。定时器2#会影响所有的请求。

希望这些例子清楚如何配置(分层)元素。如果你能想象每一个请求被传递的树枝,其母公司,那么其母公司的母公司等,而且每一次收集所有的配置元素,父,那么你会看到它是如何工作的。

配置元素头经理,Cookie管理和授权管理,区别对待,从配置的默认元素。从配置的默认元素设置,合并成一组值取样访问。然而,从管理者的设置不合并。如果一个以上的经理在取样范围是,只有一个经理是使用,但目前还没有方法来指定它是用来。
4.11属性和变量

JMeter的属性定义在jmeter.properties(见Gettting入门-配置JMeter的更多细节)。

属性是全球性的JMeter的,大多是用来定义一些JMeter的使​​用默认值。例如物业remote_hosts定义JMeter会尝试远程运行的服务器。属性可以在测试计划中引用-看到功能-读属性-但不能使用特定于线程的值。

JMeter的变量,每个线程的本地。该值可为每个线程相同,或他们可能会有所不同。

如果一个变量是由一个线程更新,只有改变该变量的线程副本。例如,正则表达式提取后处理器将设置其变量根据其线程读取的样品,并可以使用这些由同一线程稍后。对于如何引用变量和函数的详细信息,请参阅函数和变量

请注意,由测试计划用户定义的变量的配置元素中定义的值在整个测试计划启动。如果同一个变量定义多个UDV的元素,那么最后一个生效。一旦一个线程已经开始,初始设置的变量复制给每个线程。其他元素如用户参数预处理器或经常表达提取后处理器可用于重新定义相同的变量(或创建一个新的)。这些重新定义只适用于当前线程。

的setProperty的功能可以被用来定义一个JMeter属性。这是全球性的测试计划的,所以可以用来在线程之间传递的信息 - 这应该需要。

这两个变量和属性是区分大小写的。
4.12使用变量参数化测试

变量没有变化 - 它们可以被定义一次,如果单独留在家中,不会改变的价值。所以,你可以使用尽可能短的手,他们频繁地出现在一个测试计划的表达式。或项目在运行过程中是不变的,但在运行中可能会有所不同。例如,一台主机,或在一个线程组的线程数目的名称。

当决定如何构造一个测试计划,做笔记,哪些项目是不变的运行,但可能会改变运行之间。决定对这些变量的名字 - 也许使用,如C_或K_前缀或使用大写字母,以区别于他们在测试过程中需要改变的变量命名约定。还要考虑哪些项目需要一个线程的本地 - 例如柜台或用正则表达式后处理器提取的值。你不妨使用这些不同的命名约定。

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

主机www.example.com螺纹10LOOPS 20
你可以参考{HOST} $ {螺纹}等这些在测试计划中,如果以后要更改的主机,只需更改主机变量的值。这工作得很好,小测试,但测试时,大量不同的组合变得单调乏味。一种解决方案是使用一个属性来定义变量的值,例如:
主机$ {__P(主机,www.example.com)}螺纹$ {__P(线程,10)}LOOPS $ {__P(循环,20)}
然后,您可以改变一些如下的命令行中的值或所有:
JMeter的... ...- Jhost = www3.example.org Jloops = 13


TAG:

引用 删除 clrainbow   /   2016-03-25 14:32:38
这翻译我也是醉了
引用 删除 clrainbow   /   2016-03-25 14:31:55
-5
 

评分:0

我来说两句

Open Toolbar