使用jmeter已经有一两年的时间了,为了防止我过几年忘记这个工具的具体使用方式,现在采用博客的方式对我的学习和使用过程进行相关的记录。
在介绍具体的操作之前,先把jmeter相关的配件好好讲解和深入了解一下。
一、测试计划
类似于LR中group的概念,涵盖本次的测试范围及测试功能,是参数化、取样器、监听器等的合集。一个脚本有且仅有一个测试计划;一个测试计划应可以包含多个线程组;一个线程组可以包含多个取样器。
1.用户定义的变量
即全局变量,若是不同线程组调用的参数不一致,不建议放在此处。添加变量TEST后,jmeter其余部分(测试计划不能调用这里的变量)调用时使用${TEST}。
PS:如果你的变量值是从取样器的响应结果中获取的,不建议保存在此处,这会造成jmeter不必要的性能损耗,可以采用前置或者后置处理器处理这部分参数。
2.独立运行每个线程组
用于控制线程组的执行顺序。不勾选,多个线程组间随机执行,无先后顺序;勾选此项,线程组在测试计划中的先后顺序,即为线程组执行的先后顺序。
3.主线程结束后运行tearDown线程组
当线程组结束运行后,继续运行tearDown线程组。即使强制停止测试,tearDown线程组也会继续运行。
4.函数测试模式
勾选此项,并且监听器处配置了保存数据到一个文件,会将jmeter每次请求的结果都保存到文件中,很耗费性能,不建议勾选
5.添加目录或jar包到Classpath
可以在此处添加jar文件或目录,但是删除条目需要重新启动jmeter后生效。
二、线程组
线程组:用于设置并发或者稳定测试持续时间的地方。
Jmeter中,取样器、控制器必须放置到线程组当中。线程组可以配置线程数、启动时间、持续时间及线程循环次数。每个线程都将独立执行完成各自的测试计划,互不干扰。
1.基础线程组
基础线程组有以下三种:setUp线程组、线程组、tearDown线程组,类似于loadrunner的init(), action(), end()三种事务。其中,setUp线程组主要用于执行初始化,类似于数据库连接配置,登录等操作;线程组内主要放置需要压测或者接口测试的各个接口,tearDown线程组主要执行退出登录,数据库清理等操作。执行顺序:setUp线程组>线程组>tearDown线程组。
两种线程组配置方式:
①压测模式:
线程数:此处为本次测试需要的并发线程数;
ramp_up时间:启动时间,启动上述并发线程数需要的时间;
循环次数:不勾选永远,填写需要的次数。线程数*循环次数=线程总执行次数,单接口测试,这个乘积即代表总请求数。
②稳定性测试模式:
勾选循环次数处的永远,勾选调度器,添加持续时间,可以控制线程组整个持续时间,用于执行稳定性测试。
这三种线程组功能基本是一样的。再有明确的执行前后顺序时,可以考虑通过添加不同的线程组来达到指定的效果。例如,需要携带登录获取的token才能访问其他接口时:在setup线程组中完成登录和将token存为全局变量的操作,在线程组中直接调用该token完成接口访问。
2.拓展线程组
jmeter插件库中有提供额外的拓展线程组: Arrivals Thread Group、Concurrency Thread Group、Free-Form Arrivals Thread Group、Stepping Thread Group和Ultimate Thread Group。作用类似于LR Controller里面的场景设计,模拟用户实际操作的场景。
如果真的需要使用的话,建议掌握jp@gc - Stepping Thread Group。
#内容来自于jmeter官网&个人理解。