Apache JMeter--接口测试(参数化)(三)

一、JMeter参数化简介

1.JMeter参数化的概念
当使用JMeter进行测试时,测试数据的准备是一项重要的工作。若要求每次迭代的数据不一样时,则需进行参数化,然后从参数化的文件中来读取测试数据。
参数化:是自动化测试脚本的一种常用技巧,可将脚本中的某些输入使用参数来代替,如登录时利用GET/POST请求方式传递参数的场景,在脚本运行时指定参数的取值范围和规则。
脚本在运行时,根据需要选取不同的参数值作为输入,该方式称为数据驱动测试(Data Driven Test),而参数的取值范围被称为数据池(Data Pool)。
2.JMeter参数化方式之使用场景对比

序号 参数化方式 使用场景
1 User Parameters 适用于参数取值范围很小的时候使用
2 CSV Data Set Config 适用于参数取值范围较大的时候使用,该方法具有更大的灵活性
3 User Defined Variables 一般用于Test Plan中不需要随请求迭代的参数设置,如:Host、Port Number
4 Function Helper中的函数 可作为其他参数化方式的补充项,如:随机数生成的函数${__Random(,,)}

二、JMeter参数化的4种主要方式

接口代码:

@RestController
@Slf4j
public class UserController {
    @GetMapping("/getUser")
    public String getUser(String id,String name){
        log.info("用户ID:"+id+"->用户名:"+name);
        return "用户ID:"+id+"->用户名:"+name;
    }
}
  1. User Parameters(用户参数)
    操作路径:HTTP取样器->前置处理器->用户参数
    1)添加User Parameters功能模块


    用户参数

2)设置参数项、参数值


设置参数

3)配置HTTP取样器界面的请求参数


配置请求参数

4)查看请求结果


查看请求结果

2.CSV Data Set Config(CSV数据配置)
1)添加CSV Data Set Config模块
操作路径:HTTP取样器-》配置元件-》CSV数据文件配置


iCSV数据配置

2)预先准备好要参数化的所有参数值

3)配置CSV Data来源


配置CSV Data来源

Configure the CSV Data Source配置项&功能:

配置项 取值or选择项
Filename 参数化文件的读取位置,即保存参数化数据的文件目录。可为绝对路径,也可为相对路径。在分布式测试中,还是利用相对路径比较方便,因为有的机器可能安装路径不一样,同时可避免脚本迁移时需要修改路径
File Encoding 编码格式,选择utf-8
Variable Names 变量名称。这里定义的变量名称,后面就可以直接用来引用了。(多个变量名称以逗号隔开,例如username,passwd。参数化文件中同样有对应的两列数据。)
Ignore first line 忽略第一行数据(类似LR中第一行数据是变量名称,如果你的配置文件中为了记忆第一行也是变量名,可以选择是忽略该行数据)
Delimiter Variable Names中的参数分隔符,默认为英文逗号
Allow quoted data 是否允许引用数据,默认false。选项为“true”时对全角字符的处理可能会出现乱码
Recycle on EOF 是否循环读取参数文件内容;因为CSV Data Set Config一次读入一行,分割后存入若干变量中交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入
Stop thread on EOF 当Recycle on EOF为False时(读取文件到结尾),停止进程,当Recycle on EOF为True时,此项无意义
Sharing mode 共享模式,即参数文件的作用域:All Threads;Current Thread Group;Current Thread

4)设置HTTP取样器的请求参数


设置HTTP取样器的请求参数

5)执行Run,查看效果


查看效果

3.User Defined Variables(用户自定义变量)
1)添加User Defined Variables模块


用户自定义变量

2)配置用户自定义变量界面中的参数及其值


配置用户自定义变量界面中的参数及其值

3)配置HTTP取样器中的请求参数
此时可以联合其他参数化方式(如:User Parameters)一起检测效果


配置HTTP取样器中的请求参数

4)执行Run,观察效果


执行Run,观察效果

4.函数助手
操作路径:工具菜单-->函数助手对话框


函数助手

1)选择参数化所需的函数,配置函数
有变量名:


配置函数

无变量名:
[图片上传失败...(image-289995-1564818269287)]

2)配置HTTP取样器的请求参数
有变量名:
${__Random(1,100,id)}


配置HTTP取样器的请求参数

无变量名:


配置HTTP取样器的请求参数

3)执行Run,查看效果


执行Run,查看效果

jmeter参数化的四种方式总结:
1、函数助手_CSVRead的参数化功能相比CSV Data Set Config较弱;
2、CSV 数据设置,适用于参数取值范围较大的时候使用,该方法具有更大的灵活性;
3、用户自定义变量 一般用于test plan中不需要随请求迭代的参数设置;
4、用户参数,适用于参数取值范围很小的时候使用;

三、json数据参数化

@RestController
@Slf4j
public class UserController {
    @GetMapping("/getUser")
    public String getUser(@RequestBody User user){
        log.info("用户ID:"+user.getId()+"->用户名:"+user.getName());
        return "用户ID:"+user.getId()+"->用户名:"+user.getName();
    }
}
  1. 采样器添加 HTTP 信息管理器
    鼠标右击该采样器,右键菜单选择 "添加" -> 配置元件 -> HTTP 信息头管理器,然后信息头添加一条名称为 Content-Type,值为 application/json 即可:


    采样器添加 HTTP 信息管理器

    采样器添加 HTTP 信息管理器
  2. JSON数据

{
"id":1,
"name":"张三",
"age":20
}
JSON数据

3.结果查看


请求参数

响应参数
  1. 使用CVS参数
    CVS文件:
1,张三
2,李四
3,王五
使用CVS参数
  1. 查看结果


    查看结果
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容