1、准备以前手工写的脚本一份,这里以注册脚本为例部分代码如下:
web_reg_save_param_regexp(
"ParamName=register_code",
"RegExp=code":(.?)",
"Ordinal=1",
SEARCH_FILTERS,
LAST);
lr_start_transaction("注册");
web_custom_request("register",
"URL={ip}{register}",
"Method=post",
"TargetFrame=",
"Resource=0",
"Referer=",
"EncType=application/json;charset=UTF-8",
"Body={"mobile":"{mobile}","password":"123456","code":"3367","platform":"windows","username":"test11","sex":1,"age":20,"email":"{mobile}@qq.com"}",
LAST);
if(atoi(lr_eval_string("{register_code}"))==0){
lr_end_transaction("注册",lr.PASS);
lr_output_message("*** registration success ***");
}
else{
lr_end_transaction("注册", lr.FAIL);
lr_output_message("*** registration failed ***");
}
2、启动LR controller,启动方式可在脚本编辑页面启动,这里会弹窗提示选择场景
手工场景个人理解为方便设计更符合需求的场景且灵活,更贴近真实性。
另一种方法就是直接启动controller
进去之后,上方菜单栏这里不多做介绍,需要注意的是结果输出保存路径修改方式:result -- result settings,弹窗可修改保存路径和名字
启动完成后,理解LR中事务与集合点
在LR中可通过lr_start_transaction和lr_end_transaction来自定义事务,它可以是一个单纯的接口请求,也可是几个接口组合的场景,一般
我们会把lr_start_transaction放在接口请求之前,lr_end_transaction放在请求完成的地方或者是判断里面,需要注意的是lr_start_transaction和
lr_end_transaction两个函数的传值必须一样,例如:lr_start_transaction("登录开始"),那么lr_end_transaction必须也跟“登录开始”:lr_end_transaction("登录开始")
集合点个人理解为将请求集合在某配置的值时一起释放达到并发的效果,可以设置为某值的百分比释放,放在事务开始之前
上图红框部分点击可对集合点进行配置,如果是灰色需要检查脚本是否添加集合点或者注释了集合点,修改后需要保存脚本并重新选择一下脚本才会生效
集合点释放的三种方式:
a、所有用户的百分比释放,如:10个用户,设置百分比为50%,那么到达5个就会释放
b、正在运行的用户的百分比释放,如:“run”下面的用户为2个,设置的百分比为100%,那么每集合2个就会释放
c、指定用户数释放。如:配置为5个,那么每次集合5个就会释放
Generator:相当于jmeter的分布式,本机资源不够依靠别的机器来添加压力
对于脚本而言,针对http协议不需要每台机器都有脚本,主控机有就可以,对于java vuser协议而言则需要脚本、jar包、jdk版本、文件目录都要一致
脚本运行相关设置:
运行报错:
1、Error: Two Way Communication Error: Function two_way_comm_post_message / two_way_comm_post_message_ex failed.
2、连接generator报错:Failed to connect to the load generator.Check the output window for more details
解决办法:关闭防火墙解决
3、连接generator运行报错:Error -27257: Pending web_reg_save_param/reg_find/create_html_param[_ex] request(s) detected and reset at the end of iteration number 1
原因是脚本修改,代码有多余的未注释,注释后解决