最近因项目需求,我们对系统进行了LoadRunner性能测试,具体实施流程如下:
1、安装并配置LoadRunner测试环境。
2、使用Virtual User Generator完成测试脚本的录制和优化。
3、通过Controller工具执行场景测试并生成性能分析图表。
LoadRunner介绍
Loadrunner是HP公司提供的一款性能测试工具,通过模拟成千上万个用户实施并发操作,测试系统的性能,并且提供详细的测试结果分析,协助用户查找问题。Loadrunner的优势在于节约了人力成本和时间成功,纯人工进行并发测试,不仅需要大量的人手和机器,还需要测试人员进行充分的沟通,默契的进行操作。使用Loadrunner就可以一个人模拟上万个用户,压缩了成本,也提高了效率。
Loadrunner的主要组件包括:
- Virtual User Generator:捕捉用户业务流程,并且自动生成脚本;
- Controller:设计场景,主要包括设置不同脚本的虚拟用户数量、迭代次数、执行时间等;
- Load Generator:模拟用户向服务器发送请求;
- Analysis:分析测试结果,辅助测试人员进行测试分析;
1、安装LoadRunner
这里使用的是Loadrunner2022R2。




这里去掉默认的勾选项


安装完成后会生成一下三个快捷方式。

2、录制/修改脚本
打开Virtual User Generator,选择Record


录制完脚本后,可以修改脚本
Action()
{
web_add_header("Accept-Language",
"zh-CN,zh;q=0.9");
lr_think_time(4);
lr_rendezvous("25");
lr_start_transaction("test");
web_reg_find("Search=All",
"Text=\"code\":200",
LAST);
web_set_sockets_option("SSL_VERSION", "AUTO");
web_custom_request("json",
"URL=http://192.168.31.17/api/app/base",
"Method=GET",
"Resource=0",
"RecContentType=application/json",
"Referer=",
"Snapshot=t7.inf",
"Mode=HTML",
"EncType=application/json",
"Body={}",
LAST);
lr_end_transaction("test", LR_AUTO);
return 0;
}
如果返回的内容是JSON格式,需要获取其中的值,也可以参考如下示例,如果请求的Body参数中有中文,需要先对中文进行编码,否则可能出现异常
Action()
{
char tmp[100];
char sysManger[100];
int nBusinessCode;
int nHttpRetCode;
lr_convert_string_encoding("测试账号", LR_ENC_SYSTEM_LOCALE, LR_ENC_UTF8, "Account");
strcpy(tmp,lr_eval_string("{Account}"));
lr_save_string(tmp,"Account");
lr_convert_string_encoding("系统管理员", LR_ENC_SYSTEM_LOCALE, LR_ENC_UTF8, "SysManger");
strcpy(sysManger,lr_eval_string("{SysManger}"));
lr_save_string(sysManger,"SysManger");
lr_rendezvous("test");
lr_start_transaction("1_transaction_login");
web_add_auto_header("Accept-Language", "zh-CN,zh;q=0.9");
web_reg_save_param_json(
"ParamName=token",
"QueryString=$.data.token",
SEARCH_FILTERS,
"Scope=Body",
LAST);
web_custom_request("login",
"URL=http://192.168.31.17/api/login",
"Method=POST",
"Resource=0",
"RecContentType=application/json",
"Referer=http://192.168.31.17/",
"Snapshot=t45.inf",
"Mode=HTML",
"EncType=application/json;charset=UTF-8",
"Body={\"userName\":\"{Account}\",\"pwd\":\"vSDIF1Ewx7PcL4NZkcgdSA==\",\"authCode\":\"***\",\"uuid\":\"191fa3b0b5f048d2b27d904343371418\",\"action\":0}",
LAST);
web_add_auto_header("Authorization", "{token}");
lr_end_transaction("1_transaction_login",LR_AUTO);
lr_start_transaction("2_transaction_page");
web_custom_request("page",
"URL=http://192.168.31.17/api/test",
"Method=POST",
"Resource=0",
"RecContentType=application/json",
"Referer=http://192.168.31.17",
"Snapshot=t51.inf",
"Mode=HTML",
"EncType=application/json;charset=UTF-8",
"Body={\"type\":0}",
LAST);
lr_end_transaction("2_transaction_page",LR_AUTO);
return 0;
}
3、执行测试
从Virtual User Generator中直接打开,先打开项目,调试可正常运行后

按照下图点击相应的菜单

调整模拟用户数,然后点击OK即可。

这里配置禁用日志


配置忽略思考时间

设置完成后,记得点右下角的SAVE按钮

配置如果没有生效,记得点一下这里的Refresh按钮

设置人员,双击Start Vusers

设置持续时间,在Start Vusers下一行,也是双击

设置退出配置

执行测试
输出图表


4、常见问题
(1)版权问题:个人未授权版最大只能50个用户并发测试,并且有使用时间限制,超过时间后,执行压力测试时图表会显示空白,因此为解决这个问题,采用新装Windows虚拟机+新安装LoadRunner的方式解决
(2)录制脚本乱码问题,打开Virtual User Generator,打开一个项目,选择Record菜单,点击Recording Options,然后按照下图选择相应的配置

(3)如果中文需要进行UTF8转码,可参考如下代码
char tmp[100];
lr_convert_string_encoding("测试账号", LR_ENC_SYSTEM_LOCALE, LR_ENC_UTF8, "Account");
strcpy(tmp,lr_eval_string("{Account}"));
lr_save_string(tmp,"Account");
使用的时候,直接项{Account}作为字符串即可。
3934

被折叠的 条评论
为什么被折叠?



