JMeter介绍
JMeter是开源的性能测试工具和接口测试工具,工作原理和Loadrunner一样:作为浏览器和WebServer之间的网关,捕获Browser请求和WebServer响应,然后通过多线程模拟用户访问场景,监控系统资源的变化情况从而得到性能的情况。JMeter和Loadrunner相比,不存在质的差异,因其成本的低廉性而被广泛使用。
和Loadrunner等商业工具相比,优点是:成本低廉,灵活性和可扩展性高(加载插件,开放API,ANT自动运行,支持分布式),学习资源和渠道多(有较多学习资源和论坛讨论)。缺点是:对从业人员的要求更高,需要有良好的编程能力,英文能力和分析解决问题的能力。除了易用性,Loadrunner的支持协议更广,图形报表更强,并且支持IP欺骗。
Jmeter主要特点
- 多协议支持
- 可通过录制回放实现
- 100%纯Java应用程序,具备高可移植性
- 高可扩展(开源代码,多种插件)。
测试元件
- 测试计划:测试脚本的根节点,设置整个脚本的基础配置,比如用户定义变量。
- 线程组:虚拟用户池。
- 逻辑控制器:控制采样器执行逻辑。
- 采样器:请求的基本单元,每一种采样器都有多种参数可供设置,用于向服务器发出特定请求并在超时前等待服务器响应。测试人员还可以在采样器的级联节点添加多个配置原件来定制采样器,如果不添加,则采用默认配置。采样器可以是逻辑控制器的子节点,也可以和逻辑控制器处于同一层级。
- 断言:采样器/逻辑控制器的子节点,验证服务器返回结果是否满足需求,断言的结果可在监听器中查看。如果父节点是逻辑控制器,断言对父节点下的所有采样器都生效。
- 监听器:收集和展示测试结果,有多种图形展示,监听器可以在任何地方添加,仅收集相同或者更低级别测试元件的数据。
- 配置元件:设置脚本配置信息,有作用域并且子配置元件的优先级高于父配置元件,作用域规则和断言一样。
- 定时器:作为采样器或者是逻辑控制器的子项,可让作用域内每一个采样器都在执行前等待一个固定时长,多个定时器的时长会叠加共同影响。
- 前置处理器&后置处理器: 对执行范围内的采样器,在执行前和执行后做相应的处理
- 工作台:保存暂时不需要使用的测试元素
测试元件执行顺序规则
- 配置元件
- 前置处理器
- 定时器
- 采样器
- 后置处理器
- 断言
- 监听器
逻辑控制器和采样器按照在测试树中出现的顺序执行,其他测试元件依据自身的作用域范围来执行,同一范围内出现,则按先后顺序执行。
线程组配置
ramp-up period: JMeter达到最大线程数需要多长时间.eg: 如果线程数设置为10,ramp-up period设置为20就意味着每2s启动一个线程,20s内启动所有线程并让他们运转起来。如果设定的太短,测试的初始阶段会给予服务器过大的压力;设 定的太长,第一个线程执行完毕的时候最后一个线程可能还没有启动,如何找到合适的Ramp-up? 建议初学者先设置ramp-up=总线程数,后续在根据情况适当调整。如果ramp-up不填,则默认为0,意味着立即启动所有线程。
循环次数和调度:用户亦可配置调度器,启动时间/结束时间搭配使用,JMeter会在每一次循环结束以后查看是否到达结束时间,如果没有,则启动下一轮循环。延迟时间和持续时间搭配使用,当这两个选项启用后会自动的忽略启动时间/结束时间。
Delay Thread creation until needed
JMeter变量:参数化
如何参数化
JMeter属性
全局的属性和变量
高级使用
- 安装目录层级
- 配置修改
- ANT自动运行
- 插件扩展
- API定制