JMeter基本元素简介
JMeter基本元素简介
一、测试计划
测试计划对象有一个复选框叫做“Functional Testing”(函数测试模式),如果选中,它将使jmeter记录服务端返回的每一个样例的数据,如果你在测试监听器中选择了一个文件,数据将会写到这个文件。如果你正在运行一个很小的测试来确保jmeter配置正确,这是非常有用的,你的服务器也返回了希望的结果。得到的结论是,这个文件会快速的变的很大,jmeter性能将受到影响。
如果你正在做压力测试,这个选项建议关掉(它默认是关掉的)。
如果你没有记录数据到文件,这个选项不会有效果。你也可以在监听器中配置哪些字段要存储。

二、线程组
线程组元素是任何测试计划的开始点。所有的控制器和样本器必须在一个线程组下。其他元素,例如:监听器可以直接放在测试计划下,这样的话,它将应用于所有的线程组。顾名思义,线程组元素控制着线程的数量,jmeter将使用这些线程执行你的测试。线程组的管理允许你做如下的事情:
1、设置线程的数量;
2、设置提升的周期;
3、设置执行测试的次数;
每一个线程都将独立于其他线程,完整的、完全的执行测试计划。多个线程被用来模拟并发连接到服务应用。提升周期告诉jmeter花费多长时间提升到所有的线程数,如果线程数设置为10,提升周期设置为100秒,jmeter将花费100秒唤起10个线程并且运行。每一个现场将在前一个线程开始10(100/10)秒后开始。如果有30个线程,提升周期设置为120,每一个连续的线程将会延迟4秒。提升周期需要足够的长以避免测试开始时,巨大的工作负载,并且使得最后一个线程开始间隔第一个线程结束足够的短。
提升周期 = 线程的数量做上下调整
默认的,线程组配置只执行一次。线程组也提供了一个调度器。点击线程组底部的复选框,可以使额外的区域有效或失效,那些区域可以输入测试的周期、启动延迟、启动开始时间和结束时间。你可以配置持续时间和启动延迟控制每一个线程组的持续时间和多少秒后启动。当测试开始后,jmeter将等待启动延迟时间后,启动启动线程组中的线程,并且执行配置的持续时间。这两个选项将覆盖掉配置的开始时间和结束时间。或者(虽然没有推荐哪个更适合)你可以设置其他的两个域,开始时间和结束时间。当测试开始以后,jmeter等待到达开始时间。在每一个周期的结尾,jmeter检查结束时间是否已经到达,如果到了,运行将停止,否则,测试将继续进行直到循环结束。

三、控制器
jmeter有两种类型的控制器:样本器和逻辑控制器。他们驾驭着测试的进程。样本器告诉jmeter发送请求给服务,例如:添加http请求样本,如果你想jmeter发送http请求。你也可以通过给样本器添加一个或多个配置元素定制请求。逻辑控制器让你定制逻辑,jmeter使用这个逻辑决定什么时候发送请求。例如:你可以添加交替逻辑控制器交替执行两个http请求样本。
3.1 样本器
样本器告诉jmeter发送请求给服务并且等待相应。他们按照在树中出现的顺序执行。控制器可以用来修改样本器的重复次数。jmeter的样本器包含:
FTP Request
HTTP Request (can be used for SOAP or REST Webservice also)
JDBC Request
Java object request
JMS request
JUnit Test request
LDAP Request
Mail request
OS Process request
TCP request
每一个样本器都有几个可以设置的属性。你可以在测试计划中添加一个或更多的配置元素定制样本器。如果你打算发送同一种类型的多个请求到相同的服务,可以考虑使用默认的配置元素。每一个控制器都有一个或多个默认元素。记得为你的测试计划添加一个监听器来观看和存储每一个请求的结果到硬盘上。如果你对jmeter平台的响应的基本验证感兴趣,添加一个断言器到样本器。例如:压力测试一个web应用,服务返回一个成功的http响应码,但是页面可能有错误或者缺失了一部分。你可以添加断言器确定http的标签。通用的错误字符串等。jmeter让你通过正则表达式创建断言器。

3.2 逻辑控制器
逻辑控制器可以改变来自子元素的请求顺序。他们可以修改自己的请求,使jmeter重复请求。为了了解测试计划中逻辑控制器的效果,看一下下面的测试树:

