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%的数将小于等于1
 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概念的更多相关文章

  1. [Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)

    [Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)开学典礼](https://ke.qq.com/course/453802)**测试交流群:549376944**0 ...

  2. (转)学习使用Jmeter做压力测试(一)--压力测试基本概念

    一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测试,两者可以结合进行. 通过负载测试,确定在各种工作负载下 ...

  3. Jmeter基础之---jmeter基础概念

    Jmeter基础之---jmeter基础概念 JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. JMeter 介绍: 一个非常优 ...

  4. JMeter基础概念

    JMeter 介绍:一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. 从性能工具的原理划分: Jmeter工具和其他性能工具在原理上完全一致,工具包含 ...

  5. JMeter入门(01)概念和样例

    一.概念 JMeter 是一款专门用于功能测试和压力测试的轻量级测试开发平台,实现了许多和互联网相关的网络测试组件,同时还保留着很强的扩展性. JMeter可以用来测试诸如:静态文件,Java Ser ...

  6. Jemter 压测基础(一)——基本概念、JMeter安装使用、分布式测试、导出测试结果、编写测试报告

    Jemter   压测基础(一) 1.压力测试的基本概念: 1.吞吐率(Requestspersecond) 服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请 ...

  7. Jmeter中一些概念的理解——90%响应时间、事务、并发

    一.90%响应时间(参考虫师博客) 90%Line  一组数由小到大进行排列,找到他的第90%个数(假如是12),那么这个数组中有90%的数将小于等于12 . 用在性能测试的响应时间,也就是90%请求 ...

  8. 学习使用Jmeter做压力測试(一)--压力測试基本概念

    一.性能測试的概念         性能測试是通过自己主动化的測试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行測试.负载測试和压力測试都属于性能測试,两者能够结合进行. 通过负载測试, ...

  9. 【转】Jmeter基础之——jmeter基础概念

    JMeter 介绍:一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. 从性能工具的原理划分: Jmeter工具和其他性能工具在原理上完全一致,工具包含 ...

随机推荐

  1. [转载]花了半个月,终于把Python库全部整理出来了,非常全面

    库名称简介 Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable 主要用于在终端或浏览器端构 ...

  2. 已发布的WEB项目,如何挂在服务器或者本机的IIS下

    第一步:打开IIS,在打开的IIS中,右击 “Default Web Site”,在弹出对话框中选择“新增应用程式”,参照如下图,设置相应参数. 第二步:在已经发布的项目文件系统添加在站点下后,点击项 ...

  3. JavaScript自学笔记(3)--- 用JS来实现网页浮窗

    最近做个小项目,给网页加个浮窗,考验了基础的css,js技术,还是蛮有意思的,代码如下(部分代码来源于引用,见底部) <!DOCTYPE html> <html> <he ...

  4. cisco 路由器的操作系统基础命令集

    路由器和交换机里都有操作系统,cisco的操作系统叫ios. 怪不得路由器贵,原来也是带操作系统的机器啊,以前真是小白. ios里的几种模式 1,>:用户模式:啥也干不了. 2,#:特权模式:用 ...

  5. 如何在CentOS上安装Tensorflow的gpu版本?

    系统配置 系统版本: Centos7.6 语言: Python3.5(anaconda3 4.2) 框架: Tensorflow 安装依赖 sudo yum install openjdk-8-jdk ...

  6. ubuntu--- tracker/libdeepsort.so 找不到cv报错

    一.刚开始解决尝试:因为“删掉lib下的libdeepsort.so报错”,原先以为是 libdeepsort.so 需要拷贝到 /lib路径下的问题,可是因为后来的工程有的好使,又的不好使了.''' ...

  7. 洛谷题解 P1744 【采购特价商品】

    原题传送门 题目描述 中山路店山店海,成了购物狂爱与愁大神的"不归之路".中山路上有n(n<=100)家店,每家店的坐标均在-10000~10000之间.其中的m家店之间有通 ...

  8. JS 自动关闭页面

    <script language=javascript> this.window.opener = null; window.close(); </script>

  9. gitlab持续集成,自动部署

    写这篇文章的目的是,实现提交代码到gitlab上的一个项目时,自动打包,并将包发布到另一台服务器上,重启tomat.如有问题,可以联系本人QQ:409838567 gitlab-ci,是基于gitla ...

  10. mysql如何让两个字段数据都不能重复?

    目录 场景 任务(需求) 行动(解决方案) 方案1:从代码层面解决(正确方案) 方案2:设置成两个唯一索引(正确方案) 方案3:删掉中间表,把从表的主键作为主表的外键,并将外键设置成唯一索引(正确方案 ...