一给 发表于 2024-11-21 16:44:06

Jmeter中的前置处理器(二)

 5--JDBC PreProcessor
功能特点


[*]数据库操作:执行SQL语句,支持插入、删除、更新和查询操作。
[*]机动配置:可以毗连多种数据库(如MySQL、Oracle、PostgreSQL等)。
[*]适用于数据准备:特别得当需要在测试前准备数据库数据的场景。
配置步骤

[*] 添加 JDBC PreProcessor

[*]右键点击需要添加预处理器的哀求或线程组。
[*]选择“添加” -> “预处理器” -> “JDBC PreProcessor”。

[*] 配置 JDBC PreProcessor

[*]名称:给 JDBC 预处理器一个有意义的名称。
[*]变量名称:设置数据库毗连池的变量名称。
[*]SQL查询:输入要执行的SQL语句。
[*]效果变量名称:设置存储查询效果的变量名称(可选)。
[*]处理效果:选择如何处理查询效果(比方,忽略效果、纪录效果等)。

参数说明


[*]名称:给 JDBC 预处理器一个有意义的名称。
[*]变量名称:设置数据库毗连池的变量名称,必须与“JDBC Connection Configuration”中界说的变量名称一致。
[*]SQL查询:输入要执行的SQL语句,可以是插入、删除、更新或查询语句。
[*]效果变量名称:设置存储查询效果的变量名称,如果不需要存储效果,可以留空。
[*]处理效果:选择如何处理查询效果,比方:

[*]忽略效果:不存储查询效果。
[*]纪录效果:将查询效果存储在指定的变量中。
[*]纪录效果并抛出非常:将查询效果存储在指定的变量中,并在查询失败时抛出非常。

示例配置
假设我们需要测试一个Web应用,并在测试前向数据库中插入一些测试数据。

[*] 创建测试计划:

[*]右键点击“测试计划” -> 新建 -> 输入测试计划名称(比方“Web应用性能测试”)。

[*] 添加线程组:

[*]右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(比方“用户模仿”)。
[*]配置线程组:

[*]线程数:1(模仿1个用户)
[*]循环次数:1(每个用户发送1次哀求)
[*]启动延迟:0(立即启动)


[*] 添加 JDBC 毗连配置:

[*]右键点击测试计划 -> 添加 -> 配置元件 -> JDBC Connection Configuration。
[*]配置 JDBC 毗连配置:

[*]变量名称:dbConnection
[*]数据库 URL:jdbc:mysql://localhost:3306/mydatabase
[*]JDBC驱动类:com.mysql.jdbc.Driver
[*]用户名:root
[*]暗码:password


[*] 添加 JDBC PreProcessor:

[*]右键点击线程组 -> 添加 -> 预处理器 -> JDBC PreProcessor。
[*]配置 JDBC PreProcessor:

[*]名称:插入测试数据
[*]变量名称:dbConnection
[*]SQL查询:INSERT INTO users (username, password) VALUES ('testuser1', 'testpass1'), ('testuser2', 'testpass2')
[*]效果变量名称:(可选,如果不需要存储效果,可以留空)
[*]处理效果:忽略效果


[*] 添加HTTP哀求:

[*]右键点击线程组 -> 添加 -> 取样器 -> HTTP哀求。
[*]配置HTTP哀求:

[*]名称:登录哀求
[*]服务器名称或IP:目标服务器的地址(比方example.com)。
[*]端口号:目标服务器的端口(比方80)。
[*]协议:HTTP或HTTPS(比方HTTP)。
[*]方法:POST
[*]路径:哀求的路径(比方/login)。
[*]参数:

[*]名称:username
[*]值:testuser1
[*]名称:password
[*]值:testpass1



[*] 运行测试:

[*]点击工具栏上的“启动”按钮,运行测试。

优化建议

[*] 数据库毗连配置:

