1)线程(用户)
1--setUp 线程组
用途
- 初始化环境:执行初始化任务,如创建数据库表、上传文件等。
- 准备数据:准备测试所需的数据,如用户数据、产品数据等。
- 建立连接:建立数据库连接、WebSocket连接等。
配置步骤
-
添加setUp线程组
- 右键点击测试计划(Test Plan)。
- 选择“添加” -> “线程组” -> “setUp线程组”。
-
配置setUp线程组
- 名称:给setUp线程组一个有意义的名称。
- 线程数(用户数):设置执行初始化任务的线程数。通常设置为1即可,因为初始化任务通常是顺序执行的。
- 循环次数:设置初始化任务的执行次数。通常设置为1,除非需要多次执行初始化任务。
- 调度器:选择是否使用调度器来控制初始化任务的执行时间。
- 启动延迟:设置初始化任务开始前的延迟时间。
- 持续时间:设置初始化任务的总持续时间。
示例配置
假设我们需要在一个Web应用性能测试开始前,创建数据库表并插入一些初始数据。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加setUp线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> setUp线程组。
- 输入setUp线程组名称(例如“初始化任务”)。
-
配置setUp线程组:
- 名称:初始化任务
- 线程数(用户数):1
- 循环次数:1
- 调度器:不勾选(通常不需要设置调度器)
-
添加初始化任务:
- 右键点击setUp线程组 -> 添加 -> 取样器 -> JDBC请求。
- 配置JDBC请求:
- 数据库URL:数据库的连接字符串。
- 驱动类:数据库驱动类。
- 用户名和密码:数据库的认证信息。
- SQL查询:创建数据库表的SQL语句。
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50),password VARCHAR(50) );
-
插入初始数据:
- 右键点击setUp线程组 -> 添加 -> 取样器 -> JDBC请求。
- 配置JDBC请求:
- 数据库URL:数据库的连接字符串。
- 驱动类:数据库驱动类。
- 用户名和密码:数据库的认证信息。
- SQL查询:插入初始数据的SQL语句。
INSERT INTO users (username, password) VALUES ('user1', 'pass1'); INSERT INTO users (username, password) VALUES ('user2', 'pass2');
-
添加监听器:
- 右键点击setUp线程组 -> 添加 -> 监听器 -> 查看结果树。
- 运行测试,查看结果。
优化建议
-
线程数:
- 通常设置为1,因为初始化任务通常是顺序执行的。
-
循环次数:
- 通常设置为1,除非需要多次执行初始化任务。
-
调度器:
- 通常不需要设置调度器,因为setUp线程组会在主测试线程组开始前立即执行。
-
错误处理:
- 使用断言和监听器来捕获和分析初始化任务的执行结果,确保初始化任务成功完成。
-
脚本编写:
- 使用JSR223取样器和Groovy脚本可以灵活地执行复杂的初始化任务,如文件操作、数据库操作等。
2--tearDown线程组
用途
- 清理环境:执行清理任务,如删除临时文件、关闭数据库连接等。
- 恢复状态:确保测试结束后系统恢复到初始状态,避免影响后续测试。
- 资源释放:释放测试过程中占用的资源,如内存、文件句柄等。
配置步骤
-
添加tearDown线程组
- 右键点击测试计划(Test Plan)。
- 选择“添加” -> “线程组” -> “tearDown线程组”。
-
配置tearDown线程组
- 名称:给tearDown线程组一个有意义的名称。
- 线程数(用户数):设置执行清理任务的线程数。通常设置为1即可,因为清理任务通常是顺序执行的。
- 循环次数:设置清理任务的执行次数。通常设置为1,除非需要多次执行清理任务。
- 调度器:选择是否使用调度器来控制清理任务的执行时间。
- 启动延迟:设置清理任务开始前的延迟时间。
- 持续时间:设置清理任务的总持续时间。
示例配置
假设我们需要在一个Web应用性能测试结束后,删除所有生成的临时文件并关闭数据库连接。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加主测试线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“主测试线程组”)。
- 配置主测试线程组(例如,设置线程数、循环次数等)。
- 添加HTTP请求等取样器和监听器。
-
添加tearDown线程组:
- 右键点击测试计划 -> 添加 -> 线程组 -> tearDown线程组。
- 输入tearDown线程组名称(例如“清理任务”)。
-
配置tearDown线程组:
- 名称:清理任务
- 线程数(用户数):1
- 循环次数:1
- 调度器:不勾选(通常不需要设置调度器)
-
添加清理任务:
- 右键点击tearDown线程组 -> 添加 -> 取样器 -> HTTP请求(或其他取样器)。
- 配置清理任务:
- 例如,删除临时文件:
- 右键点击tearDown线程组 -> 添加 -> 取样器 -> JSR223取样器。
- 语言:选择Groovy。
- 脚本:
import java.nio.file.*def directory = new File("/path/to/temp/files") if (directory.exists() && directory.isDirectory()) {directory.eachFile { file ->file.delete()} }
- 例如,关闭数据库连接:
- 右键点击tearDown线程组 -> 添加 -> 取样器 -> JDBC请求。
- 配置JDBC请求,执行关闭连接的SQL语句(如果有)。
- 例如,删除临时文件:
-
添加监听器:
- 右键点击tearDown线程组 -> 添加 -> 监听器 -> 查看结果树。
- 运行测试,查看结果。
优化建议
-
线程数:
- 通常设置为1,因为清理任务通常是顺序执行的。
-
循环次数:
- 通常设置为1,除非需要多次执行清理任务。
-
调度器:
- 通常不需要设置调度器,因为tearDown线程组会在主测试线程组结束后立即执行。
-
错误处理:
- 使用断言和监听器来捕获和分析清理任务的执行结果,确保清理任务成功完成。
-
脚本编写:
- 使用JSR223取样器和Groovy脚本可以灵活地执行复杂的清理任务,如文件操作、数据库操作等。
3--开放模型线程组
用途
- 模拟真实用户行为:每个线程可以根据不同的时间间隔和条件执行请求,更接近真实用户的访问模式。
- 灵活的测试场景:适用于需要模拟复杂用户行为的测试场景,如登录、浏览页面、提交表单等。
配置步骤
-
添加开放模型线程组
- 右键点击测试计划(Test Plan)。
- 选择“添加” -> “线程组” -> “开放模型线程组”。
-
配置开放模型线程组
- 名称:给开放模型线程组一个有意义的名称。
- 线程数(用户数):设置模拟用户的数量。
- 初始延迟:设置所有线程启动前的初始延迟时间。
- 调度器:选择是否使用调度器来控制测试的开始和结束时间。
- 启动延迟:设置测试开始前的延迟时间。
- 持续时间:设置测试的总持续时间。
- 每秒启动的线程数:设置每秒钟启动的线程数。
- 每秒启动的线程数上限:设置每秒钟启动的线程数的上限。
- 每个用户的所有样本之间的延迟:设置每个用户在执行每个样本之间的延迟时间。
- 每个用户的所有样本之间的延迟上限:设置每个用户在执行每个样本之间的延迟时间的上限。
- 每个用户的所有样本之间的延迟下限:设置每个用户在执行每个样本之间的延迟时间的下限。
示例配置
假设我们需要测试一个Web应用,模拟100个用户并发访问,并且每个用户在执行每个样本之间有随机的延迟时间。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加开放模型线程组:
- 右键点击刚刚创建的测试计划 -> 添加 -> 线程组 -> 开放模型线程组。
- 输入线程组名称(例如“用户模拟”)。
-
配置开放模型线程组:
- 名称:用户模拟
- 线程数(用户数):100
- 初始延迟:0秒
- 调度器:勾选
- 启动延迟:0秒
- 持续时间:600秒(10分钟)
- 每秒启动的线程数:10
- 每秒启动的线程数上限:20
- 每个用户的所有样本之间的延迟:1000毫秒(1秒)
- 每个用户的所有样本之间的延迟上限:3000毫秒(3秒)
- 每个用户的所有样本之间的延迟下限:500毫秒(0.5秒)
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 服务器名称或IP:目标服务器的地址。
- 端口号:目标服务器的端口。
- 协议:HTTP或HTTPS。
- 方法:GET、POST等。
- 路径:请求的路径(例如
/index.html
)。
-
添加监听器:
- 右键点击线程组 -> 添加 -> 监听器 -> 查看结果树。
- 运行测试,查看结果。
优化建议
-
线程数:
- 根据测试目标和系统资源合理设置线程数。过多的线程可能导致系统资源不足,影响测试结果。
-
延迟时间:
- 设置合理的延迟时间和上下限,以模拟真实用户的访问模式。可以根据实际用户行为数据来调整这些参数。
-
调度器:
- 使用调度器可以更好地控制测试的开始和结束时间,避免测试时间过长或过短。
-
每秒启动的线程数:
- 设置合理的每秒启动的线程数,避免瞬间启动大量线程导致系统负载过高。
-
资源监控:
- 在测试过程中监控系统资源(如CPU、内存、网络带宽等),确保测试环境的稳定性。
-
错误处理:
- 使用断言和监听器来捕获和分析测试结果,及时发现和解决问题。
4--线程组
用途
- 模拟用户:定义模拟用户的数量和行为。
- 控制测试流程:设置测试的迭代次数、启动延迟等。
- 资源分配:管理测试资源的分配,确保测试的稳定性和可靠性。
配置步骤
-
添加线程组
- 右键点击测试计划(Test Plan)。
- 选择“添加” -> “线程组” -> “线程组”。
-
配置线程组
- 名称:给线程组一个有意义的名称。
- 线程数(用户数):设置模拟用户的数量。
- 循环次数:每个用户执行测试脚本的次数。
- 调度器:选择是否使用调度器来控制测试的开始和结束时间。
- 启动延迟:设置测试开始前的延迟时间。
- 持续时间:设置测试的总持续时间。
- 启动时长(秒):设置所有线程启动的时间跨度,即所有线程不是同时启动,而是逐渐启动。
- 处理完所有样本后停止线程:选择是否在所有样本处理完毕后停止线程。
示例配置
假设我们需要测试一个Web应用,模拟100个用户并发访问,并且每个用户执行测试脚本10次。
-
创建测试计划:
- 右键点击“测试计划” -> 新建 -> 输入测试计划名称(例如“Web应用性能测试”)。
-
添加线程组:
- 右键点击刚刚创建的测试计划 -> 添加 -> 线程组 -> 输入线程组名称(例如“用户模拟”)。
-
配置线程组:
- 名称:用户模拟
- 线程数(用户数):100
- 循环次数:10
- 调度器:勾选
- 启动延迟:0秒
- 持续时间:600秒(10分钟)
- 启动时长(秒):10秒
- 处理完所有样本后停止线程:勾选
-
添加HTTP请求:
- 右键点击线程组 -> 添加 -> 取样器 -> HTTP请求。
- 配置HTTP请求:
- 服务器名称或IP:目标服务器的地址。
- 端口号:目标服务器的端口。
- 协议:HTTP或HTTPS。
- 方法:GET、POST等。
- 路径:请求的路径(例如
/index.html
)。
-
添加监听器:
- 右键点击线程组 -> 添加 -> 监听器 -> 查看结果树。
- 运行测试,查看结果。
优化建议
-
线程数:
- 根据测试目标和系统资源合理设置线程数。过多的线程可能导致系统资源不足,影响测试结果。
-
循环次数:
- 根据测试需求设置循环次数。对于长时间的测试,可以适当增加循环次数。
-
调度器:
- 使用调度器可以更好地控制测试的开始和结束时间,避免测试时间过长或过短。
-
启动时长:
- 设置适当的启动时长,使线程逐渐启动,避免瞬间启动大量线程导致系统负载过高。
-
资源监控:
- 在测试过程中监控系统资源(如CPU、内存、网络带宽等),确保测试环境的稳定性。
-
错误处理:
- 使用断言和监听器来捕获和分析测试结果,及时发现和解决问题。
通过合理配置和优化线程组,可以有效地模拟用户行为,提高测试的准确性和可靠性。