Jmeter接口测试02-参数化

什么是参数化?为什么要参数化?我们都知道接口一般都带有请求参数,有些请求参数在多个接口中都使用固定的值,有些参数在做测试的过程中需要提供多种不同的值,为了避免每个重复的参数在各个接口中都需要赋值一次(有时候可能因为手误还会写错值)或者同一个参数的不同值都需要重新发送一次请求,于是就有了参数化的概念。参数化可以减少很多重复性的工作。

本文主要介绍Jmeter参数化的四种方式的使用,应用场景是加油卡项目的接口。

一、用户定义的变量(参数化)

需求背景:加油卡项目的四个接口(添加加油卡、绑定加油卡、加油卡充值、加油卡消费)中都有一个相同的入参dataSourceId(即第三方平台编号),为了避免在每个接口中都给参数dataSourceId赋一次值(还可能因为手误在某个或多个接口中的值写错了,写错几个就需要修改几个),所以需要对dataSourceId进行参数化(这样即使值写错了也只需要修改一处即可)。

添加加油卡接口
绑定加油卡接口

参数化步骤:

1、鼠标右键“加油卡项目”线程组,依次选择添加->配置元件->用户定义的变量:

添加用户定义的变量

2、在用户定义的变量界面中,点击“添加”按钮,输入变量的名称,值和描述信息,如下:

添加变量名和值

可添加多个变量。另外,可通过下方按钮“详细”、“从剪贴板添加”、“删除”、“向上”、“向下”等按钮操作变量。

需要说明的是,用户定义的变量是在测试计划执行过程中变量值不会发生改变的参数,因此一般仅将测试计划中不需要随迭代发生改变的参数设置在此处。比如测试环境的服务器IP地址和端口等。

3、使用变量,获取变量方式:${变量名} 。

以添加加油卡接口为例(其它三个接口设置禁用):

引用变量

将原来具体的值“abcd”改为“${dataSourceId}”,这样在执行测试计划的时候,“${dataSourceId}”会自动获取到对应的值“abcd”.。

3、执行计划,查看结果树。先添加一个监听器“察看结果树”,然后发送请求。

执行结果成功

从上图中可以看到测试执行结果是成功的。

4、将更多的参数定义成变量。

定义多个变量
引用变量
测试执行成功

至此,完成用户定义的变量的参数化的使用。

二、CSV数据文件(参数化)

以添加加油卡接口为例。

需求背景:添加加油卡接口中有个入参cardNumber,参数的定义是五位数字,那么测试时就要考虑多种用例情形,如纯数字、带有字符、包含空格等等。一个参数的取值可能对应好多个用例,多个参数的情况对应的用例会更多,面对那么多的用例,我们不可能手动一个用例一个用例的执行,那怎么办呢?这时我们可以考虑用CSV文件提供用例数据,然后将文件导入,只需点击一次执行按钮,就可以批量执行多个用例。

参数化步骤:

1、先创建一个.csv格式的文件(文件位置自己定,记住就好),然后在文件中写上所有测试用例的数据(以添加加油卡接口的cardNumber参数为例),如下:

准备测试数据

2、添加CSV数据文件设置元件。鼠标右键“加油卡项目”,依次点击添加->配置元件->CSV数据文件设置,如下:

添加CSV数据文件设置

3、导入.csv格式的文件,设置编码,是否忽略首行等。

导入文件设置变量

(注:左侧菜单树可通过鼠标拖动调整节点位置。)

如果.csv数据文件中有多列,每列是一个参数的值,那么在上图3步中需要把各参数名称按顺序写上,英文逗号隔开。

设置线程循环次数

4、引用变量,同样使用方式:${变量名} 。

引用变量

5、执行测试,查看结果。

执行测试结果

六条测试数据执行六次得出六条测试结果是一致的。(这里执行结果都是成功的是因为此接口没做严格校验。)

六条测试数据均入库

以上,就是CSV文件参数化的使用方式。支持csv,txt,dat三种文件格式。

此方法适用于参数取值范围较大的时候使用,该方法具有更大的灵活性。

三、函数助手(参数化)

以添加加油卡接口为例。

需求背景:为了测试接口对其它入参的校验,需要提供合法的卡id编号,即cardNumber入参的值。因为一个卡id只能被添加一次,所以需要使用函数按照规则自动生成卡id,保证每次执行时卡id都是一个新的值。

参数化步骤:

1、调出函数窗口。在菜单栏点击Tools菜单,在子菜单中点击“函数助手对话框”,如下:

调函数助手对话框
函数助手对话框

2、上图中在函数助手对话框中,选择功能“__RandomString”(功能很多,其它可自行尝试),即生成随机字符串,然后做如下图配置:

配置随机字符生成规则

将上图中绿框中的表达式拷贝出来,留着备用。

3、使用表达式。

使用方式一:直接写在请求消息体数据参数值处

引用变量

执行前,需要把CSV数据文件设置禁用,然后把循环次数改为1。

执行结果成功
测试数据入库成功

使用方式二:写在用户定义的变量里,然后通过方式:${变量名}  取值。

添加用户定义的变量
引用变量
执行测试成功
测试数据入库

以上,使用函数助手进行参数化操作完成。

---------------------------------------------------------------------------------------------------------------------

另,

测试数据
__CSVRead函数使用
函数取值

注:上面图中只能获取到.csv文件中的第一行的三列值。

若只有一个线程组,即使设置循环读取次数,每次读取的都是第一行!第一行!第一行!

所以如果想要测试一个接口对不同数据的响应情况,建议选择 CSV data set config 实现。

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