这里我理解的是(我认为很重要):
普通参数化:参数化的是Request的请求中的某个入参,这个入参的值可以人为赋予。
关联:特殊的参数化,参数化的是客户端发起Request请求后服务端返回的Response内容中的某个值,并把这个值作为其他请求Request的入参;
关联,我这边几乎每次都会出问题,之前总是纠结于:
1、我到底怎么找到需要关联的参数。
2、到底怎么关联,不外乎网上各种资料各种3大关联方法;
3、总是纠结于解决关联带来的问题,从而忽略了对关联本质的理解。每次虽说问题都解决了,到了下一次用起来,感觉就像个新手小白,理解和使用还是浮于表面;
这次我压测的场景是关于微信注册会员:微信端打开会员注册H5页,输入手机号填写验证码后下一步→填写个人资料并保存。在这里会员资料保存后会自动创建顾客并给顾客发一张会员卡。
脚本录制好了,先观察下脚本的请求,包含如下几类参数:
1、固定参数:unikey、域名、H5和MemberAPI的基地址,这些固定的参数参数化的话用:parameter type为custom类型直接替代。如下图
web_custom_request("verifyvip",
"URL=http://{BaseAPI}/api/member/verifyvip",
"Method=POST",
"TargetFrame=",
"Resource=0",
"RecContentType=application/json",
"Referer=http://{BaseH5}/?unikey={Unikey}",
"Snapshot=t8.inf",
"Mode=HTML",
"EncType=application/json",
"Body={\"UniKey\":\"{Unikey}\",\"Version\":\"1.0.0\",\"ClientType\":1,\"FansId\":\"1394183659614900224\"}",
LAST);
2、动态参数:会员手机号这个参数,如果我并发50个用户的话,意味着我要用200个左右的新手机号来测试,这个采用parameter type为File类型,这个后面有多种方法后面再出文档。
3、Response返回的参数:以上2类参数的共同点是可以人为赋值,但是请求中的【顾客代码】很特殊,这个是注册会员后才生成的,每次注册完会员后我们也不知道服务器将生成什么样的【顾客代码】,Response将返回什么参数给我们。那么。。这里。。我们就要关联了!!
首先,切换到HTTP View找到第一个Request中需要【顾客代码】的请求
意味着GetPayCardBalance请求之前的某个请求有返回【顾客代码】
从第一个请求往下找,一直找到GetPayCardBalance这个节点,找到第一个Response中有返回【顾客代码】的这个参数请求
第一个Response中有返回【顾客代码】的这个参数请求是RegisterNew,如下图:
选中RegisterNew跳转到该请求对应的响应日志,直接右键:go to step in replay log
定位到请求对应的日志列,并切换到Script
这里的左右边界的确认:
响应:{“status”:“success”,“message”:“娉ㄥ唽鎴愬姛”,“data”:“SZSD01_GK00000008”}
左边界:从SZSD01_GK00000008往前找,找到 “,“data”:”,
右边界:SZSD01_GK00000008往后找,只找到后引号 ”
(针对 “ 和 \ 前面需要加 \ 进行转换)
得到的关联参数如下:
web_reg_save_param("gkdm",
"LB=\",\"data\":\"",
"RB=\"",
"Search=Body",
LAST);
左右边界填写到LB和LR即可。
如果不确定关联是否正确,使用下面函数打印出来
lr_end_transaction(“进入填写资料页并保存”, LR_AUTO);
lr_output_message(“gkdm is :”, lr_eval_string(“{gkdm}”));
注意lr_output_message这个函数放在事务结束后,否则回放会报错:
Warning: The string ‘returncode’ with parameter delimiters is not a parameter