简介-百度百科
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言
使用的好处
- 开源免费,基于Java编写,可集成到其他系统可拓展各个功能插件
- 支持接口测试,压力测试等多种功能,支持录制回放(badboy),入门简单
- 相较于自己编写框架活其他开源工具,有较为完善的UI界面,便于接口调试
安装
- 下载选择自己对应的系统版本
- 安装JDK,配置环境变量(jmeter是运行在JDK环境下的)
- 将下载Jmeter文件解压,打开/bin/jmeter.bat
以管理员身份运行
image.png- Jmeter的目录结构
/bin 目录(常用文件介绍)
examples:目录下包含Jmeter使用实例
ApacheJMeter.jar:JMeter源码包
jmeter.bat:windows下启动文件
jmeter.sh:Linux下启动文件
jmeter.log:Jmeter运行日志文件
jmeter.properties:Jmeter配置文件
jmeter-server.bat:windows下启动负载生成器服务文件
jmeter-server:Linux下启动负载生成器文件
/docs目录——Jmeter帮助文档
/extras目录——提供了对Ant的支持文件,可也用于持续集成
/lib目录——存放Jmeter依赖的jar包,同时安装插件也放于此目录
/licenses目录——软件许可文件,不用管
/printable_docs目录——Jmeter用户手册
操作步骤
- 测试计划(test plan)
jmeter的测试计划,实际是一个或者一组测试用例。可以将线程组(thread group)理解为一个测试用例。在一个测试计划中可以有多个测试线程组。 - 工作台(work bench)
jmeter中,可以在工作台中配置http代理服务器,然后将录制的脚本存入工作台中,进行初步编辑,然后将脚本复制\粘贴到测试计划中。
我们第一步要在测试计划中,添加一个线程组
我们通常添加运行的线程。通俗的讲一个线程组,,可以看做一个虚拟用户组,
线程组中的每个线程都可以理解为一个虚拟用户。
线程组中包含的线程数量在测试执行过程中是不会发生改变的
image.png
- 对线程组进行添加
JMeter有两种类型的控制器:取样器(sample)和逻辑控制器(Logic Controller),用这些原件来驱动处理一个测试。
取样器(Sampler)
image.png取样器(Sample)主要就是向服务器发送请求,记录响应信息,
记录响应时间的最小单元,JMeter 原生支持多种不同的sampler ,
如 HTTP Request Sampler 、 FTP Request Sample 、
TCP Request Sample 、JDBC Request Sampler 等,
每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。
逻辑控制器(Logic Controller)
image.png逻辑控制器,包括两类无件,
一类是用于控制test plan 中 sampler 节点发送请求的逻辑顺序的控制器,
常用的有 如果(If)控制器 、switch Controller 、Runtime Controller、循环控制器等。
另一类是用来组织可控制 sampler 来节点的,如 事务控制器、吞吐量控制器
配置元件(Config Element)
image.png配置元件(config element)用于提供对静态数据配置的支持。
CSV Data Set config 可以将本地数据文件形成数据池(Data Pool),
而对应于HTTP Request Sampler和 TCP Request Sampler等类型的配制无件则可以修改Sampler的默认数据。
(例如,HTTP Cookie Manager 可以用于对 HTTP Request Sampler 的cookie 进行管理)
定时器(Timer)
image.png定时器(Timer)用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手端。
类似于LoadRunner里面的“思考时间”。JMeter 定义了Bean Shell Timer、
Constant Throughput Timer、固定定时器等不同类型的Timer。
前置处理器(Per Processors)
image.png用于在实际的请求发出之前对即将发出的请求进行特殊处理。
例如,HTTP URL重写修复符则可以实现URL重写,
当RUL中有sessionID 一类的session信息时,
可以通过该处理器填充发出请求的实际的sessionID
后置处理器(Post Processors)
image.png用于对Sampler 发出请求后得到的服务器响应进行处理。
一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。
例如,XPath Extractor 则可以用于提取响应数据中通过给定XPath 值获得的数据
断言(Assertions)
image.png断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,
用以保证性能测试过程中的数据交互是否与预期一致。
监听器(Listener)
image.png它是用来对测试结果数据进行处理和可视化展示的一系列元件。
图行结果、查看结果树、聚合报告。都是我们经常用到的元件
网友评论