JMeter概念
1. Test Plan 测试计划
Test Plan也就是测试计划,概念有点类似eclipse里面的project(项目、工程)。
一个JMeter测试计划有很多种测试元素组成。一般至少包含一个Thread Group(线程组),在每个Thread Group里面又可以包含Controller,Listener,Timer等等。
总结下,大体结构如下
更细化一点,差不多这样,
2. Thread Group 线程组
Thread Group就是线程组,,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的。
(1)Ramp-Up Period (线程总计运行时间 ):告诉Jmerter达到最大线程数据需要多长时间 。默认设置为0,即Jmeter立即启动所有线程。如果设置为5,意味着5秒内发起10条请求,平均1秒发出2条。
(2)循环次数:决定线程循环次数,设置10次,即每个线程循环10次,100个线程要循环:10*100=1000次 。
3. Controllers 控制器
JMeter主要有两种类型的Controllers,Samplers和Logic Controllers (逻辑控制器)。
Samplers 采样器
Samplers允许JMeter向server发送一系列的请求。她模拟了用户从页面想终端server发送请求的行为,比如新建一个HTTP的Sampler,可执行POST、GET、DELETE等请求。
一些常用的samplers主要有一下几种,
- HTTP Request HTTP请求
- FTP Request
- JDBC Request
- JavaRequest
- SOAP/XML Request
- RPC Request
HTTP Request HTTP请求
参数列表:
Attribute | Description | Required |
Name
|
组件名 | No |
Server
|
域名或IP | No |
Port | 端口 | No |
Connect Timeout | 连接超时时间(单位毫秒) | No |
Response Timeout | 响应超时时间(单位毫秒) | No |
Implementation | 实现方式,默认值为Jmeter属性:jemter.httpsampler | No |
Protocol | 协议,HTTP or HTTPS | No |
Method | 请求方法:HTTP GET or HTTP POST | No |
Path | 请求资源路径 | No |
Send Parameters With the Request | 参数列表 | No |
Server (proxy) | 代理服务器的域名或IP | No |
Port | 代理服务器的端口 | No, unless proxy hostname is specified |
Username | 代理服务器的用户名 | No |
Password | 代理服务器的密码 | No |
Retrieve All Embedded Resources from HTML Files | 告诉Jmeter解析HTML文件并发送所有资源请求(包括图片,java小程序,JS,CSS等) | No |
Use concurrent pool | 用一个连接池来获取嵌入的资源 | No |
Size | 用于获取嵌入式资源的并发连接池大小 | No |
Embedded URLs must match: | URL匹配,过滤 | No |
http 默认端口80
https默认端口443
服务器IP地址和端口号以及接口共同的请求路径部分,作为变量引用时,需要在路径填充表格的最前面添加两个斜杠“//”,不加的话会引用失败。
GET请求
1
|
http: //请求路径/Ecs-duHc0U4E #该请求参数“Ecs-duHc0U4”以斜杠形式传入 |
POST请求
1
|
http: //请求路径?subnetCode=Subnet-tQSPwlp1&imageCode=image-djcgebxfd #该请求参数subnetCode和imageCode以问号形式传入 |
区别是:
第一种解析的时候会把后面的字符当做路径或是地址;
第二种解析的时候会把后面的地址当做匹配关键字,“?”起连接作用,表示要带参数,“&”作为不同参数的间隔符。
Logic Controllers 逻辑控制器
Logic Controllers其实最主要的作用就是控制执行顺序。她可以用来控制sampler在一个线程中的执行顺序,也可以改变来自其他elements请求的顺序。典型的代表就是,IF Controller、While Controller等。
一些常用的Logic Controllers主要有一下几种,
- Simple Controller
- Loop Controller
- Once Only Controller
- Interleave Controller
- Random Controller
- Random Order Controller
- Throughput Controller
- Runtime Controller
- If Controller
- While Controller
- Switch Controller
- ForEach Controller
- Module Controller
- Include Controller
- Transaction Controller
- Recording Controller
4. Listeners 监听器
Listeners是我非常喜欢的一个功能,她可以让你看到samplers测试的结果,形式多样,包括表格、图标、树状或者是日志文件中的简单文本。在每次smaplers执行的时候,结果数据都会被收集在多样的Listeners中。
Listeners可以加在test plan下的任何地方,JMeter提供的Listeners主要包含以下几种,
- Sample Result Save Configuration
- Graph Full Results
- Graph Results
- Spline Visualizer
- Assertion Results 断言结果
- View Results Tree 查看结果树
- Aggregate Report 聚合报告
- View Results in Table
- Simple Data Writer
- Monitor Results
- Distribution Graph (alpha)
- Aggregate Graph
- Mailer Visualizer
- BeanShell Listener
- Summary Report
Aggregate Report 聚合报告
(1)Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
(2)#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
(3)Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
(4)Median:中位数,也就是 50% 用户的响应时间
(5)90% Line:90% 用户的响应时间 。即:90%Line 值为N,代表 这个数组中有90%的数将小于等于12
Note:关于 50% 和 90% 并发用户数的含义,请参考相关文章
(7)Min:针对同一请求取样器,请求样本的最小响应时间
(8)Max:针对同一请求取样器,请求样本的最大响应时间
(9)Error%:本次测试中出现错误的请求的数量/请求的总数
(10)Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
(11)KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
ps: 无特别说明,以上时间的单位均为ms
5. Timers 定时器
默认情况下,Jmeter线程在sampler之间发送请求不会暂停。建议为线程组添加某种定时器,以便用来在每个请求之间应该隔多长时间。如果测试人员不设定这种延迟,Jmeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。
定时器会让作用域内的每一个采样器都在执行前等待一个固定时长。如果测试人员为线程组添加了多个定时器,那么Jmeter会将这些定时器的时长叠加起来,共同影响作用域范围内的采样器。定时器可以作为采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器。
默认情况下,一个JMeter线程在sampler之间发送请求是不会暂停的。有时候这可能不是你想要的。这时候你就可以加一个timer元素,你可以用她来在每个请求之间定义一个时间间隔。
JMeter提供的Timers,如下
- Constant Timer 固定定时器 :单个用户每次请求的间隔时间(毫秒)
- Gaussian Random Timer 高斯随机定时器
- Uniform Random Timer
- Constant Throughput Timer 常数吞吐量定时器
- Synchronizing Timer
- JSR223 Timer
- BeanShell Timer
- BSF Timer
- Poisson Random Timer
Constant Throughput Timer 常数吞吐量定时器
Constant Throughput Timer常数吞吐量定时器可以让JMeter以指定数字的吞吐量(即指定TPS,只是这里要求指定每分钟的执行数,而不是每秒)执行。吞吐量计算的范围可以为指定为当前线程、当前线程组、所有线程组,并且计算吞吐量的依据可以是最近一次线程的执行时延。
6. Assertions 断言
Assertions,有点类似JUNIT里面的断言,可以对请求中返回的结果做一些验证性的处理。使用Assertions可以定制请求正确时返回的成功信息,也可以高亮返回的错误信息。
JMeter提供的Assertions如下,
- Beanshell Assertion
- BSF Assertion
- Compare Assertion
- JSR223 Assertion
- Response Assertion 响应断言
- Duration Assertion
- Size Assertion
- XML Assertion
- BeanShell Assertion
- MD5Hex Assertion
- HTML Assertion
- XPath Assertion
- XML Schema Assertion
Response Assertion 响应断言
作用:一个HTTP请求发出去,怎么判断执行的任务是否成功呢?通过检查服务器响应数据,是否返回预期想要的数据,如果是,判断任务成功,反之任务失败。
(1)Apply to
关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只有一个请求。但是当我们发一个请求时,可以触发多个服务器请求,就有main sample 和 sub-sample之分了。
(2)要测试的响应字段
勾选“响应文本”,会在响应数据中进行校验。如果要验证健壮性,则需要勾选ignore status(忽略错误)
(3)匹配规则
勾选“包括”,意味着只要相应数据中包含要校验的字段,任务就算成功。
(4)要测试的模式
即需要校验的数据值。 认为返回结果包括 【要测试的模式】内容 就是通过
7. Config Element 配置元件
JMeter提供的Config Element 配置元件如下,
- CSV Data Set Config
- DNS Cache Manager
- FTP Request Defaults FTP请求缺省值
- HTTP Cache Manager
- HTTP Cookie Manager
- HTTP Header Manage HTTP信息头管理器 :为了在Headers中传值
- HTTP Authorization Manage HTTP授权管理器
- HTTP Request Defaults HTTP请求默认值 :为了指定请求的服务器信息
- Java Request Defaults Java请求默认值
- JDBC Connection Configuration
- Keysore Configuration
- LDAP Extended Request Defaults
- LDAP Request Defaults LDAP请求默认值
- Random Variable
- TCP Sample Config TCP取样器配置
- User Defined Variable 用户定义的变量
- Login Config Element 登录配置元件/元素
- Simple Config Element 简单配置元件:可以在采样器中添加或者重载任意值
- Counter 计数器:容许用户创建一个计数器,可在线程组中任何地方被引用
CSV Data Set Config
(1)文件所在的路径即为CSV Data Set Config配置元件中的Filename值;
(2)只传入一个参数,则文件中只有一列。如果有两个参数,会有两列数据,并用英文逗号隔开;引用参数时,CSV Data Set Config配置元件中Variable Names填写两个变量,也用英文逗号隔开即可
(3)若文件有10行数据,意味着10条测试用例,则在http request 中需要 设置线程循环10次。CSV Data Set Config配置元件中Recycle on EOF填写False
User Defined Variables 用户自定义变量
Jmeter可以通过用户自定义将字段参数化。作用范围:当前的线程组内所有取样器(即博主的HTTP请求)都可以引用变量。
“名称”中输入变量名称
“值”中可以直接输入值,也可以通过Jmeter的函数__CSVRead,__StringFromFile从csv或dat文件中读取,还可以通过前缀加随机数的方法设置参数。
(1)当参数值是某个前缀加一个数字时,可以用前缀名加${__Random(,,)}或${__threadNum}的方法设置参数值。
如进行登录测试之前,先准备了用户名为perf_0到perf_1000的用户,
那么用户名就可以设为perf_{__Random(0,1000,)}。
(2)当参数值没有规律的且量不太大时,可以通过${__CSVRead(,)},${__StringFromFile(,,,)}从文件中读取
如将用户名和密码保存在user.csv文件中,user.csv的内容如下:
oriana,123456
admin,admin
dandan,123456
因为user.csv文件中有两列数据,所以只能用${__CSVRead(,)}函数
username参数后的值设为${__CSVRead(user.csv,0)},
password参数后的值设为${__CSVRead(user.csv,1)}。
8. Post processors后置处理器
(正则表达式提取器是Jmeter关联中的一种)使用场景:有两个HTTP请求,请求A的返回数据中有一个字段“ABCD”,该字段要作为请求B的入参。
(1)引用名称:下一个请求要引用的参数名称,如填写Atask,则可用${Atask}引用它。
(2)正则表达式:
():括起来的部分就是要提取的。
(3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值
(4)匹配数字:0代表随机取值,1代表全部取值,通常情况下填0
(5)缺省值:如果参数没有取得到值,那默认给一个值让它取,我填的Error。
可用的正则表达式校验工具: RegexTester 。基础用法
99. 其他
除了上面几个最重要的概念之外,还有几个概念,大家如果用到可以去官网翻翻文档,比如说Configuration Elements, Pre-processor Elements,Post-processor Elements, Execution Order of Test Elements … …
以上。来源: http://blog.csdn.net/shizhiailian/article/details/52443370# JMeter中非常重要的几个概念
http://blog.csdn.net/ydppqh/article/details/46859543 Jmeter 通过用户自定义进行参数化
http://blog.csdn.net/shuimengzhen/article/details/57075437 Jmeter之六:定时器 之 常数吞吐量定时器
http://www.cnblogs.com/LiangHu/p/6230372.html 接口测试工具-Jmeter使用笔记(五:正则表达式提取器)
小例子:
查看结果树的编码转换(接口返回的是unicode编码,查看不方便)
1,加后置处理器 :正则表达式
2,1处理器用名称任意。输入正则表达式。提取需要的内容
3,加后置处理器:BeanShellPostProcessor
4,3处理器内容中加入 unicode转换为utf8的脚本代码(网上可百度)
JMeter概念的更多相关文章
- [Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)
[Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)开学典礼](https://ke.qq.com/course/453802)**测试交流群:549376944**0 ...
- (转)学习使用Jmeter做压力测试(一)--压力测试基本概念
一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测试,两者可以结合进行. 通过负载测试,确定在各种工作负载下 ...
- Jmeter基础之---jmeter基础概念
Jmeter基础之---jmeter基础概念 JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. JMeter 介绍: 一个非常优 ...
- JMeter基础概念
JMeter 介绍:一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. 从性能工具的原理划分: Jmeter工具和其他性能工具在原理上完全一致,工具包含 ...
- JMeter入门(01)概念和样例
一.概念 JMeter 是一款专门用于功能测试和压力测试的轻量级测试开发平台,实现了许多和互联网相关的网络测试组件,同时还保留着很强的扩展性. JMeter可以用来测试诸如:静态文件,Java Ser ...
- Jemter 压测基础(一)——基本概念、JMeter安装使用、分布式测试、导出测试结果、编写测试报告
Jemter 压测基础(一) 1.压力测试的基本概念: 1.吞吐率(Requestspersecond) 服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请 ...
- Jmeter中一些概念的理解——90%响应时间、事务、并发
一.90%响应时间(参考虫师博客) 90%Line 一组数由小到大进行排列,找到他的第90%个数(假如是12),那么这个数组中有90%的数将小于等于12 . 用在性能测试的响应时间,也就是90%请求 ...
- 学习使用Jmeter做压力測试(一)--压力測试基本概念
一.性能測试的概念 性能測试是通过自己主动化的測试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行測试.负载測试和压力測试都属于性能測试,两者能够结合进行. 通过负载測试, ...
- 【转】Jmeter基础之——jmeter基础概念
JMeter 介绍:一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. 从性能工具的原理划分: Jmeter工具和其他性能工具在原理上完全一致,工具包含 ...
随机推荐
- 使用JAVA导出EXCEL表格(POI)
一.POI概述 Jakarta POI 是一套用于访问微软格式文档的Java API.POI提供API给Java程序对Microsoft Office格式档案读和写的功能.在许多企业办公系统中,经常会 ...
- TC SRM556 OldBridges
题意 有一个包含\(n\)个点的图,点的编号分别为\(0\)到\(n-1\).有若干双向边连接两个点,有些边可以经过无限次,有些边最多只能经过(双向)两次.Alice计划从\(a1\)到\(a2\)进 ...
- Scout YYF I POJ - 3744【矩阵乘法优化求概率】
题意: 一条路上有 $n$ 个地雷,YYF 从位置 $1$ 出发,走一步的概率为 $p$,走两步的概率是 $(1-p)$.求 YYF 能顺利通过这条路的概率. 数据范围: $1\leq n \leq ...
- 前端-2019 history 与 location
HTML5 API解析之Window.history历史记录 1.简介 window.history是用来保存用户在一个会话期间的网站访问记录,并提供相应的方法进行追溯.其对应的成员如下: 方法:ba ...
- JavaSE学习笔记(7)---数组
JavaSE学习笔记(7)---数组 1.什么是数组 数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个元素,每个元素可以通过一个 ...
- tensorflow张量限幅
本篇内容有clip_by_value.clip_by_norm.gradient clipping 1.tf.clip_by_value a = tf.range(10) print(a) # if ...
- C#的隐式类型、匿名类型、自动属性、初始化器
1.隐式类型 1)源起 在隐式类型出现之前,我们声明一个变量时,需要为它指定相应的类型,甚至在foreach一个集合的时候,也要为遍历的集合元素,指定变量的类型,隐式类型出现后,程序员就不用再做这个工 ...
- 单向链表的简单Java实现-sunziren
写在前面,csdn的那篇同名博客就是我写的,我把它现在在这边重新发布,因为我实在不想用csdn了,那边的广告太多了,还有就是那个恶心人的“阅读更多”按钮,惹不起我躲得起. 最近面试的过程中,发现有的公 ...
- linux 文件系统管理三部曲之二:创建文件系统
创建文件系统的含义:就是格式化一个硬盘分区,不同的格式化方式,就是创建了不同的文件系统. 格式化: 低级格式化:划分分区前执行,主要是划分硬盘的磁道等. 高级格式化:划分分区后执行,创建文件系统 创建 ...
- Time series data mining
from here 论文Timeseries data mining(2012)中提出:时间序列数据挖掘包括7个基本任务和3个基础问题: 7 tasks: query by content clust ...