[JM_01]JMeter之功能模块组成及其作用
2018-07-24 本文已影响172人
Fighting_001
目录结构
一、JMeter简介
1.JMeter概述
2.JMeter工作原理
3.JMeter作用
4.JMeter与LR的区别
二、JMeter安装配置
三、JMeter文件的目录结构
四、JMeter功能概要
1.JMeter工具组成模块
2.Threads(Users)-线程(用户)
3.Test Fragment(测试片段)
4.线程组的8类可执行元件
五、JMeter元件的作用域和执行顺序
1.元件的作用域
2.元件的执行顺序
一、JMeter简介
1.JMeter概述
JMeter:Apache JMeter是Apache组织的开源项目,纯Java应用,用于压力测试、性能测试、接口测试...
2.JMeter工作原理
JMeter用于模拟成千上万的用户向服务器发送请求,检测响应返回的情况,如响应时间。
①JMeter每发送1个请求,相当于是1个线程(Thread),模拟1个虚拟用户;②JMeter每发1次请求,就到服务器采样1次,对应1个Sampler(采样)。
3.JMeter作用
1)用于对静态和动态资源的性能测试
2)分析不同压力条件下的总体性能情况
3)提供图形化的界面,分析性能指标or在高负载情况下测试服务器、脚本、对象
动态资源:文件、Servlet、Perl脚本、Java对象、数据库和查询、FTP服务器...
4.Jmeter与LR的区别
LoadRunner | JMeter | |
---|---|---|
安装卸载 | 操作比较麻烦,软件体积大 | 操作简便,软件体积小 |
脚本录制 | √ | √ |
参数化 | √ | √ |
集合点 | √ | √ |
检查点 | √ | √ |
关联 | √ | √ |
多协议 | √ | √ |
IP欺骗 | √ | × |
多线程 | √ | √ |
报告生成与导出 | √ | √ |
测试成本 | 商业软件,成本高 | 开源软件,测试成本低 |
二、Jmeter安装配置
1.安装配置JDK
需要留意JDK版本和JMeter版本依赖性,如:JMeter 4.0需要Java 8以上版本的支持
2.JMeter下载传送门:
http://mirror.bit.edu.cn/apache/jmeter/binaries/
三、JMeter文件的目录结构
JMeter文件目录- bin:可执行的文件目录
jmeter.bat: Windows的启动文件
jmeter.log: 日志文件
jmeter.sh: Linux的启动文件
jmeter.properties: 系统配置文件
jmeter-server.bat: Windows分布式测试要用到的服务器配置
jmeter-server: Linux分布式测试要用到的服务器配置
- docs:接口文档目录
- extras:扩展插件目录
- lib:所用到的插件目录;里面全是jar包,JMeter会自动在JMETER_HOME/lib和ext目录下寻找需要的类
- licenses:JMeter证书目录
-
printable_docs:用户使用手册
四、JMeter功能概要
1.JMeter工具组成模块
JMeter模块 | 作用 | 类比LR模块 | |
---|---|---|---|
1 | 资源生成器 | 用于生产测试过程中服务器、负载机的资源代码 | VuGen |
2 | 用户运行器 | 通常是一个脚本运行引擎,根据脚本要求模拟指定的用户行为 | Controller |
3 | 报表生成器 | 根据测试中实时的数据生成报表,提供可视化的数据显示方式 | Analysis |
4 | 负载发生器 | 用于产生负载,通常以多线程or多进程的方式模拟用户行为 | Generators |
5 | Test Plan (测试计划) |
用来描述一个性能测试,包含于本次性能测试所有相关的功能。 (即本次性能测试的所有内容是基于一个计划展开) |
测试场景 |
2.Threads(Users)-线程(用户)
Threads(Users)操作选项 | 作用 | 类比LR操作 | |
---|---|---|---|
1 | Thread Group | 添加运行的线程。相当于是一个虚拟用户组,线程组中的米格线程都可以理解为一个虚拟用户。 | action() |
2 | setUp Thread Group | 一种特殊类型的ThreadGroup,可用于执行预测试操作,这些类型的线程执行测试前会执行定期的线程组 | init() |
3 | tearDown Thread Group | 一种特殊类型的ThreadGroup,可用于执行测试后操作,这些类型的线程执行测试结束后会执行定期的线程组 | end() |
3.Test Fragment(测试片段)
Test Fragment测试片段:是控制器上的一个特殊的线程组,其在测试树上与线程组处于一个层级。
测试片段 VS 线程组:测试片段通常不被执行,除非作为一个模块控制or被控制所引用时才会被执行。
4.线程组的8类可执行元件
元件名称 | 作用 | |
---|---|---|
1 | 取样器(Sampler) | 性能测试中向服务器发送请求,记录响应信息和响应时间的最小单元。Jmeter原生支持多种不同的Sampler,可根据设置的参数想服务器发送不同类型的请求(HTTP、FTP、TCP、JDBC…) |
2 | 逻辑控制器(Logic Controller) | 包括两类元件:1)一类用于控制Test Plan中Sampler节点发送请求的逻辑顺序的控制器(如:If、Switch、Runtime、Loop-控制器);2)另一类用来控制Sampler节点(如:事务、吞吐量-控制器) |
3 | 前置处理器(Per Processors) | 用于实际的请求发出之前,对即将发出的请求进行特殊的处理。如:HTTP URL重写修复符,实现对URL重写。当URL中有SessionID信息时,可通过该处理器填充发出请求的实际SessionID |
4 | 后置处理器(Post Processors) | 用于对Sampler发出请求后,返回的服务器响应进行处理。一般用来提取响应中特定的数据。类似于LR中的“关联” |
5 | 断言(Assertions) | 用于检查测试中得到的相应数据是否符合预期,一般通过设置检查点,用以保证性能测试过程中的数据交互是否与预期一致 |
6 | 定时器(Timer) | 用于操作之间设置等待时间,等待时间是虚拟测试中常用的控制客户端QPS的手段。类似于LR中的“思考时间” |
7 | 配置元件(Config Element) | 用于提供对静态数据配置的支持。如:CSV Data Set Config可将本地数据文件形成数据池(Data Pool) |
8 | 监听器(Listener) | 用来对测试结果数据进行处理和可视化展示的一些列元件。经常用到的元件(图形结果、查看结果树、聚合报告…) PS:该监听器非监听系统资源的元件 |
五、JMeter元件的作用域和执行顺序
Test Plan树形结构1.元件的作用域
在JMeter中,元件的作用域是依靠Test Plan的树形结构中元件的父子关系来确定的,作用域的原则:
- 取样器(Sampler): 不和其他元件相互作用,不存在作用域
- 逻辑控制器(Logic Controller): 只对其子节点中的取样器和逻辑控制器产生作用
- 其他6类元件:
1)若父节点是取样器,则该元件对其父子节点起作用
2)若父节点不是取样器,则该元件对其父节点下的所有节点(子节点、子节点的子节点)起作用
2.元件的执行顺序
- 配置元件(Config Element)
- 前置处理器(Per-Processors)
- 定时器(Timers)
- 取样器(Smapler)
- 后置处理器(Post-Processors)
- 断言(Assertions)
- 监听器(Listeners)
PS:
1)前置处理器、后置处理器、断言等元件对取样器作用,若其作用域内无取样器,则不会被执行
2)若在同一作用域范围内有多个同一类型的元件,则他们将会按照自上而下的顺序执行
3)Test Plan和Thread Group不属于可执行元件