jmeter构造测试数据

本文详细介绍了如何使用JMeter构造测试数据,包括自增ID、随机数、求和、随机日期、随机字符串、时间函数、加密、日期格式转换、字符串大小写转换、逻辑判断等功能的使用方法,以及在数据库操作中的应用,如多表关联查询和数据插入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件环境

软件名称

软件版本

说明

JMeter

5.4.1

构造测试数据工具,建议使用最新版本

Java

8

Java环境

Mysql

5.7

数据库

mysql-connector-java-5.1.45-bin.jar

5.1

数据库依赖包

系统

--

Windows/Linux均可

本文档已mysql数据库为例讲解,但不只限于mysql数据库,支持的数据库如下:

使用场景

场景名称

使用说明

单表数据构造

在jmeter中使用一个线程组运行即可

多表数据构造

在jmeter中使用多个线程组运行,每一个线程组配置不同的数据表

多表关联数据构造

关联字段可以使用同一个变量(把变量设设置为公共变量即可)

本文档主要是针对单表插入数据进行说明

支持构造的数据类型

数据类型

解决方法

使用方法

ID自增

使用Jmeter 计数器组件

Id字段

随机整数

使用Jmeter random 函数

${__Random(10,20,)}生成10-20之间的随机整数

求和

使用 Jmeter intSum函数

${__intSum(10,5,sum)} 5+10的和

随机日期

使用 Jmeter RandomDate 函数

${__RandomDate(,1990-01-01,2021-12-31,,)},生成1990-01-01到2021-12-31的随机日期

随机字符串

使用 Jmeter RandomString 函数

${__RandomString(3,abcdefg)}

随机从abcdefg中生成长度为3的字符串

时间戳

使用 Jmeter Time函数

${__time(,)}默认为当前时间的时间戳,精确到毫秒1630398198008

字符串/数字加密

使用 Jmeter digest函数

${__digest(MD5,18910554406,,,)}

将字符串进行MD5加密:c49f00b92667a35c63708933384dad52

日期格式转换

使用 Jmeter dateTimeConvert函数

${__dateTimeConvert(20180112, yyyyMMdd,yyyy/MM/dd,)}

将20180112转换为2018/01/12

支持构造的数据类型

字段

解决方法

说明

判断两个数字/字符是否相等

使用 Jmeter if函数

多字段逻辑计算

使用 Jmeter jexl3函数

比如多个字段需要进行加减乘除计算

枚举值

使用 Jmeter CSV组件

比如:省份

字符串拼接

使用 Mysql CONCAT函数

CONCAT(“130",“434 ",“19901012 ", “6935")

随机小数

### 使用 JMeter 构造铺底数据进行性能测试 #### 准备工作 为了确保能够有效地利用 JMeter构造铺底数据,前期准备工作至关重要。这包括但不限于理解目标系统的业务逻辑以及所需模拟的具体场景[^1]。 #### 数据库交互设置 针对数据库的操作,无论是创建、更新还是读取记录,都需要通过 JDBC 请求实现。这意味着先要在 JMeter 中配置好相应的 JDBC Connection Configuration 组件,指定正确的驱动路径、URL 和认证信息等参数[^3]。 ```sql CREATE TABLE IF NOT EXISTS test_data ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` 此 SQL 语句用于准备一张名为 `test_data` 的表格作为示例中的基础结构之一;当然,在实际应用里应依据项目需求调整表的设计。 #### 调用外部服务获取动态内容 当涉及到更复杂的场景比如从缓存服务器(如 Redis)提取特定键对应的值时,则可以借助 BeanShell 或者 JSR223 Sampler 编写自定义代码片段完成操作。下面给出了一段基于 Java 实现的简单例子来展示怎样访问远程 Redis 并将其返回的结果存储到变量中供后续步骤使用[^4]: ```java import redis.clients.jedis.Jedis; // 连接到Redis实例 Jedis jedis = new Jedis("localhost", 6379); String key = "example_key"; String value = jedis.get(key); vars.put("retrievedValueFromRedis", value); jedis.close(); ``` 这段脚本会尝试连接至本地运行的一个 Redis 实例并检索由给定名称标识的数据项,最后把获得的内容保存起来以便于其他组件引用。 #### 执行批量插入或其他大规模变更动作 一旦完成了上述各项设定之后就可以着手编写具体的事务处理器了——即那些负责执行大量重复性工作的元件。通常情况下会选择 Loop Controller 结合 While Controller 来控制循环次数或是直到满足某些条件为止才停止迭代过程。与此同时,还可以考虑引入 CSV Data Set Config 插件以支持多组不同的输入源文件从而进一步增强灵活性和可扩展性。 例如,如果想要向之前建立好的 `test_data` 表内添加若干条新纪录的话,那么可以在 HTTP Request 下方新增一个 JDBC Request,并在里面填写如下所示的预处理语句模板: ```sql INSERT INTO test_data (name) VALUES ('${__RandomString(8,abcdefghijklmnopqrstuvwxyz)}') ``` 这里运用到了内置函数 `${__RandomString}` 自动生成长度固定且仅含小写字母字符串的形式填充字段名这一列的位置占位符部分。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值