这个测试计划的第一个事情就是只执行一次的登录请求,随后的迭代将跳过这一步,这是仅执行一次控制器的效果。登录之后,下一个样本器将加载搜索页,这是一个简单的请求,没有通过逻辑控制器。加载搜索页之后,我们想执行一次搜索。实际上我们想执行两个不同的搜索,可是,我们想在两次搜索之间重新加载搜索页,我们可以通过4个简单的http请求元素来执行(加载搜索页、搜索A、加载搜索页、搜索B)。在这里,我们使用代替方案,使用交替控制器,它一次传递一个子请求通过测试,它保持着子元素的顺序。交替两个子请求可能过于频繁了,但它也可以很容易的有8个,或者20个子请求。
提醒一下,http默认请求 是属于交替控制器的,设想一下,搜索A和搜索B共享相同的路径信息,两个搜索请求,命中相同的后端搜索引擎。相比配置两个相同信息的http样本器,我们可以抽象出信息到一个单一的配置元素。当交替控制器传递请求时,它会用http默认请求中的值去填充空白项。所以我们将那些请求的PATH项空白,把这些信息放到配置元素中。这充其量只是一个小小的好处,但是它展示了这个特性。
树中的下一个请求是另外一个http默认请求,这次是添加到线程组本身。线程组有一个内嵌的逻辑控制器。它使用这个元素像上面描述的那样。它填充任何请求的空白信息。它在web测试中非常的有用,在你所有的http请求样本器中省去域名项,把这些信息放到http默认请求元素中,并添加到线程组中。你可以在不同的服务上测试你的应用,而仅仅修改一个配置项,否则你要编辑每一个样本器。
最后一个元素是http cookie管理器,cookie管理器应该添加到所有的web测试中,否则jmeter将会忽略cookie,将他添加到线程组的级别,我们确保了所有的http请求共享相同的cookie。
四、测试碎片
测试碎片元素是一个特殊类型的控制器,它存在测试计划树中,和线程组有相同的级别。它区别与线程组的地方就是除非它包含在模块控制器或者include控制器,否则他不会被执行。
这个元素就是为了测试复用的。
五、监听器
监听器提供了访问jmeter收集的测试用例的信息。图结果监听器在图上绘制响应的次数。视图结果树展示请求和响应的细节,还可以显示响应的xml和html。其他的监听器提供总结和聚集的信息。
另外的,监听器可以将数据传输的文件中为以后使用呢。jmeter的每一个监听器都可以指定文件的路径。也有一个配置按钮可以选择哪个文件保存。监听器可以在测试的任何地方添加,直接包含在测试计划下。它自从它的这个级别以下的元素中获取数据。

JMeter的一些基础元素介绍完了,下一篇将介绍如何使用。
JMeter基本元素简介的更多相关文章
- jmeter入门简介(一)
简介 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试CS/BS的软件.它可以用来测试静态和动态资源的性能,可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析 ...
- jmeter函数简介
1._char:把一组数字转化成Unicode字符. 2._counter:记录线程的迭代次数. 3._CSVRead:可以从文件中指定列的值. 4.${_CSVRead(D:\test.txt,0, ...
- jmeter 接口测试简介
前言: 本文主要针对http接口进行测试,使用Jmeter工具实现. Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对 ...
- 压力测试之badboy和Jmeter的简单使用方法
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 所谓压力测试是指,通过确定一个系统的瓶颈或者不能接收的性能点, ...
- 转:jmeter实践
本文主要介绍性能测试中的常用工具jmeter的使用方式,以方便开发人员在自测过程中就能自己动手对系统进行自动压测和模拟用户操作访问请求.最后还用linux下的压测工具ab做了简单对比. 1. ...
- JMeter性能测试入门--偏重工具的使用
1.JMeter整体简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试 ...
- jmeter入门案例(二)
jmeter入门简介(一)下载及元件介绍https://www.cnblogs.com/wish5714/p/9714930.html jmeter典型的http请求示例 业务场景 银行卡收单交易,模 ...
- 转:基于Jmeter的MQTT测试插件
基于Jmeter的MQTT测试插件-上 1. Jmeter插件简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.下载 用于对软件做压力测试,它最初被设计用于Web应用 ...
- MQTT压力测试工具之JMeter插件教程
基于Jmeter的MQTT测试插件-上 1. Jmeter插件简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.下载 用于对软件做压力测试,它最初被设计用于Web应用 ...
随机推荐
- .Net Ajax跨域请求实现
下一阵子要做一个网站Web储备一下知识,AJAX 实现跨域请求,估计会用到,以前在学 WebServer 时候老师整理的一个文档,现在便于查阅和使用现在放到我的博客中. 一般平时我写web页面的时 ...
- 工作随笔——Golang interface 转换成其他类型
新的公司,新的氛围.一年了,打算写点什么.so,那就写google的golang语言吧. 最最最基础的语法结构见go语言菜鸟教程 接下来写点菜鸟教程没有的. go语言的设计者认为:go语言必须让程序员 ...
- dubbo,eclipse,服务报错
运行e3-manager报错找不到类,更新了子模块,但e3-manager下没有更新:
- 【python】函数参数关键字索引、参数指定默认值、搜集参数
- ansible服务及剧本编写
第1章 ansible软件概念说明 python语言是运维人员必会的语言,而ansible是一个基于Python开发的自动化运维工具 (saltstack).其功能实现基于SSH远程连接服务:ansi ...
- su和sudo命令的区别
一. 使用 su 命令临时切换用户身份 参考 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,bein ...
- MySql Schema 优化
MySQL Schema 优化: 1.保证你的数据库的整洁性. 2.归档老数据 — 删除查询中检索或返回的多余的行 3.在数据上加上索引. 4.不要过度使用索引,评估你的查询. 5 ...
- K:java序列化与反序列化—transient关键字的使用
首先,应该明白的是transient是java中的一个关键字,音标为 英: [ˈtrænziənt]. 在了解transient关键字之前,应该先弄明白序列化和反序列化.所谓的序列化,通俗点的 ...
- 完美解决浮动IE6 7中的兼容性BUG问题
想要创建出漂亮的网页设计,除了要认真学习每一个html和CSS代码之外,不可能不去了解一下臭名昭著的IE6和更早的那些IE浏览器的坏脾气,因为你本来写出的规规矩矩的代码,漂亮的设计就此就要完成了,却发 ...
- Python学习_12_方法和类定制
方法 在上一篇随笔中,简单提到了类的某些方法:__init__()等的调用,并简要说明方法和函数的区别. 方法是在类内部定义的函数,方法也是对象,所以方法是类的属性,这就是为什么说实例的方法存在于类定 ...