关注性能小课,成长不止一点点
1、简介
本篇将通过在启动后的JMeter中创建测试计划(Test Plan),来跟大家一起了解组成测试计划(Test Plan)的元件分别有哪些。
2、测试计划(Test Plan)要点
2.1 要点概述
在JMeter中,一个脚本就是一个测试计划(Test Plan)。JMeter 的请求模拟与并发数设置(即线程数设置,一个线程代表一个虚拟用户)都是在脚本文件中进行的,而LoadRunner对于脚本、虚拟用户二者的设置是分开的。所以,在这一点上,JMeter与 LoadRunner是有区别的。
2.1.1 要点一
☆ 脚本中测试计划只能有一个 ☆
-
1、JMeter中的测试计划与LoadRunner Controller 中的Scenario类似,同一时刻,Scenario只能有一个。 -
2、JMeter 脚本在 GUI 中是以树型结构显示的,测试计划是树形结构的根节点,而该根节点只能有一个。
2.1.2 要点二
☆ 测试计划中至少要有一个线程组 ☆
-
1、JMeter 中的负载是通过线程组进行驱动的,故测试计划中至少要有一个线程组。 -
2、JMeter 测试计划支持多个线程组。
在测试计划下面,用户可以建立多个线程组,把不相关联的业务分布在不同的线程组中,这与 LoadRunner 中以 Group方式划分的Scenario是类似的,所以,我们可以把JMeter中的测试计划理解成LoadRunner中以 Group方式划分的Scenario。
2.1.3 要点三
☆ 至少要有一个取样器 ☆
-
测试的目的,是对用户请求进行模拟,假如没有取样器进行取样,脚本是毫无意义的。
2.1.4 要点四
☆ 至少要有一个监听器 ☆
测试的结果,是用来衡量被测系统的性能的,假如没有监听器进行监听,将无法从测试结果中分析被测系统的性能。
3、测试计划(Test Plan)元件
接下来,我们将打开JMeter的GUI界面,通过一系列操作及查看,来对组成测试计划的元件进行逐一了解。
3.1测试计划(Test Plan)
Test Plan (测试计划):即一个性能测试实例。右键单击“测试计划”将会弹出如下菜单:
该菜单展示了与本次性能测试实例相关的所有功能。从该菜单的组成可以看出,每一个性能测试实例的内容都是基于计划的。
小提示:● 测试计划对应的所有配置参数项中,有一个名为“ 函数测试模式 ”的复选框。如果将其勾选,JMeter将会对每个测试样本从服务器返回的数据进行记录。与此同时,如果在监听器中选择了所有数据写入一个文件,则被记录的数据将会写入到文件里(以上配置操作,仅在对要进行较小数据量的测试执行以确保JMeter是否被正确配置以及服务器返回的结果是否符合预期时较为适用)。由此一来,负责存储被记录数据的文件,其大小将会快速增长,JMeter的性能将会受到影响。所以,如果要进行压力测试,则应禁用此选项(该选项默认情况下处于禁用状态)。
● 如果未在监听器中选择所有数据写入一个文件,则“ 函数测试模式 ”选项是否勾选,将不会有区别。
● 点击监听器上的“ 配置”按钮,可对要自定义保存的字段进行选定。
3.2线程组Threads(Users)
线程组元件是任何测试计划的起点。所有控制器和取样器必须隶属于某个线程组,而其它元件(例如,监听器)则可以直接放置在测试计划下,直接放置在测试计划下的元件的配置将应用于所有线程组。由此可以看出,线程组元件主要用来控制JMeter将要用于执行测试所使用的线程数。线程组元件主要对以下设置项进行设置:
-
设置线程数 -
设置Ramp-Up时间 -
设置执行测试的次数
由于多个测试线程之间均是完全独立的,所以每个测试线程都将会对测试计划进行严格执行。多测试线程主要用于模拟用户与服务器应用程序间的并发连接。
所设置的Ramp-Up时间,将会告诉JMeter将要“Ramp-Up”到所选线程的总数需要多长时间。如果使用了10个线程,并且启动周期为100秒,那么JMeter将会花费100秒来启动和运行所有10个线程。每个线程将在上一个线程开始后10(100/10)秒再开始。如果有30个线程,启动周期即为120秒,每个连续线程将被延迟4秒。
合理的设置Ramp-Up时间,可用来避免在测试执行伊始时压力过大,以及使最后一个线程在第一个线程完成之前开始运行(除非被测系统有此特殊要求)。
默认情况下,线程组默认为在其元件之间循环一次。
线程组还提供了调度功能。单击“线程组”面板底部的复选框可以启用/禁用其它字段,而且,用户可以在其中输入测试的持续时间,启动延迟,运行的开始和结束时间。用户可以配置持续时间(秒)和启动延迟(秒)来控制每个线程组的持续时间以及启动后的秒数。当测试开始时,JMeter将在启动线程组的线程之前等待启动延迟(秒),然后运行配置的持续时间(秒)。
小提示:持续时间(秒)和启动延迟(秒)两个选项会覆盖“ 开始时间”和“ 结束时间”。线程组的添加路径:【测试计划】-【Threads(Users)线程组】。
3.2.1添加线程组
选中要添加线程组的测试计划(Test Plan),右键点击“Add”,选中“Threads(Users)”,此时,我们可以看到三个线程组:
虽然此处有三个添加线程组的选项,且名字不一样,但当创建之后,其界面是完全一样的。关于三个线程组的简介如下:
-
setUp Thread Group(线程组) 一种特殊类型的ThreadGroup,类似于LoadRunner中的init,可用于执行预测试操作。 -
tearDown Thread Group(线程组) 一种特殊类型的ThreadGroup,类似于LoadRunner中的end,可用于执行测试后的一些动作。 -
Thread Group(线程组) 这个就是用户通常添加运行的线程组。关于该线程组,通俗来讲,可以看做一个虚拟用户组,组中的每个线程都可以理解为一个虚拟用户,组中包含的线程数量在测试执行过程中是不会发生改变的。
3.2.2线程组界面介绍
这个就是我们通常添加运行的线程组。通俗来讲,一个线程组,,可以看做成一个虚拟用户组,组中的每个线程都可以理解为一个虚拟用户。
-
循环次数:表示每个线程执行多少次请求。 -
名称:就如字面意思,起个有意义的名字就行。 -
注释:无。 -
线程数:这里选择1。 -
Ramp-Up Period:单位是秒,默认时间是1秒。它指定了启动所有线程所花费的时间,比如,当前的设定表示“在5秒内启动5个线程,每个线程的间隔时间为1秒”。如果需要JMeter立即启动所有线程,将此设定为0即可。 -
循环次数:表示每个线程执行多少次请求。
3.3扩展线程组
此处的扩展线程组主要是指阶梯加压线程组,该扩展线程组的安装非常简单,只需给JMeter下载安装一个插件即可。
小提示:● Stepping Thread Group 可用于模拟阶梯加压。
3.4控制器(Controllers)
JMeter有两种类型的控制器:取样器和逻辑控制器。JMeter将会借助它们来驱动测试的进行。
其中,取样器主要用来通知JMeter将请求发送到服务器。例如,需要JMeter发送HTTP请求,则添加一个HTTP Request Sampler即可。
逻辑控制器使您可以自定义JMeter用于决定何时发送请求的逻辑。例如,您可以添加一个Interleave Logic Controller在两个HTTP Request Samplers之间交替。有关更多信息,请参见逻辑控制器。
逻辑控制器主要对JMeter决定何时发送请求的逻辑进行自定义。例如,添加一个Interleave Logic Controller,可在两个HTTP Request Samplers之间作交替。
END
欢迎加入我们:
扫码加入公开课学习交流群②
已在公开课学习交流群①
的小朋友请勿重复加群
免费技术支持微信:15712862196
咨询QQ:2657535456
咨询微信号:huice666
慧测公众号




