JMeter有一些基础的测试元件,像上一篇文章说的用JMeter发送请求的练习中,测试计划中所添加的线程组、取样器、监听器等都属于JMeter测试计划的元件。
下面我们就来逐一介绍一下有哪些测试计划元件,和他们的作用。
1、测试计划:Test Plan
测试计划用来描述一个性能测试,包含性能测试所有相关的功能。也就是说进行一次性能测试的所有内容都是基于一个测试计划中。
-
JMeter中一个脚本就是一个测试计划(Test Plan),也是一个管理单元。JMeter的请求模拟与并发数设置都在脚本文件中一起设置。(并发数就是设置线程数,一个线程代表一个虚拟用户)
-
脚本中只能有一个测试计划。
-
测试计划中至少有一个线程组:Jmeter 负载是通过线程组驱动的,所以至少要有一个线程组。
我们可以把不相关联的业务分布在不同的线程组中。
-
至少有一个取样器:测试的目的是模拟用户请求,没有取样脚本就没有意义。
-
至少有一个监听器:我们需要根据测试结果来分析系统性能,所以至少得有一个监听器。
一个测试计划中,添加选项下面的内容都是JMeter测试计划的元件,下图所示:
2、线程(用户):Threads(Users)
线程(用户)就是我们通常要添加运行的线程。通俗的讲,一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。
线程组中包含的线程数量在测试执行过程中是不会发生改变的。每个线程完全独立的运行测试计划,互不干扰,多个线程用于模仿对服务器的并发访问。
所有控制器和采样器必须在线程组下。其他元件(例如侦听器)可以直接放置在测试计划下,在这种情况下,它们将应用于所有线程组。
(1)添加线程(用户)
“测试计划”右键 —> “添加” —> “线程(用户)”,有三个添加线程组的选项。如下图:
注意:如果你还安装了其他的组件或者插件的话,还会有一些其他的线程选项。
说明:
-
Setup thread group
:setUp线程组一种特殊类型的线程组,可用于执行预测试操作。和普通的线程组元件一样,不同的是,这种类型的线程执行测试前进行定期线程组的执行。
换句话说,setUp线程组执行顺序是,它会在普通线程组执行之前被触发。
应用场景举例:测试数据库操作功能时,用于执行打开数据库连接的操作。
-
Teardown thread group
:tearDown线程组一种特殊类型的线程组,可用于执行测试后动作。和普通的线程组元件一样,不同的是,这些类型的线程执行测试结束后执行定期的线程组。
换句话说,这些类型的线程执行测试结束后执行定期的线程组。
应用场景举例:测试数据库操作功能时,用于执行关闭数据库连接的操作,或者清理测试数据。
需注意:默认情况下,如果测试按预期完成,则TearDown线程组将不会运行。
如果需要运行TearDown线程组,则需要取保
测试计划Test Plan
界面中“Run tearDown Thread Groups after shutdown of main threads”
(主线程结束后运行tearDown线程组)选项被勾选。 -
Thread group
:线程组这个就是我们通常添加运行的线程。通俗的讲一个线程组,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。
(2)线程组内容界面说明
线程组、setUp线程组、tearDown线程组三个线程组的内容界面是一样的,都如下图:
说明:
@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):
-
持续时间(秒):如果选择了调度程序复选框,控制测试执行的持续时间,以秒为单位。
-
启动延迟(秒):如果选择了调度程序复选框,控制测试在多久后启动执行,以秒为单位。
可以在调度器中配置持续时间(秒)和启动延迟(秒)来控制每个线程组的持续时间以及启动后的秒数。当测试开始时,JMeter将在启动线程组的线程之前等待启动延迟(秒),然后运行配置的持续时间(秒)。
例:如果使用了10个线程,并且启动周期为100秒,那么JMeter将花费100秒来启动和运行所有10个线程。每个线程将在上一个线程开始后10(100/10)秒开始。如果有30个线程,启动周期为120秒,则每个连续线程将延迟4秒启动。
参考:
网友评论