[*]确保 JDBC 毗连配置中的数据库 URL、驱动类、用户名和暗码精确无误。
[*]如果使用的是特定命据库,确保已经添加了相应的 JDBC 驱动到 JMeter 的 lib 目次中。

[*] SQL查询:

[*]根据实际需求编写 SQL 查询语句。如果需要执行多个操作,可以使用分号分隔多个 SQL 语句。
[*]如果需要动态生成 SQL 语句,可以使用 JMeter 变量(比方 ${variable_name})。

[*] 效果处理:

[*]根据实际需求选择符合的处理效果方式。如果需要纪录查询效果,确保效果变量名称有意义且易于理解。

[*] 错误处理:

[*]在测试计划中添加断言和监听器,确保数据库操作的精确性和哀求的乐成率。

示例配置具体说明
假设我们有一个简单的测试计划,包罗一个线程组和一个HTTP哀求,并希望在测试前向数据库中插入一些测试数据。

[*] 创建测试计划:

[*]右键点击“测试计划” -> 新建 -> 输入测试计划名称(比方“Web应用性能测试”)。

[*] 添加线程组:

[*]右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(比方“用户模仿”)。
[*]配置线程组:

[*]线程数:1(模仿1个用户)
[*]循环次数:1(每个用户发送1次哀求)
[*]启动延迟:0(立即启动)


[*] 添加 JDBC 毗连配置:

[*]右键点击测试计划 -> 添加 -> 配置元件 -> JDBC Connection Configuration。
[*]配置 JDBC 毗连配置:

[*]变量名称:dbConnection
[*]数据库 URL:jdbc:mysql://localhost:3306/mydatabase
[*]JDBC驱动类:com.mysql.jdbc.Driver
[*]用户名:root
[*]暗码:password


[*] 添加 JDBC PreProcessor:

[*]右键点击线程组 -> 添加 -> 预处理器 -> JDBC PreProcessor。
[*]配置 JDBC PreProcessor:

[*]名称:插入测试数据
[*]变量名称:dbConnection
[*]SQL查询:INSERT INTO users (username, password) VALUES ('testuser1', 'testpass1'), ('testuser2', 'testpass2')
[*]效果变量名称:(可选,如果不需要存储效果,可以留空)
[*]处理效果:忽略效果


[*] 添加HTTP哀求:

[*]右键点击线程组 -> 添加 -> 取样器 -> HTTP哀求。
[*]配置HTTP哀求:

[*]名称:登录哀求
[*]服务器名称或IP:example.com
[*]端口号:80
[*]协议:HTTP
[*]方法:POST
[*]路径:/login
[*]参数:

[*]名称:username
[*]值:testuser1
[*]名称:password
[*]值:testpass1



[*] 运行测试:

[*]点击工具栏上的“启动”按钮,运行测试。

https://i-blog.csdnimg.cn/direct/15e089bd739f44eb9430f370ae83fc92.png
6--取样器超时
功能特点


[*]超时控制:设置哀求的最大等待时间,高出这个时间哀求将被视为超时。
[*]适用于各种取样器:可以应用于HTTP哀求、FTP哀求、JDBC哀求等多种取样器。
[*]进步测试稳定性:避免因网络问题或服务器相应慢导致测试长时间挂起。
配置步骤

[*] 添加取样器

[*]右键点击需要添加取样器的线程组。
[*]选择“添加” -> “取样器” -> 选择符合的取样器(比方HTTP哀求)。

[*] 配置取样器超时时间

[*]在取样器的配置界面中找到超时时间相关的设置。
[*]设置公道的超时时间。

参数说明


[*]超时时间:设置哀求的最大等待时间,单位通常为毫秒(ms)。
[*]毗连超时:设置创建毗连的最大等待时间,单位通常为毫秒(ms)。
[*]相应超时:设置吸收相应的最大等待时间,单位通常为毫秒(ms)。
示例配置
假设我们需要测试一个Web应用,并设置HTTP哀求的超时时间为10秒(10000毫秒)。

