JMeter总结
JMeter组件
JMeter执行原理
JMeter通过线程组来驱动多个(也可以理解为LR工具里面的虚拟用户)运行测试脚本对目标服务器发起大量的网络请求,在每个客户端上可以运行多个线程组,也就是说一个测试计划里面可以包含N个线程组。
测试计划
在JMeter的测试计划中,把测试计划可以理解为是一个工程的目录,也就是说每一个脚本都可以说是一个测试计划,在一个测试计划里面包含了很多的线程组来进行执行,测试计划也是JMeter脚本的根节点。
线程组
在一个测试计划里可以新增线程组,线程组可以把它理解:模拟虚拟用户的发起点,在线程组里面可以设置线程数,运行时间以及运行次数。新增线程组的步骤为:右键测试计划,在添加中选择线程(用户)中选择线程组,具体如下:
在一个线程组里面,可以增加很多的取样器,也可以把线程组理解为一个测试套件,在这个测试套件里面,每个取样器都是独立的测试用例,在一本线程组里面可以包含很多的测试用例
场景设置
在JMeter的测试工具中,依据业务的形态来设置它的目录结果,但是设置性能测试的场景,主要是在线程组中来进行设置。JMeter的线程组可以理解为是建立了一个线程池,在执行的过程中处理线程组里面的各个业务逻辑,线程组的信息具体如下:
取样器错误后要执行的动作
这部分可以理解为当客户端向服务端发送请求后,以及发送请求的过程中出错后的异常处理方式
继续
如果有一个请求错误,其他的请求会继续,不会因为有一个请求错误的导致其他请求终止。
启动下一个进程循环
如果请求出现问题,同一脚本中的其他请求都不再执行,直接执行下一个进程的信息。如登录后下一个请求是查看个人主页,但是因为登陆出错,下个接口查看个人主页就不会执行
停止线程
停止线程值的是如果请求失败,就停止当前线程执行,不再继续执行,如果线程数很多的,那么导致的结果是停止的线程就会很多,处于真正运行的线程会很多,最后导致服务器的负载不够,一般不建议勾选改进项
停止测试
如果请求失败,那么停止所有的线程执行,也就是说停止整个测试
立即停止测试
如果请求失败,立即停止整个测试场景的执行
线程属性
线程数
一个线程可以理解为对应一个用户,所以线程数越多,那么也就认为可以模仿的用户越多
Ramp-Up时间(秒)
该属性指的是所有线程从启动到开始运行的时间间隔,单位是秒,也就是说所有线程在多长时间内开始执行,如线程数设置50秒,设置的时间为5秒,那么计算的公式为:
循环次数
循环次数可以理解为:请求的重复次数,如果选择“永远”,那么请求将一直进行,不建议这样操作
延迟创建线程直到需要
如50个线程数,Ramp-Up时间是10秒,执行后线程是全部就绪的,那么就是每隔1秒启动5个线程数
调度器
思维调度器可以理解为设置何时开始执行
持续时间
测试计划持续多长时间
启动延迟
从当前时间延迟多长时间开始运行测试,也就是说点击执行后,仅仅是做初始化的场景,不会执行测试,等待延迟到达后开始运行测试,执行的时间为持续时间设置的时间
JMeter监听器
聚合报告
聚合报告是以表格的形式来显示取样器的结果信息,如果不同的取样器拥有相同的名字,那么在聚会报告会显示在一行里面,那么一般来说,聚合报告都是根据取样器来显示每个取样器的执行结果信息。聚合报告的信息具体如下
后端监听器
后端监听器可以把JMeter与influxdb,grafana整合起来,把性能测试过程中的数据存储到infiuxdb,然后显示在grafana的可视化界面中
查看结果树
结果树能够很清晰的显示每个取样器执行的结果信息,以及每个取样器的网络请求信息,如下:
JMeter配置元件
取样器
取样器是JMeter的基本单元,一般性的各种都是取样器来发起的,如HTTP等请求,可以把它理解为一个独立的测试用例,或者说是一个测试场景
配置元件
配置元件可以理解为对取样器的各种请求进行辅助配置
HTTP信息头管理器
每个HTTP的请求都是需要请求头的信息,那么可以把请求头的信息添加到HTTP信息头管理器,然后需要把它放在取样器的前面
HTTP Cookie管理器
在系统登陆成功后需要访问系统中的其他网络请求,但是需要记住用户登录成功后的sessionID的信息,那么使用HTTP Cookie管理器就可以自动记录下这些信息
用户定义的变量
在测试中,如果某些请求参数存在变化,比如是用户名和密码,那么就可以单独的独立出来,用户定义的变量可以很轻松的来解决这部分的问题
HTTP请求默认值
每个取样器发送网络请求的时候都是需要IP地址等信息,但是使用HTTP请求默认值可以很轻松的把请求的地址独立出来
逻辑处理器
逻辑处理器主要控制JMeter的执行顺序,它的存在使整体测试的灵活度更多。比如接口A执行完成后得到的结果信息,经过逻辑控制器后,再执行接口B或者接口C,一般性而言,简单控制器使用的最多,但是也看具体的场景进行设置
前置处理器
在执行取样器之前,需要进行初始化的设置,等价于UnitTest测试框架中的setUp()的方法
后置处理器
再执行取样器之后执行,如API测试中经常会设计到上个API的输出是下个API的输入,那么就会使用到后置处理器中的正则表达式提取器或者是JSON提取器,BeanShell断言等
断言
主要验证返回的结果数据与预期的结果数据是否完全匹配,一般最常用的是响应断言和JSON断言
定时器
定时器主要用来在测试计划执行的过程中,定时器用来缓减线程运行,不如刻意的等待3秒后再执行下一个请求的信息