该文档写于 2017年上半年并落地了公司两个接口自动化项目,记得当时使用的好像还是 3.2版本,目前最新版本也已经更新到了 5.4.1 版本(Java8),放出来吧…纯当是纪念了。
文章目录
Jmeter基础知识与安装
- Jmeter是开源的性能测试工具
[但我更觉得ta适合做接口的自动化测试]
- 纯Java语言编写,可移植性好,解压即用,比Loadrunner轻量
- 支持的协议也越来越多,但报表统计方面确实不如Loadrunner好用
- Jmeter原理就是模拟真实用户的请求,发送给服务器端
- 官网:http://jmeter.apache.org/
附:需对HTTP请求和响应的常识以及状态码等有一定的了解
Jmeter安装
- 前置条件:安装好JDK并配置好环境变量,可自行百度或google
- 官网下载Jmeter:http://jmeter.apache.org/download_jmeter.cgi
- 启动:解压jmeter,到bin目录下双击jmeter.bat
Jmeter目录结构
bin目录是可执行文件。
jmeter的log在jmeter.log中查看。
jmeter.properties是修改默认属性的文件。比如,属性log_lever.JMeter可以设置改变 日志详细度。默认是info,可改为debug。
dosc下是jmeter的java dosc
printable_docs的usermanual子目录下是jmeter用户手册,其中component_reference.html是最常用的核心元件帮助手册
Jmetre 对比 Loadrunner
对比项 | Jmetre | Loadrunner |
---|---|---|
安装 | 简单,下载解压即用 | 复杂,安装包很大对硬件有一定要求,安装时长大于1小时 |
录制/回放模式 | 支持 | 支持 |
支持的测试协议 | 较少,但支持用户自行扩展 | 较多,不支持用户自行扩展 |
分布式大规模压力测试 | 支持 | 支持 |
IP欺骗 | 不支持 | 支持 |
图形报表 | 支持(较弱,但可扩展) | 支持(很强,图形报表一直是商业工具的强项) |
测试的逻辑控制 | 支持 | 支持 |
服务器硬件资源监控 | 支持 | 支持 |
功能测试 | 支持 | 不支持 |
Jmeter常用组件和概念介绍
- 测试计划:是根、是老大。所有的内容都是基于这个计划,都需要在这个测试计划 下进行。
- 线程组:设置jmeter按照什么样的场景运行的地方,其中的线程,大家可以理解为Loadrunner中的虚 拟用户数 setup
- thread group:可用于执行预测试操作。类似Loadrunner中的init,可理解为 初始化。 teardown
- thread group:可用于测试后动作。类似Loadrunner的end,其实就是测试
- 结束完成之后的清理性动作。(该动作不是必须性的,场景中能用的可以使用;用 不到,不使用也没关系)
- sample:这里是创建各种请求类型的,用来模拟用户的请求。ta是在线程组下面创建 的,如果没有创建线程组,是看不到的。
- 逻辑控制器:类似编程语言里的if、for这些东东,后面会专门讲到。
- 定时器:用于设置操作之间的等待时间,类似Loadrunner中的思考时间。但不同的 是,Jmeter里的定时器,一旦设置,是对所有请求都生效的。
- 前置处理器:用于在实际的请求发出之前对即将发出的请求进行特殊处理,比如参 数化之类的。
- 后置处理器:对发出请求后得到的服务器响应进行处理,比如关联。
- 断言:就是Loadrunner中的检查点,用于检查测试中得到的相应数据等是否符合 预期。
- 监听器:对测试结果数据进行处理和可视化展示。如查看结果树、聚合报告。
基本概念
1、参数化
2、集合点
3、断言/检查点
4、关联
Jmeter组件作用域和执行顺序介绍
组件作用域
Jmeter并不像Loadrunner那样容易上手,ta里面杂乱的元件和不知道怎么弄的树形结构足以让很多初学者放弃学习热情了。
同时我们也发现里面有很多的元件,其实我们没必要把每个都弄的那么清楚,先把最重要的常用的吃透、搞清楚即可。后续碰到了再学习,这样学习成本会下降很多,同时也 不至于太受打击。
接下来,我们就看看元件及他们的执行顺序如何。
- 配置元件(config elements)会影响其作用范围内的所有元件。
- 前置处理程序(Per-processors)在其作用范围内的每一个sampler元件之前执行
- 定时器(timers)对其作用范围内的没一个sampler有效
- 后置处理程序(Post-processors)在其作用范围内的每一个sampler元件之后执行。
- 断言(Assertions)对其作用范围内的每一个sampler元件执行后的结果执行校验。
- 监听器(Listeners)收集其作用范围的每一个sampler元件的信息并呈现
- sampler元件不和其他元件相互作用,因此不存在作用域的问题。
作用域示例1 [参照下图]
- http1、2、3无作用域的概念
- 循环控制器:http2、3、图形结果
- 图形结果:http2、3
- 聚合报告:http1、2、3
作用域示例1 [参照下图]
- 固定定时器:http1
- 循环控制器:http2、3、图形结果、随机控制器
- 图形结果:http2、e
- 响应断言:jdbc
- 聚合报告:所有
总结:记住一句话,从各个元件的层次结构判断判断每个元件的作用域。
执行顺序
- 配置元件
- 前置
- 定时器
- sampler
- 后置
- 断言
- 监听器
如果在同一个作用域范围内有多个同一类型的元件,则这些元件按照他们在测试计 划中的上下顺序一次执行。
最新版本Jmeter插件的安装方法
不知道现在的插件安装方式是不是还是这样,哪位同学如果知道的话,还请不吝赐教。
在jmeter3.0之前的版本中,插件的安装方法需要自行去找相应的jar包然后放到对应的目录中。
但是在jmeter3.0版本之后的,插件的安装方法变了,大致步骤为:
1、https://jmeter-plugins.org/downloads/all/ 下载plugins manager ,放到jmeter的lib下的ext目录中
2、重启jmeter才可以生效。
3、重启jmeter后,选择菜单“选项”>“plugins manager”>之后在此对话框中进行 选择安装,要比之前的操作简单很多,所有可用插件均可在这里找到。
PS:有童鞋说看不懂英文......这世界上有个软件叫有道词典......
Jmeter启动问题及使用切入点
JDK版本问题
Jmetre 2.X版本 对应 JDK 1.6.XXXX 与 JDK 1.7.XXXX
Jmetre 3.X版本 对应 JDK 1.8.XXXX
JVM问题
参考下图
使用的切入点
问:Jmeter在什么情况下使用?
答:企业中真正应用场景比较多的是接口测试,既可以做接口的功能测试,也可以做接口的性能测试。