JMeter使用过程中,会需要引入外部数据/过程数据/结果数据。以下三种技术方案将帮你实现此需求。
CSV Data Set Config
用于配制CSV文件数据集。
CSV文件
CSV全称:Comma-Separated Values,逗号分隔值或字符分隔值。其文件以纯文本形式存储表格数据(数字和文本)。- 详细的
CSV文件说明可参考 百度文库-CSV
配制说明

-
Config the CSV Data SourceFilename: 获取目标的CSV文件,建议与测试计划jmx文件存放在同和文件夹中File encoding: 文件编码格式,有需求时,可配制。默认留空即可Variable Names(comma-delimited): 定义变量名,以逗号分隔不同的变量名。若此外不定义,则会取CSV文件中的首行内容为变量名。建议此处不定义Delimiter(use '\t' for tab): 使用哪种符号来分隔,默认使用,Allow quoted data?: 如果设置为True,则在变量中可以使用双引号。默认为FalseRecycle on EOF?: 在线程组运行过程中,若文件读取至最后一行后,是否继续读取。默认为TrueStop thread on EOF?: 在线程组运行过程中,若文件读取至最后一行后,是否停止线程。默认为FalseSharing mode: 读取数据的分享模式All threads: 文件数据在所有线程中共享Current thread group: 仅在单个线程组中共享Current thread: 仅针对单个线程共享
-
示例参考: 仅用于说明
CSV文件调用的使用,可在Result Tree中的Request中查看到- 测试计划: CSVDataSetConfig.jmx
CSV文件: data.csv
应用
-
并发测试中针对不同用户信息进行获取,只需要下面3步。
- 先将需要测试的用户账号信息存入至
CSV文件中 - 在
HTTP请求信息中将账号信息参数化 - 使用JMeter的
CSV Data Set Config元素来调用CSV文件,并将数据传递给HTTP请求
- 先将需要测试的用户账号信息存入至
-
一些初始化数据的使用,如: 特定的
定单状态
User Defined Variables
使用性能测试时,会需求一些提前准备的数据。如: 指定的用户名/指定的订单号。使用User Defined Variables可实现。
配制说明

-
User Defined Variables: 存放所有的用户自定义变量数据Name: 变量名Value: 变量值Description: 变量的描述信息
Detail: 详情功能,点击后可展开并修改Variable的具体信息Add: 添加一条新的变量,默认内容均为空Add from Clipboard: 将当前复制的内容添加至Variable中Delete: 删除一条Variable记录Up/Down: 上移/下移变量的位置- 示例参考: UserDefinedVariables.jmx
应用
- 自定义变量设置: 全局变量时,可使用此功能。如:用户ID/订单号
Regular Expression Extractor
使用正则表达式提取数据,并在JMeter中使用
配制说明

-
Apply to: 需要匹配的样例应用范围Main sample and sub-samples: 主样例和子样例Main sample only: 主样例Sub-samples only: 仅子样例JMeter Variable: JMeter变量
-
Field to check: 检查的区域Body: 返回的数据体,如: 页面的内容(除消息头)。默认使用Body(unescaped): 所有的HTML均被替换。慎用Body as a Document: 像文档的数据体Response Headers: 返回的消息头Request Headers: 请求的消息头URL: URL请求信息,如: www.baidu.comResponse Code: 返回的状态码Response Message: 返回信息
Reference Name: 抽取出来的变量名Regular Expression: 匹配的正则表达式Template: 匹配模板,从匹配结果中创建一组字符串。若Regular Expression中会抽取多个结果,则$1$是第一组数据/$2$表示第二组数据。$0$表示整个结果Match No.(0 for Random):使用匹配的第No结果,0表示随机,负数用于与ForEach Controller配合使用-
Default Value: 默认值,如果没有匹配出结果,则使用的默认值。Use empty default value: 勾选后,则使用空为默认值
- 示例代码: RegularExpressionExtractor.jmx
应用
- 对于返回结果中数据提取,如: 从第一个请求中获取
用户信息,再从第二个请求中使用用户信息 - 配合
ForEach Controller进行对应结果的场景处理,如: 从第一个请求中获取一组数据,再依次结合这一组数据获取另外的数据