一、简介
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。
二、使用教程
1.TestPlan测试计划
TestPlan是JMeter脚本的根节点,包含了JMeter脚本和场景执行的所有动作。
2.Threads(User)线程组
Threads(User)就是Thread Group线程组,是一组执行相同测试案例操作的用户(线程)。
3.ConfigElement配置元件
ConfigElement配置元件用来配置JMeter的各种参数。
4.Listener监听器
Listener监听器展示Sampler取样器的结果,我们可以通过Listener了解测试场景的执行情况。
5.Timer定时器
定时器是在它作用域内的所有取样器执行之前执行生效。
定时器最主要的作用就是用来控制测试场景的吞吐量大小。
6.Pre Processors前置处理器
Pre Processors前置处理器是在Sampler取样器前执行,可以用来执行参数定义,交易报文拼接等。
前置处理器会在它作用域范围内的所有Sampler执行前执行。
7.Post Processors后置处理器
Post Processors后置处理器在它作用域下的所有的取样器执行结束执行。
8.Assertion断言
Assertion断言在它作用域下的所有的Sampler取样器之后执行(断言也在后置处理器之后执行)
9.TestFregment测试片段
TestFregment测试片段的作用是连接Include Controller和Module Controller。
10.Logic Controller逻辑控制器
Logic Controller逻辑控制器用来控制Sampler取样器的执行顺序。
三、DEMO教程
性能测试可视化监控插件安装教程
https://blog.51cto.com/ydhome/1861956
demo文件【jmeter性能测试demo.jmx】地址(注:demo文件主要用于参考如何通过jmeter创建目录结构及文件,配置等)
https://github.com/philzq/zzq/tree/master/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95 简单介绍
1.jmeter性能测试demo
该文件可全局设置变量,供测试用例使用
2.参数化请求前的环境处理
该文件可用于动态改变变量值
3.HTTP信息头管理器
该文件可用于全局设置http请求头
4.http请求应返回head.errcode:0
该文件用于断言
5.测试接口demo
该文件用于设置线程组
核心参数介绍
(1)取样器错误后要执行的动作(Action to be taken after a Sample error):
- 继续(Continue):忽略错误,继续执行
- 启动下一进程循环(Start Next Thread Loop): 忽略错误,线程当前循环终止,执行下一个循环。
- 停止线程(Stop Thread):当前线程停止执行,不影响其他线程正常执行。
- 停止测试(Stop Test):整个测试会在所有当前正在执行的线程执行完毕后停止。
- 立即停止测试(Stop test now):整个测试会立即停止执行,当前正在执行的取样器可能会被中断。
(2)线程属性(Thread Praperties):
- 线程数(Number of Thread
(users)):线程数也就是并发数,每个线程将会完全独立的运行测试计划,互不干扰。多个线程用于模仿对服务器的并发访问。 - Rum-up时间(秒):加速期时间,在该设置时间内启动所有线程
- 循环次数(Loop Count):该项设置线程组在结束前每个线程循环的次数。可以勾选永远,如果未设置运行时间,需要手动停止
- 延迟线程创建直到需要(Delay Thread creation until
needed):默认情况下,测试开始的时候,所有线程就被创建完了。如果勾选了此选项,那么线程只会在合适的需要用到的时候创建。 - 调度器(Scheduler):可以更灵活的控制线程组执行的时间
(3)调度器设置(Scheduler Configuration):
- 持续时间(秒):如果选择了调度程序复选框,控制测试执行的持续时间,以秒为单位。
- 启动延迟(秒):如果选择了调度程序复选框,控制测试在多久后启动执行,以秒为单位。
6.仅一次控制器
该控制器下的接口一个线程只会执行一次
7.需测试接口
该文件是测试的接口
8.JSON Extractor
对于请求1返回的结果,处理以后作为请求2的参数,JMeter提供了正则表达式提取器
核心参数介绍
- Variable names : 名称
- JSONPath Expression:JSON表达式
- Match Numbers:匹配哪个,可为空即默认第一个
- Default Value:未取到值的时候默认值
9.BeanShell PreProcessor
该文件主要用于请求前需要处理的一些事项
10.jp@gc - Response Times Over Time
可视化监控响应时间
11.jp@gc - Transactions per Second
可视化监控并发量