jmeter随机数测试html,使用jmeter造测试数据

好久没用jmeter了,此次趁着项目稳定后,用jmeter写了一些建立测试数据的脚本,由于手动建立数据太麻烦了正则表达式

本次编写脚本,一方面是经过查看后台请求,手动录入脚本,另外一方面用到了一些自带的函数来生成时间戳、生成随机数浏览器

因此本篇主要说一下此次写脚本的思路以及如何解决遇到的问题dom

1.总体思路

要想构造数据,首先必须登陆获取token,后续操做都依赖这个生成的token;

本次须要构造3种类型的数据,每种数据填写的字段不一样,因此编写脚本时,利用【事务控制器】,把不一样做用的脚本进行分类,例如登陆操做、构造A类型数据、构造B类型数据,这样脚本运行时,结果看起来一目了然;

不一样请求须要的headers可能不一样,因此把【HTTP信息头管理器】添加在各个【事务控制器】下,只对其下的请求生效(或者再细分添加某个具体请求下);

根据参数实际状况选用【HTTP请求默认值】以及【JSON提取器】、【正则表达式提取器】以及【函数助手】等,帮助实现参数化

2.编写过程当中的关键点

(1)响应结果中的中文字符显示成了“???”函数

编写好第一个脚本后,执行后查看结果,发现中文字符没有正常显示,以下测试

505fdc6f9cb8b77a94e348eaed38cb68.png

解决方法:在请求中,加上内容编码:utf-8编码

797a7755f470deaa004c3fd54df8245a.png

(2)添加时间戳 timestampspa

有些请求携带的参数中包含时间戳,能够是放在headers中,也能够是放在请求参数中翻译

2528a401df6b73b24dbe8e3204da7ce9.png

在jmeter中,可以经过函数助手来生成时间戳3d

生成当前时间

依次点击【选项】-【函数助手对话框】,打开函数助手blog

79832014f61332f869fe36b6dae0630c.png

而后选择【__time】函数,它能够生成各类形式的当前时间,展现以下

e3d79a690b76a16f1b7d8005cd3bb8fc.png

点击【帮助】会默认打开浏览器显示该函数的说明文档,谷歌硬核翻译以下

7b3e62bf92f6a7f1864ad7486df00b04.png

(1)不填写任何格式,直接点击【生成】,在结果区会展现一个13位的时间戳(毫秒级)

ef19f79df17f81c274153fec4e463e32.png

(2)若是要生成10位数字时间戳(秒级),则须要在格式字符中输入“/1000”

67bde0934ffc1aace8dd8075393341e7.png

(3)生成特定格式的日期

帮助文档中提供了以下几种

YMD=yyyyMMdd

HMS=HHmmss

YMDHMS=yyyyMMdd-HHmmss

依次来试一下

YMD,等价于yyyyMMdd,填写到格式字符串中,点击【生成】

6b213a8c449921010c9f16e68c4aa2bd.png

HMS ,等价于 HHmmss

f9257b521b4f512e6ffee9feb3a0f582.png

YMDHMS ,等价于 yyyyMMdd-HHmmss

448edab301d665ec7871522ee9d7f372.png

也能够本身来自定义一下显示格式

69a80ea0cc2ac6cb8755bf27179305c8.png

以前说生成时间戳时,变量名是非必填的,下面看下填写变量名后是什么效果

f48104798f8f9e48ad3d5078157da1dd.png

注意:当点击【生成】后,“拷贝并粘贴函数字符串”后会出现一串变量名,这个能够理解为时间戳变量,把它放到请求参数中,就意味着获取到了当前时间,以下

40bc0628cab3ed58a82caa92a159e5f7.png

根据当前时间进行位移(向前or向后移动指定时长)

有些请求会用到过去或未来的 某一个时间,jmeter有一个函数能够知足这个需求【__timeShift】

3e3f53e33e0afdd39089da6132fdd024.png

谷歌硬核翻译帮助文档以下

b4ef11a05ea60a8eaf10a8db0997d4c9.png

下面来试验一下

(1)显示格式为yyyyMMdd,时间基准20200420,向后推移2天

c3da38ff8614b4753040fc4f52cac332.png

(2)显示格式为时间戳(毫秒级),时间基准为当前时间,向后推移10分钟

${__timeShift(,,PT10M,,)}

85b1d70e96c25eeaf76a6d21491aa02a.png

(3)显示格式为 yyyy/MM/dd HH:mm:ss,时间基准为 2020/04/17 17:38:00,向后推迟 10分20秒

${__timeShift(yyyy/MM/dd HH:mm:ss,2020/04/17 17:38:00,PT10M20S,,)}

fe51521eb4b2e53362f338d51f906f34.png

(4)显示格式为 yyyy/MM/dd HH:mm:ss,时间基准为 2020/04/17 17:38:00,向前推 10分20秒

有2种写法:PT-10M-20S   或  -PT10M20S

1b84baea0eb9466d42f1274d81b0ff82.png

ps.位移时间时,注意“-”添加的位置便可,“+”能够省略

添加时间戳一方面能够用到传时间参数这种状况下,直接丢个时间戳过去;另外一方面,例如批量造数据时,不想每一个数据的名称都同样,那么就能够用时间戳做名称后缀,以下

d484fe7fcfb4441e1bd9812b0d5bcbbb.png