[*] 创建测试计划:

[*]右键点击“测试计划” -> 新建 -> 输入测试计划名称(比方“Web应用性能测试”)。

[*] 添加线程组:

[*]右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(比方“用户模仿”)。
[*]配置线程组:

[*]线程数:1(模仿1个用户)
[*]循环次数:1(每个用户发送1次哀求)
[*]启动延迟:0(立即启动)


[*] 添加HTTP哀求:

[*]右键点击线程组 -> 添加 -> 取样器 -> HTTP哀求。
[*]配置HTTP哀求:

[*]名称:首页哀求
[*]服务器名称或IP:目标服务器的地址(比方example.com)。
[*]端口号:目标服务器的端口(比方80)。
[*]协议:HTTP或HTTPS(比方HTTP)。
[*]方法:GET
[*]路径:哀求的路径(比方/)。
[*]超时时间:

[*]毗连超时(毫秒):5000(5秒)
[*]相应超时(毫秒):10000(10秒)



[*] 运行测试:

[*]点击工具栏上的“启动”按钮,运行测试。

优化建议

[*] 公道设置超时时间:

[*]根据实际需求和网络状态设置公道的超时时间。过短的超时时间可能导致正常哀求被误判为超时,过长的超时时间可能导致测试长时间挂起。

[*] 区分毗连超时和相应超时:

[*]毗连超时是指创建毗连的时间限定,相应超时是指吸收相应的时间限定。根据实际情况分别设置这两个超时时间。

[*] 错误处理:

[*]在测试计划中添加断言和监听器,确保超时哀求的精确性和处理方式。比方,可以使用“相应断言”来检查哀求是否超时。

[*] 日志纪录:

[*]使用日志纪录功能可以帮助调试和分析超时哀求的原因,确保日志文件路径有用且有足够的写权限。

示例配置具体说明
假设我们有一个简单的测试计划,包罗一个线程组和一个HTTP哀求,并希望设置HTTP哀求的超时时间为10秒(10000毫秒)。

[*] 创建测试计划:

[*]右键点击“测试计划” -> 新建 -> 输入测试计划名称(比方“Web应用性能测试”)。

[*] 添加线程组:

[*]右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(比方“用户模仿”)。
[*]配置线程组:

[*]线程数:1(模仿1个用户)
[*]循环次数:1(每个用户发送1次哀求)
[*]启动延迟:0(立即启动)


[*] 添加HTTP哀求:

[*]右键点击线程组 -> 添加 -> 取样器 -> HTTP哀求。
[*]配置HTTP哀求:

[*]名称:首页哀求
[*]服务器名称或IP:example.com
[*]端口号:80
[*]协议:HTTP
[*]方法:GET
[*]路径:/
[*]超时时间:

[*]毗连超时(毫秒):5000(5秒)
[*]相应超时(毫秒):10000(10秒)



[*] 运行测试:

[*]点击工具栏上的“启动”按钮,运行测试。

https://i-blog.csdnimg.cn/direct/2ac580f5759e474f9f4e42886103bd45.png
7--正则表达式用户参数
功能特点


[*]数据提取:使用正则表达式从相应中提取特定的数据。
[*]动态参数传递:将提取的数据存储为变量,供后续哀求使用。
[*]支持多种相应范例:可以处理文本、HTML、JSON等多种相应范例。
配置步骤

[*] 添加正则表达式提取器

[*]右键点击需要添加后处理器的哀求或线程组。
[*]选择“添加” -> “后处理器” -> “正则表达式提取器”(Regular Expression Extractor)。

[*] 配置正则表达式提取器

[*]名称:给正则表达式提取器一个有意义的名称。
[*]应用到:选择要应用正则表达式的相应范例(比方,主样本、子样本等)。
[*]字段要检查:选择要检查的相应字段(比方,相应数据、相应头等)。
[*]正则表达式:输入用于匹配数据的正则表达式。
[*]模板:设置提取数据的模板,通常格式为$1$表示第一个捕获组。
[*]匹配数字:设置要匹配的次数(比方,-1表示匹配全部,0表示随机匹配一个,1表示匹配第一个)。
[*]默认值:设置如果未找到匹配项时的默认值。

