使用LR完成接口测试记录
使用LR完成接口测试记录
之前介入的接口测试或者出具的测试报告,没有强制要求是使用什么工具,所以基本都是使用jmeter完成相关性能测试并出具测试报告,交付第三方验收并通过。
但最近有个项目比较特殊,客户明确要求必须使用LoadRunner完成性能测试并出具测试报告,相对我们目前项目而言,如果使用LR进行录制--修改脚本并执行完成测试,此中方法已经不适用;所以只得使用LR进行接口编码修改并完成测试;经验证此种方法是对于目前系统是适用的,而出具的报告第三方也已认可。所以此处做一个记录,以备查验。
这里直接拿现有的接口信息来说明,先了解几个常用的方法:
1.lr_output_message()输出,可作为调试的print
2.web_reg_save_param()取参数,参数注册,要用左边界,右边界,转义符等等精确的取到需要的参数
3.lr_rendezvous()集合虚拟用户,先启动的线程等待还没启动的线程,在此集合
4.lr_start_transaction()事务开始的节点
5.lr_get_transaction_duration()事务耗时,用在transaction中任何你需要知道的节点
6.lr_get_transaction_wasted_time()程序自身消耗的时间
7.lr_eval_string()变量取值
8.lr_end_transaction()事务结束,参数LR_AUTO即程序自动判断事务pass还是fail,也可自定义
————————————————
原文链接:https://blog.csdn.net/weixin_41479678/article/details/112669986
相关接口如下:
Action()
{
double totaltime = 0;
double wasttime = 0;
double stotaltime = 0;
double swasttime = 0;
lr_output_message("当前为第%s次迭代",lr_eval_string("{NewParam}"));
web_reg_save_param("rcm.session.id",
"LB=\"msg\":",
"RB=,\"rcm.session.id\"",
LAST);//取code
lr_rendezvous("集合点");
lr_start_transaction("登陆");
web_submit_data("login",
"Action=http://192.168.1.144/rcm/a/login",
"Method=POST",
"Resource=0",
"Referer=",
ITEMDATA,
"Name=mobileLogin","Value=1",ENDITEM,
"Name=username","Value=6bcce5f671fd3f27672c13feef54c8f550aeab495e1d04fba86120d2e99c1beed54258a70145d0371c3a738bb2dd1d9232fed6235f9f2e8f2722c974caf42fe4777c4d51237e3274473d5188367058931eafae68e5b9d70c74824d864467117dfb03b9b818d4646772adec9eadbf7044b43e329e44d38dff4e15459198237ecc",ENDITEM,
"Name=password","Value=7b54901eaa0e6b69ff603cb02a1aef7749567eeb5a61e5038e86eabccb7ba45d34e742572d70bb80ed8bb7e19f32fa9b9d93874b5419cb4512fe119c50878e4f126e53f67434c8a0441a57a65b6ea7df01e40352dfb95bc4e319f516ab42f662b569896f3d48e030793c65d31b4824cb55d8eb8fafd1c0092f8d1b47b0f125b2",ENDITEM,
"Name=accountSuitId","Value=fa80c8f8b9ee43a79fdfa5ddf8d29807",ENDITEM,
"Name=identifierId","Value=09eff7963d5c88c2",ENDITEM,
"Name=validateCode","Value=",ENDITEM,
"Name=loginType","Value=1",ENDITEM,
LAST);
totaltime=lr_get_transaction_duration("登陆");
wasttime=lr_get_transaction_wasted_time("登陆");
lr_output_message("总共花费了:%f",totaltime);//事务运行至此总共耗费时间
lr_output_message("程序浪费了:%f",wasttime);//事务运行至此loadrunner自身消耗时间
lr_output_message("响应时间为:%f",totaltime-wasttime);//响应时间=总耗费时间-自身消耗时间
lr_end_transaction("登陆",LR_AUTO);
if(atoi(lr_eval_string("{code}"))==0)
lr_output_message("登陆成功"),
lr_output_message("code:%s",lr_eval_string("{code}"));
else if(atoi(lr_eval_string("{code}"))!=0 )
lr_output_message("登陆失败");
lr_start_transaction("添加");
web_submit_data("select",
"Action=http://192.168.1.144/rcm/a/asset/asset/listData",
"Method=POST",
"Resource=0",
"Referer=",
ITEMDATA,
"Name=confirmState","Value=1",ENDITEM,
"Name=useStateName","Value=在用",ENDITEM,
"Name=useState","Value=1",ENDITEM,
LAST);
stotaltime=lr_get_transaction_duration("添加");
swasttime=lr_get_transaction_wasted_time("添加");
lr_output_message("总共花费了:%f",stotaltime);//事务运行至此总共耗费时间
lr_output_message("程序浪费了:%f",swasttime);//事务运行至此loadrunner自身消耗时间
lr_output_message("响应时间为:%f",stotaltime-swasttime);//响应时间=总耗费时间-自身消耗时间
lr_end_transaction("添加",LR_AUTO);
lr_start_transaction("查询");
web_submit_data("submit",
"Action=http://192.168.1.144/rcm/a/asset/analysis/assetRetirementSummary/listData",
"Method=POST",
"Resource=0",
"Referer=",
ITEMDATA,
"Name=pageNo","Value=",ENDITEM,
"Name=pageSize","Value=",ENDITEM,
LAST);
stotaltime=lr_get_transaction_duration("查询");
swasttime=lr_get_transaction_wasted_time("查询");
lr_output_message("总共花费了:%f",stotaltime);//事务运行至此总共耗费时间
lr_output_message("程序浪费了:%f",swasttime);//事务运行至此loadrunner自身消耗时间
lr_output_message("响应时间为:%f",stotaltime-swasttime);//响应时间=总耗费时间-自身消耗时间
lr_end_transaction("查询",LR_AUTO);
return 0;
}
此处设置了3个接口,接口设计如图
具体可根据实际需求设置不同的计划。
报告如图所示,根据项目情况,出具不同的测试报告,以完成测试验收。