这样生成的数据就是:测试数据-20200417-141443

(3)生成随机数

一种是利用【__Random】函数(生成的随机数不惟一,可能会重复)

9e135d682a28d9151707348ee82ca78e.png

一种是利用【__UUID】函数(每次都会生成惟一的随机数)

6e24d67a27704f54c41a11c86c512e36.png

<think>好的,我现在需要回答用户关于JMeter数据构方法及示例的问题。首先,我得回忆一下JMeter的基本功能和数据构的常见方法。用户提到了几个引用,可能需要结合这些引用来组织答案。 首先,用户提供的引用中有提到CSV数据读取,以及通过程序构或日志过滤生成CSV文件。这应该是数据构的一部分。引用3提到构数据记录导出成CSV,供JMeter读取,所以这部分需要详细说明。 然后,用户可能想知道除了CSV之外的其他方法,比如使用前置处理器生成数据,或者使用BeanShell脚本。例如,使用随机变量或者函数助手生成随机数据。 另外,引用1和2提到了JMeter的Java请求开发方法和数据库驱动的配置。可能数据构也涉及到从数据库获取数据,比如执行SQL查询,使用JDBC连接,然后处理结果集。引用4中的SQL函数示例可能与此相关,比如使用CONCAT构字符串,这可以用于生成测试数据。 接下来,我需要将数据构的方法分点说明,每个方法配上示例。例如: 1. CSV数据文件:使用CSV Data Set Config元件,读取外部文件。引用3可以作为支持,说明如何构CSV文件。 2. 函数助手生成随机数据:比如使用Random、RandomString函数,或者时间函数生成动态数据。 3. BeanShell或JSR223脚本:在预处理中编写脚本生成复杂数据,如引用1提到的Java请求开发可能需要自定义Java代码,但用户可能更倾向于使用内置的脚本语言如Groovy。 4. 数据库查询:通过JDBC请求获取数据,结合引用2提到的数据库驱动配置,以及引用4的SQL函数示例,说明如何从数据库构数据。 5. 正则表达式提取器或XPath提取器:从先前的响应中提取数据,用于后续请求的参数化。 需要确保每个方法都有具体步骤和示例代码或配置。例如,在CSV部分,展示如何添加CSV Data Set Config,并引用引用3的内容。在数据库部分,说明如何添加JDBC连接配置,引用2的驱动配置步骤,以及使用SQL语句生成数据,如引用4的CONCAT例子。 可能还需要注意JMeter的版本,引用中提到了5.6.3和5.4.1,但用户可能使用不同版本,所以需要通用步骤。同时,示例需要符合用户提到的引用,比如在Java请求中可能需要引用1的jar文件,或者在数据库部分引用2的mysql驱动。 最后,生成相关问题,需要围绕数据构的其他方法、参数化技巧、性能影响、动态数据关联等。 确保回答结构清晰,分点说明,每个方法有示例,并正确引用提供的引用资料。同时,使用中文,数学公式不需要,但代码块需要用正确的格式,如用户示例中的Python代码那样。</think>### JMeter 数据构方法及示例 JMeter 中数据构是性能测试的重要环节,主要用于动态生成或读取测试数据。以下是常见方法及示例: --- #### 1. **CSV 数据文件读取** 通过 `CSV Data Set Config` 元件读取外部 CSV 文件,适用于需要重复使用或批量参数化的场景。 **步骤**: - 创建 CSV 文件,格式例如 `username,password,email`,每行对应一组数据[^3]。 - 添加 `CSV Data Set Config` 元件,配置文件名、变量名称(如 `userVar`)及编码格式。 **示例代码**: ```plaintext # 示例 CSV 文件内容 test1,123456,test1@example.com test2,abcdef,test2@example.com ``` --- #### 2. **函数助手生成动态数据** 利用 JMeter 内置函数生成随机值或动态值,如时间戳、随机字符串等。 **常用函数**: - `__Random`:生成随机整数。 - `__RandomString`:生成随机字符串。 - `__time`:获取当前时间戳。 **示例**: ```plaintext # 在请求参数中使用函数 username=user_${__Random(1,100)} password=${__RandomString(10,abcdef123456)} ``` --- #### 3. **BeanShell/JSR223 脚本生成数据** 通过脚本(如 Groovy)动态构复杂数据,适用于逻辑复杂的场景。 **示例(Groovy 脚本)**: ```groovy // 生成随机邮箱 vars.put("email", "user${System.currentTimeMillis()}@example.com"); ``` --- #### 4. **数据库查询构数据** 通过 `JDBC Request` 从数据库获取数据,结合 SQL 函数生成特定格式数据[^4]。 **步骤**: - 添加 `JDBC Connection Configuration` 配置数据库连接(需导入驱动,如 `mysql-connector-java-*.jar`[^2])。 - 使用 `JDBC Request` 执行 SQL 查询,例如: ```sql SELECT CONCAT("user", id) AS username FROM test_table; ``` - 通过 `${columnName}` 引用查询结果。 --- #### 5. **正则表达式提取器** 从前置请求的响应中提取数据,用于后续请求参数化。 **示例**: - 提取响应中的 Token: ```plaintext 正则表达式:`"token":"(.+?)"` 模板:`$1$` 变量名:`apiToken` ``` - 在后续请求头中引用:`Authorization: Bearer ${apiToken}` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值