参数说明


[*]名称:给正则表达式提取器一个有意义的名称。
[*]应用到:选择要应用正则表达式的相应范例,比方:

[*]主样本:仅应用到主样本。
[*]子样本:仅应用到子样本。
[*]主样本和子样本:应用到主样本和子样本。

[*]字段要检查:选择要检查的相应字段,比方:

[*]相应数据:检查相应数据。
[*]相应头:检查相应头。

[*]正则表达式:输入用于匹配数据的正则表达式。
[*]模板:设置提取数据的模板,通常格式为$1$表示第一个捕获组。
[*]匹配数字:设置要匹配的次数,比方:

[*]-1:匹配全部。
[*]0:随机匹配一个。
[*]1:匹配第一个。

[*]默认值:设置如果未找到匹配项时的默认值。
示例配置
假设我们需要测试一个Web应用,并从登录哀求的相应中提取会话标识符(比方JSESSIONID),然后在后续哀求中使用该会话标识符。

[*] 创建测试计划:

[*]右键点击“测试计划” -> 新建 -> 输入测试计划名称(比方“Web应用性能测试”)。

[*] 添加线程组:

[*]右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(比方“用户模仿”)。
[*]配置线程组:

[*]线程数:1(模仿1个用户)
[*]循环次数:1(每个用户发送1次哀求)
[*]启动延迟:0(立即启动)


[*] 添加登录哀求:

[*]右键点击线程组 -> 添加 -> 取样器 -> HTTP哀求。
[*]配置HTTP哀求:

[*]名称:登录哀求
[*]服务器名称或IP:目标服务器的地址(比方example.com)。
[*]端口号:目标服务器的端口(比方80)。
[*]协议:HTTP或HTTPS(比方HTTP)。
[*]方法:POST
[*]路径:哀求的路径(比方/login)。
[*]参数:

[*]名称:username
[*]值:testuser
[*]名称:password
[*]值:testpass



[*] 添加正则表达式提取器:

[*]右键点击登录哀求 -> 添加 -> 后处理器 -> 正则表达式提取器。
[*]配置正则表达式提取器:

[*]名称:提取会话标识符
[*]应用到:主样本
[*]字段要检查:相应数据
[*]正则表达式:JSESSIONID=(.*?);
[*]模板:11
[*]匹配数字:1(匹配第一个)
[*]默认值:NO_SESSION_ID


[*] 添加后续哀求:

[*]右键点击线程组 -> 添加 -> 取样器 -> HTTP哀求。
[*]配置HTTP哀求:

[*]名称:首页哀求
[*]服务器名称或IP:example.com
[*]端口号:80
[*]协议:HTTP
[*]方法:GET
[*]路径:/
[*]参数:

[*]名称:JSESSIONID
[*]值:${session_id}



[*] 运行测试:

[*]点击工具栏上的“启动”按钮,运行测试。

优化建议

[*] 正则表达式:

[*]确保正则表达式精确无误,能够准确匹配所需的数据。可以使用在线正则表达式测试工具进行验证。

[*] 模板设置:

[*]根据正则表达式的捕获组设置符合的模板。比方,$1$表示第一个捕获组,$2$表示第二个捕获组。

[*] 匹配次数:

[*]根据实际需求设置匹配次数。如果只需要第一个匹配项,设置为1;如果需要全部匹配项,设置为-1。

[*] 默认值:

[*]设置公道的默认值,避免因未找到匹配项而导致测试失败。

[*] 错误处理:

[*]在测试计划中添加断言和监听器,确保提取的数据精确性和哀求的乐成率。

