第一次手写性能测试脚本,过程比较虐:
1、辅助工具:抓包工具burpsuite,观察请求及响应数据
2、了解Loadrunner中的一个模拟请求的函数:可以模拟get和post
web_submit_data("IsAttenderMobileOrEmailExist",
"Action=O网页链接",
"Method=POST",
"TargetFrame=",
"RecContentType=application/x-www-form-urlencoded; charset=UTF-8",
"Referer=O网页链接",
"Snapshot=t23.inf",
"Mode=HTML",
ITEMDATA,
"Name=ASP.NET_SessionId", "Value={ASP.NET_SessionId}", ENDITEM,
"Name=__RequestVerificationToken_L2NvbmZlcmVuY2U1", "Value={__RequestVerificationToken_L2NvbmZlcmVuY2U1}", ENDITEM,
"Name=__RequestVerificationToken", "Value={__RequestVerificationToken}", ENDITEM,
"Name=No", "Value=MEETING0920", ENDITEM,
"Name=SiteId", "Value=987", ENDITEM,
"Name=Mobile", "Value=13001051551", ENDITEM,
"Name=Email", "Value=jing.tang@ccwonline.com", ENDITEM,
LAST);
3、手动关联:根据抓包工具获取到的请求参数,与工程师确认服务器自动返回参数,然后手动关联
(1)关联函数:
web_reg_save_param("__RequestVerificationToken_L2NvbmZlcmVuY2U1",
"LB=__RequestVerificationToken_L2NvbmZlcmVuY2U1=",
"RB=;",
"Ord=1",
"RelFrameId=1",
"Search=ALL",
LAST);
通过postman查看响应数据,确定关联函数中的左右边界值,如果边界值内容中存在双引号",需要对其转义,使用反斜杠"
一开始是从网上搜了个关联函数,运行后报错Action.c(6): Error -27216: Invalid argument (number 4) [MsgId: MERR-27216],这个意思是这个函数中的第4个参数无效,结果仔细回忆,原来拷贝的函数是web_reg_save_param_ex,后来手动将_ex删掉,而这两个函数的参数名是不一样的
(2)关联函数位置一定要放到请求服务器返回关联参数的函数前面
(3)关联三个参数,只有一个参数能保存,但替换时就丢失,日志报如下警告:Warning: The string '__RequestVerificationToken' with parameter delimiters is not a parameter.
解决办法:将web_reg_save_param 改为 web_reg_save_param_ex
web_reg_save_param_ex(
"ParamName=__RequestVerificationToken",
"LB=<input name="__RequestVerificationToken" type="hidden" value="",
"RB=" />",
LAST);
4、关联没问题后,运行脚本,还是报错,Action.c(102): To location "O网页链接" [MsgId: MMSG-26693]
结果通过被测程序的日志发现,脚本的函数中少了个post参数address,添加后正常运行
5、重复运行后,关联函数找不到要保存的值,报错如下:Error -26377: No match found for the requested parameter "__RequestVerificationToken_L2NvbmZlcmVuY2U1". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 50000 bytes, use web_set_max_html_param_len to increase the parameter size [MsgId: MERR-26377]
结果发现是重复注册的问题,如果重复注册,服务器就不返回__RequestVerificationToken_L2NvbmZlcmVuY2U1,所以找不到,删除数据后,重新执行ok
6、脚本终于不报错了,运行完一看数据库,中文全是乱码,但是脚本中不是,搜索得出:脚本编辑器中的编码与运行时系统的数据编码不同所导致
解决办法:Run-time Settings中,找到 Preferences >> Option >> Convert form/to UTF-8,按需选择,YES
到此,算是一个里程碑了,加油!!!