一、简介

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。

二、使用教程

1.TestPlan测试计划

TestPlan是JMeter脚本的根节点,包含了JMeter脚本和场景执行的所有动作。

jmeter 继承AbstractJavaSamplerClient jmeter implementation_作用域

2.Threads(User)线程组

Threads(User)就是Thread Group线程组,是一组执行相同测试案例操作的用户(线程)。

jmeter 继承AbstractJavaSamplerClient jmeter implementation_Apache_02

3.ConfigElement配置元件

ConfigElement配置元件用来配置JMeter的各种参数。

jmeter 继承AbstractJavaSamplerClient jmeter implementation_java_03

4.Listener监听器

Listener监听器展示Sampler取样器的结果,我们可以通过Listener了解测试场景的执行情况。

jmeter 继承AbstractJavaSamplerClient jmeter implementation_java_04

5.Timer定时器

定时器是在它作用域内的所有取样器执行之前执行生效。

定时器最主要的作用就是用来控制测试场景的吞吐量大小。

jmeter 继承AbstractJavaSamplerClient jmeter implementation_作用域_05

6.Pre Processors前置处理器

Pre Processors前置处理器是在Sampler取样器前执行,可以用来执行参数定义,交易报文拼接等。

前置处理器会在它作用域范围内的所有Sampler执行前执行。

jmeter 继承AbstractJavaSamplerClient jmeter implementation_作用域_06

7.Post Processors后置处理器

Post Processors后置处理器在它作用域下的所有的取样器执行结束执行。

jmeter 继承AbstractJavaSamplerClient jmeter implementation_测试工具_07

8.Assertion断言

Assertion断言在它作用域下的所有的Sampler取样器之后执行(断言也在后置处理器之后执行)

jmeter 继承AbstractJavaSamplerClient jmeter implementation_java_08

9.TestFregment测试片段

TestFregment测试片段的作用是连接Include Controller和Module Controller。

jmeter 继承AbstractJavaSamplerClient jmeter implementation_作用域_09

10.Logic Controller逻辑控制器

Logic Controller逻辑控制器用来控制Sampler取样器的执行顺序。

jmeter 继承AbstractJavaSamplerClient jmeter implementation_作用域_10

三、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 简单介绍

jmeter 继承AbstractJavaSamplerClient jmeter implementation_作用域_11

1.jmeter性能测试demo

jmeter 继承AbstractJavaSamplerClient jmeter implementation_作用域_12


该文件可全局设置变量,供测试用例使用

2.参数化请求前的环境处理

jmeter 继承AbstractJavaSamplerClient jmeter implementation_java_13


该文件可用于动态改变变量值

3.HTTP信息头管理器

jmeter 继承AbstractJavaSamplerClient jmeter implementation_作用域_14


该文件可用于全局设置http请求头

4.http请求应返回head.errcode:0

jmeter 继承AbstractJavaSamplerClient jmeter implementation_线程组_15


该文件用于断言

5.测试接口demo

jmeter 继承AbstractJavaSamplerClient jmeter implementation_Apache_16


该文件用于设置线程组

核心参数介绍

(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.仅一次控制器

jmeter 继承AbstractJavaSamplerClient jmeter implementation_测试工具_17


该控制器下的接口一个线程只会执行一次

7.需测试接口

jmeter 继承AbstractJavaSamplerClient jmeter implementation_Apache_18


该文件是测试的接口

8.JSON Extractor

jmeter 继承AbstractJavaSamplerClient jmeter implementation_线程组_19


对于请求1返回的结果,处理以后作为请求2的参数,JMeter提供了正则表达式提取器

核心参数介绍

  • Variable names : 名称
  • JSONPath Expression:JSON表达式
  • Match Numbers:匹配哪个,可为空即默认第一个
  • Default Value:未取到值的时候默认值
9.BeanShell PreProcessor

jmeter 继承AbstractJavaSamplerClient jmeter implementation_Apache_20


该文件主要用于请求前需要处理的一些事项

10.jp@gc - Response Times Over Time

jmeter 继承AbstractJavaSamplerClient jmeter implementation_作用域_21


可视化监控响应时间

11.jp@gc - Transactions per Second

jmeter 继承AbstractJavaSamplerClient jmeter implementation_线程组_22


可视化监控并发量