示例配置具体说明
假设我们有一个简单的测试计划,包罗一个线程组和两个HTTP哀求,并希望从登录哀求的相应中提取会话标识符(比方JSESSIONID),然后在后续哀求中使用该会话标识符。

[*] 创建测试计划:

[*]右键点击“测试计划” -> 新建 -> 输入测试计划名称(比方“Web应用性能测试”)。

[*] 添加线程组:

[*]右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(比方“用户模仿”)。
[*]配置线程组:

[*]线程数:1(模仿1个用户)
[*]循环次数:1(每个用户发送1次哀求)
[*]启动延迟:0(立即启动)


[*] 添加登录哀求:

[*]右键点击线程组 -> 添加 -> 取样器 -> HTTP哀求。
[*]配置HTTP哀求:

[*]名称:登录哀求
[*]服务器名称或IP:example.com
[*]端口号:80
[*]协议:HTTP
[*]方法:POST
[*]路径:/login
[*]参数:

[*]名称:username
[*]值:testuser
[*]名称:password
[*]值:testpass



[*] 添加正则表达式提取器:

[*]右键点击登录哀求 -> 添加 -> 后处理器 -> 正则表达式提取器。
[*]配置正则表达式提取器:

[*]名称:提取会话标识符
[*]应用到:主样本
[*]字段要检查:相应数据
[*]正则表达式:JSESSIONID=(.*?);
[*]模板:11
[*]匹配数字:1(匹配第一个)
[*]默认值:NO_SESSION_ID


[*] 添加后续哀求:

[*]右键点击线程组 -> 添加 -> 取样器 -> HTTP哀求。
[*]配置HTTP哀求:

[*]名称:首页哀求
[*]服务器名称或IP:example.com
[*]端口号:80
[*]协议:HTTP
[*]方法:GET
[*]路径:/
[*]参数:

[*]名称:JSESSIONID
[*]值:${session_id}



[*] 运行测试:

[*]点击工具栏上的“启动”按钮,运行测试。

 
 
https://i-blog.csdnimg.cn/direct/61536f7fc08f41569c5c9a1f4a9a5b21.png
8--BeanShell PreProcessor
功能特点


[*]自界说预处理逻辑:使用 BeanShell 脚本编写自界说的预处理逻辑。
[*]机动控制:可以根据测试数据和条件动态调整哀求参数。
[*]支持 BeanShell 脚本:支持使用 BeanShell 脚本语言编写预处理逻辑。
配置步骤

[*] 添加 BeanShell 预处理器

[*]右键点击需要添加预处理器的哀求或线程组。
[*]选择“添加” -> “预处理器” -> “BeanShell 预处理器”。

[*] 配置 BeanShell 预处理器

[*]名称:给 BeanShell 预处理器一个有意义的名称。
[*]文件:选择脚本文件路径(可选,如果脚本较长或需要版本控制)。
[*]脚本:直接在脚本编辑框中编写脚本。
[*]参数:界说脚本中使用的参数(可选)。

参数说明


[*]名称:给 BeanShell 预处理器一个有意义的名称。
[*]文件:选择脚本文件路径(可选,如果脚本较长或需要版本控制)。
[*]脚本:直接在脚本编辑框中编写 BeanShell 脚本。
[*]参数:界说脚本中使用的参数(可选)。
示例配置
假设我们需要测试一个Web应用,并在发送哀求之前动态设置哀求参数,比方根据当前时间生成一个唯一的哀求ID。

[*] 创建测试计划:

[*]右键点击“测试计划” -> 新建 -> 输入测试计划名称(比方“Web应用性能测试”)。

[*] 添加线程组:

[*]右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(比方“用户模仿”)。
[*]配置线程组:

[*]线程数:1(模仿1个用户)
[*]循环次数:1(每个用户发送1次哀求)
[*]启动延迟:0(立即启动)


[*] 添加HTTP哀求:

[*]右键点击线程组 -> 添加 -> 取样器 -> HTTP哀求。
[*]配置HTTP哀求:

