一、测试计划
1、界面展示
测试计划是测试脚本的容器,主要是对测试脚本做总体设置。它定义了测试要执行什么,怎么执行(执行的)。其界面如下图所示:
2、设置用户定义变量
在测试计划中定义的变量是在整个测试计划中都可以使用的,是全局变量。当很多地方都需要用到一个变量时,我们可以在测试计划中添加用户变量,然后在其他元件中使用${变量名}来调用变量。如下图:我们可以定义SERVER为jmeter.apache.org,测试计划的其他元件可以用${SERVER}来引用该变量;
3、设置线程的执行顺序
(1)设置独立运行每个线程组:
默认情况下,线程组中的线程是并发执行的,当然也可以进行设置,勾选测试计划的第一个复选框(独立运行每个线程组),勾选后,线程组串行执行,即按照顺序执行,执行结果的顺序跟测试计划的顺序一致。
(2)设置主线程组结束后执行tearDown线程组:
4、设置函数测试模式
函数测试模式:勾选该选项后,执行测试时将会保留所有的响应数据和取样数据,这会增加测试运行时的资源需求,对性能有不良影响。只有当你需要记录每个请求从服务器取得的数据文件时才需要选择函数测试模式。如果只想对某个取样器结果关注,那么只对那个取样器增加监听器更好些。
5、设置添加目录或者jar包到classpath
此项设置主要是为了添加一些外部jar包文件,例如,当我们智联数据库进行测试时,如果不添加JDBC驱动就会报如下错误,而在测试计划中添加jar包后,问题得以解决。
注:修改后,需要重启jmeter,才能生效。
二、线程组
1、线程相关概念
(1)概念
- 进程:一个正在执行的程序就对应一个进程
- 线程:进程中的执行线索(一个进程有多个执行线索)
- 线程组:按照线程性质对线程进行分组
- 并发执行:多个线程同时执行;特点:执行结束的顺序和线程的启动顺序不一定一致
- 顺序执行:按照线程的启动顺序挨个执行
(2)在Jmeter中三者的关系:
进程有多个线程组,线程组可以有多个线程。
- 进程----测试计划
- 线程组----测试计划下的线程组
- 线程----线程组属性的线程数(相当于用户)
2、界面展示
线程组是测试计划执行的入口点,所有的逻辑控制器和取样器必须存在于线程组下,其他的元件根据位置不同,其作用的取样器范围也不同。线程组的每个线程都独立运行测试脚本。一个线程就相当于一个用户,通过多个线程并发执行实现并发性能测试。线程组可以控制线程数,启动时间和测试执行时间。其界面展示如下图所示:
3、设置线程组属性
- 线程数:要模拟的用户数,用户执行相互独立,例如要模拟100个用户访问系统,那么就设置为100。
- Ramp-up时间(秒):在指定时间内启动所有线程。若为0或未指定,则表示立即启动所有线程。若为非0值,则每隔“线程数/秒数”建立了一个线程。该值不能太小,否则服务器过载,结果不可靠。也不能过大,否则最后一个线程还未启动,第一个线程已经结束了。
- 循环次数:指线程执行的循环次数,即单个用户访问的次数。
-
延迟创建线程直到需要:直到线程开始取样时才创建。这样可以支持更多的线程,但又不会有太多是同时处于活动状态;
4、设置取样器错误后要执行的动作:
- 继续:忽略错误,继续执行;
- 启动下一进程循环:执行线程的下一个循环;
- 停止线程 :当前线程停止执行,不影响其他线程正常执行;
- 停止测试 : 整个测试会在所有当前正在执行的执行完后停止;
- 立即停止测试: 整个测试会立即停止执行,当前正在执行的取样器可能会被中断。
5、设置调度器
设置调度器后,线程组会在根据调度器设置的限制条件执行。
- 持续时间:表示脚本持续运行的时间,以秒为单位,例:如果你要让用户持续不断登录3分钟,持续时间应该设置为180;
- 启动延迟:表示脚本延迟启动的时间(单位为秒)。例:你希望10分钟后执行线程组,线程组持续执行3分钟,你可以将启动延迟设置为600,持续时间设置为180。
注:为了保证线程组持续时间能够达到持续时间,建议将循环次数勾选为永远。否则循环次数达到,但时间还未到持续时间,线程组也会结束。
三、特殊的线程组
除了普通的线程组外,还有两种特殊的线程组:setUp线程组和tearDown线程组。它们与普通线程组区别在于,setUp线程在普通线程执行前自动触发执行;而tearDown线程组在主线程结束后执行。
- setUp线程组----可以用于测试准备,加载程序主体执行所需的资源。比如:测试前创建测试用户等。
- Teardown线程组-----可以用于测试清理工作或在程序正式关闭之前将数据保存进内存。比如:测试后删除测试用户等。