一、测试计划
启动jmeter时,会默认建好一个测试计划,启动一个jmeter只有一个测试计划
- 名称:测试计划的名字
- 注释:对这个测试计划的描述
- 用户定义的变量:定义全局变量
- 独立运行每个线程组:一个测试计划下面可以用多个线程组,用来管理线程组的执行顺序,勾选:会按照从上往下执行线程组;不勾选:jmeter会随机执行线程组
- 主线程结束后运行tearDown线程组:在主线程因错误结束执行时,如果勾选此项,会执行tearDown线程组;如果不勾选,就不会执行tearDown线程组(tearDown线程组可以用于测试清理工作,比如删除测试用户等)
- 函数测试模式:只有当你需要记录每个请求从服务器取得的数据到文件时才需要选择函数测试模式。选择这个选项很影响性能。在调试脚本的时候,可以开启,但是在压测数量时建议关闭
- 添加目录或jar到Classpath:需要调用的外部jar包可以在这里进行添加设置
要用到数据库时,在“添加目录或jar到Classpath”点击预览,添加下载好的JDBC驱动,注意jar包的版本要与数据库对应,MysqL的jar包下载地址:
https://dev.MysqL.com/downloads/connector/j/
二、线程组
- setup thread group
一种特殊类型的ThreadGroup,用于在执行常规线程组之前执行一些必要的操作。在“setup thread group ”下提到的线程行为与普通线程组完全相同。不同的是执行顺序—它会在普通线程组执行之前被触发。
应用场景举例:
A、测试数据库操作功能时,用于执行打开数据库连接的操作。
B、测试用户购物功能时,用于执行用户的注册、登录等操作。 - teardown thread group
一种特殊类型的ThreadGroup,用于在执行常规线程组完成后执行一些必要的操作。在“teardown thread group ”下提到的线程行为与普通线程组完全相同。不同的是执行顺序—它会在普通线程组执行之后被触发。
应用场景举例:
A、测试数据库操作功能时,用于执行关闭数据库连接的操作。
B、测试用户购物功能时,用于执行用户的退出等操作。
tips:默认情况下,如果测试按预期完成,则TearDown线程组将不会运行。如果你想要运行它,则需要从Test Plan界面中选中复选框“Run tearDown Thread Groups after shutdown of main threads”。
- thread group(线程组)
这个就是我们通常使用的线程。通俗的讲,一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。多个用户同时去执行相同的一批次任务。每个线程之间都是隔离的,互不影响的。一个线程的执行过程中,操作的变量,不会影响其他线程的变量值。
thread group分为三个板块:
- 取样器错误后要执行的动作:
继续:忽略错误,继续执行
Start Next Thread Loop: 忽略错误,线程当前循环终止,执行下一个循环。
停止线程:当前线程停止执行,不影响其他线程正常执行。
停止测试:整个测试会在所有当前正在执行的线程执行完毕后停止
Stop test Now:整个测试会立即停止执行,当前正在执行的取样器可能会被中断。
这几个配置项控制了“当遇到错误的时候测试的执行策略”是否会继续执行。
- 线程属性:
线程数:虚拟用户个数,也是并发数,每个线程将会完全独立的运行测试计划,互不干扰。
Ram-Up Period(in seconds): 启动所有线程所需要的时间。
循环次数:字面意思,这个线程组循环几次
Delay Thread creation until needed:默认情况下,测试开始的时候,所有线程就被创建完了。如果勾选了此选项,那么线程只会在合适的需要用到的时候创建 - 调度器:
可以更灵活的控制线程组执行的时间
最后介绍几个可拓展线程组,性能测试会用到
1、Concurrency Thread Group(递增式并发线程组)
这个可以模仿递增式并发(只能递增不能递减),并可设置递增次数、递增时长、到达目标递增数量保持时长等等:
参数解释:
· Target Concurrency:目标并发(总线程数)
· Ramp Up Time:加速时间(总加速时长)
· Ramp-Up Steps Count:加速步骤计数(总加速/递增次数)
· Hold Target Rate Time:保持目标速率时间(到达总线程数后持续时长)
· Time Unit:时间单位(分钟或者秒)
· Thread Iterations Limit:线程迭代次数限制(循环次数)
· Log Threads Status into File:将线程状态记录到文件中(将线程启动和线程停止事件保存为日志文件);
这意味着:
3分钟除以5步,每步0.6分钟;100个用户除以5步,每步20个用户;每0.6分钟将添加20个用户,直到达到100个用户,达到100个线程后,所有这些线程将继续运行,并一起打到服务器6分钟;
2、Stepping Thread Group(逐步线程组)
这个可以模仿递增式并发(不但递增还可以递减),并可设置递增次数、递增启动延迟、递增时长、到达目标递增数量保持时长等等:
参数解释:
1、线程组最大用户数:100个
2、初次加载用户前等待时间:10秒,此时没有用户进入
3、第一次加载用户数:10个用户开始
4和5:每隔10秒加10个用户
6、ramp-up在几秒内启动线程组
7、持续压测60秒,一分钟
8、和9:退用户,每10秒退出10个用户
3、bzm - Arrivals Thread Group(bzm-到达线程组)
跟Concurrency Thread Group线程组功能作用大同小异。参数解释:
· Target Rate:目标线程数(总线程数)
· Ramp Up Time:所需多少加载时间(总加速时长)
· Ramp Up Steps Count:所需多少个加载梯次(总递增/加速次数)
· Hold Target Rate Time:持续运行时间(到达总线程数后持续时长)
· Time Unit:可以选择用分钟还是秒来做单位
· Thread lterations Limit:线程迭代次数限制。如果我们只需要运行每个用户一次以模拟用户的实际行为,则可能会很有用。在我们的例子中,该字段为空,因此每个用户将运行不确定的迭代,直到调度结束。
· Log Thread Status into File:将线程状态记录到文件中
· Concurrency Limit:最大并发数限制。以避免出现内存不足的问题。在我们的例子中是1000,这是一个很大的数字。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。