[*]名称:首页哀求
[*]服务器名称或IP:目标服务器的地址(比方example.com)。
[*]端口号:目标服务器的端口(比方80)。
[*]协议:HTTP或HTTPS(比方HTTP)。
[*]方法:GET
[*]路径:哀求的路径(比方/)。
[*]参数:

[*]名称:requestId
[*]值:${request_id}



[*] 添加 BeanShell 预处理器:

[*]右键点击HTTP哀求 -> 添加 -> 预处理器 -> BeanShell 预处理器。
[*]配置 BeanShell 预处理器:

[*]名称:生成哀求ID
[*]脚本:在脚本编辑框中编写以下 BeanShell 脚本: import java.util.Date;
import java.text.SimpleDateFormat;

// 获取当前时间
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String timestamp = sdf.format(now);

// 生成唯一请求ID
String requestId = "req_" + timestamp;

// 将请求ID存储为JMeter变量
vars.put("request_id", requestId);


[*] 运行测试:

[*]点击工具栏上的“启动”按钮,运行测试。

优化建议

[*] 脚本语言选择:

[*]虽然 BeanShell 是一个强大的脚本语言,但 Groovy 通常性能更好且功能更强大。如果可能,建议使用 Groovy 脚本。

[*] 脚本文件:

[*]如果脚本较长或需要版本控制,可以将脚本保存到文件中,并在 BeanShell 预处理器中选择脚本文件路径。

[*] 参数:

[*]如果脚本需要使用外部参数,可以在“参数”部分界说参数,并在脚本中引用这些参数。

[*] 性能影响:

[*]留意复杂脚本可能会对测试性能产生影响,特别是在大规模性能测试中。可以通过优化脚本和淘汰不须要的操作来进步性能。

[*] 错误处理:

[*]在脚本中添加得当的错误处理逻辑,确保脚本在遇到非常时能够优雅地处理。

[*] 日志纪录:

[*]使用日志纪录功能可以帮助调试和分析脚本执行情况,确保日志文件路径有用且有足够的写权限。

示例配置具体说明
假设我们有一个简单的测试计划,包罗一个线程组和一个HTTP哀求,并希望在发送哀求之前动态生成一个唯一的哀求ID。

[*] 创建测试计划:

[*]右键点击“测试计划” -> 新建 -> 输入测试计划名称(比方“Web应用性能测试”)。

[*] 添加线程组:

[*]右键点击测试计划 -> 添加 -> 线程组 -> 输入线程组名称(比方“用户模仿”)。
[*]配置线程组:

[*]线程数:1(模仿1个用户)
[*]循环次数:1(每个用户发送1次哀求)
[*]启动延迟:0(立即启动)


[*] 添加HTTP哀求:

[*]右键点击线程组 -> 添加 -> 取样器 -> HTTP哀求。
[*]配置HTTP哀求:

[*]名称:首页哀求
[*]服务器名称或IP:example.com
[*]端口号:80
[*]协议:HTTP
[*]方法:GET
[*]路径:/
[*]参数:

[*]名称:requestId
[*]值:${request_id}



[*] 添加 BeanShell 预处理器:

[*]右键点击HTTP哀求 -> 添加 -> 预处理器 -> BeanShell 预处理器。
[*]配置 BeanShell 预处理器:

[*]名称:生成哀求ID
[*]脚本:在脚本编辑框中编写以下 BeanShell 脚本: import java.util.Date;
import java.text.SimpleDateFormat;

// 获取当前时间
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String timestamp = sdf.format(now);

// 生成唯一请求ID
String requestId = "req_" + timestamp;

// 将请求ID存储为JMeter变量
vars.put("request_id", requestId);


[*] 运行测试:

[*]点击工具栏上的“启动”按钮,运行测试。

 
 
https://i-blog.csdnimg.cn/direct/4879317849ba4ceb855c3ab89c8ec6af.png
 
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Jmeter中的前置处理器(二)