测试计划的作用
- 测试计划描述了 Jmeter 在执行时,一系列的步骤
- 一个完整的测试计划包含了一个或多个【线程组、逻辑控制器、采样器、监听器、定时器、断言和配置元素】
Jmeter原件和组件的介绍
基本元件的介绍
多个类似功能组件的 容器(类似于类)
组件的基本介绍
实现独立的某个功能(类似于方法)
配置树中的元件
- 树中的每一个控件都能通过右边内容区显示
- 树中的每一个控件都能在树中随意拖动
运行测试计划
- 可以通过ctrl+r运行测试计划
暂停运行测试计划
两种暂停方式
- 停止线程(ctrl + .)【硬中断】
- 关闭线程(ctrl + ,)【软中断】
stop threads
- 许多采样器(Samplers)都是可中断的,这意味着可- 以提前终止活动采样
- stop命令将检查所有线程是否已在默认超时(即5000 ms = 5秒)内停止
- 如果有线程还没被停止,则会发送一条信息;此时可以再发送一次 stop 命令,但如果还是失败的话,就得退出 Jmeter 来清理
注意
上述说的默认超时可以通过Jmeter属性来改变 jmeterengine.threadstop.wait 【jmeter安装目录 / bin / jmeter.properties】
shutdown threads
- 线程会在当前运行任务结束后停止,不会中断活动线程正在执行的任务
- 会出现一个【正在停止测试】的窗口(如下图),直到所有线程都运行完成了才会关闭
- 如果停止时间太久,也可以直接发stop命令
在CLI模式下,如何停止线程执行
在bin目录下,运行脚本
- stoptest.cmd / stoptest.sh 【硬中断】
- shutdown.cmd / shutdown.sh 【软中断】
注意,只有在同一个 host 下运行的脚本,Jmeter 才会接受
常用介绍
线程组
普通的、常用的线程组,可以看做一个虚拟用户组,线程组中的每一个线程都可以理解为一个虚拟用户
-
setUp线程组: 一种特殊类型的线程组,可用于执行预测试操作
-
tearDown线程组: 一种特殊类型的线程组,可用于执行测试后工作
HTTP请求
向服务器发送http及https请求
查看结果树
Jmeter参数化(重点)
1、用户定义的变量
①作用:定义全局变量;
位置:测试计划》线程组》配置元件》用户定义的变量
②定义全局使用的变量,如 协议、域名、端口等:
③HTTP请求中引用定义的变量名,格式:${变量名}
④查看结果树
2、用户参数
①作用:针对同一组参数,当不同的用户来访问时,可以获取到不同的值,但不能对同一个用户的不同循环取不同的值;
位置:测试计划》线程组》前置处理器》用户参数
②添加用户参数:
③HTTP请求中引用定义的变量名,格式:${变量名}
④ 查看结果树
3、CSV数据文件
① 作用:让不同用户在多次循环时,可以取到不同的值;
位置:测试计划》线程组》配置元件》CSV数据文件设置
② 定义 csv数据文件:
③ 参数介绍:
④ HTTP请求中引用定义的变量名,格式:${变量名}
⑤ 查看结果树
注:循环次数 是在线程组页面设置
4、函数(__counter)
① 作用:计数函数,一般做执行次数统计使用。不需要提前准备数据。自动添加计数的方式来完成参数化;
位置:在菜单中选择》工具》函数助手对话框
设置:
- TRUE,每个用户有自己的计数器;FALSE,使用全局计数器
- Name of variable in which to store the result(optional):用于存储结果的变量名(可选)
在HTTP取样器中,应用counter函数生成的函数字符串,就可以读取counter函数生成的数值。 如果counter
-
参数设置为:TRUE,则每个用户分别(分别计数)从1开始计算,每循环一次加1 如果counter
-
参数设置为:FALSE,则所有用户公用(全局计数)一个计数器,每发送一个请求时,取值加1
② 参数介绍:
Ⅰ. ${__Random(,)}:方法的第一个参数为随机数的下限,第二个参数为随机数的上限,第三个参数为储存随机数的变量名;
Ⅱ. ${__CSVRead(,)}:方法中第一个参数是文件名,第二个参数是文件中的列(列数从0开始);
Ⅲ. KaTeX parse error: Expected group after '_' at position 2: {_̲_StringFromFile…{__StringFromFile(,)}方法中没有指定读取文件中的哪一列的参数,所以KaTeX parse error: Expected group after '_' at position 2: {_̲_StringFromFile…{__counter}:不需要准备数据,jmeter自动添加计数的方式来完成参数化(TRUE:,每个用户分别计数;FALSE:所有用户使用全局计数)
以下用使用${__Random(,)}举例:
③ 打开函数助手,选择Random,并且设置函数参数:
④把函数助手生成的函数拷贝到HTTP请求的参数中。
⑤查看结果树