1. 背景
对于 Http协议,Loadrunner 脚本可以使用通用模板反复粘贴,只需要修改其中的 URL 和 传参,就可以完成一整个业务
2. Get 类型的接口
web_custom_request( // 名称,最好用英文 "Hello", // 接口的 URL,建议 appboss 地址设置成变量,方便切换环境 "URL={appboss}/app/shopBuy/detail?tokenId={tokenId}", // 提交方式 "Method=GET", "TargetFrame=", "Resource=1", // 返回内容定义的类型 "RecContentType=application/json", "Referer=", // 请求内容定义的类型 "EncType=application/x-www-form-urlencoded; charset=utf-8", LAST);
3. POST 类型接口
web_submit_data( // 名称,最好用英文 "Hello", // 接口的 URL,建议 appboss 地址设置成变量,方便切换环境 "Action={appboss}/app/shopBuy/detail?tokenId={tokenId}", // 提交方式 "Method=POST", "TargetFrame=", "Referer=1", // 返回内容定义的类型 "RecContentType=application/json", "Referer=", "Mode=HTML", ITEMDATA, // 请求体内容 "Name=传参的键", "Value=传参的值", ENDITEM, LAST);
4. 添加事务
事务是用来区分不同业务的,一个接口就可以用一个事务包含起来,方便统计
// 事务开始 lr_start_transaction("事务名称"); web_submit_data( // 名称,最好用英文 "Hello", // 接口的 URL,建议 appboss 地址设置成变量,方便切换环境 "Action={appboss}/app/shopBuy/detail?tokenId={tokenId}", // 提交方式 "Method=POST", "TargetFrame=", "Referer=1", // 返回内容定义的类型 "RecContentType=application/json", "Referer=", "Mode=HTML", ITEMDATA, // 请求体内容 "Name=传参的键", "Value=传参的值", ENDITEM, LAST); // 事务结束 lr_end_transaction("事务名称", LR_AUTO);
5. 添加断言
上面的脚本还缺少测试中最重要的一环,就是断言,判断执行的结果是否符合预期
// 事务开始 lr_start_transaction("事务名称"); // 这个需要放到Http请求前面,从结果中查找预期匹配内容 web_reg_find( "SaveCount=存储匹配次数的变量名",
// 想要匹配的内容 "Text=\"errorCode\" : \"200\",\n", LAST); web_submit_data( // 名称,最好用英文 "Hello", // 接口的 URL,建议 appboss 地址设置成变量,方便切换环境 "Action={appboss}/app/shopBuy/detail?tokenId={tokenId}", // 提交方式 "Method=POST", "TargetFrame=", "Referer=1", // 返回内容定义的类型 "RecContentType=application/json", "Referer=", "Mode=HTML", ITEMDATA, // 请求体内容 "Name=传参的键", "Value=传参的值", ENDITEM, LAST); // 事务结束 // 根据匹配的数量进行判断事务是否成功 if(atoi(lr_eval_string("{存储匹配次数的变量名}"))>0) { // 事务成功 lr_end_transaction("事务名称", LR_PASS); } else { // 事务失败 lr_end_transaction("事务名称", LR_FAIL); }
6. 添加集合点
既然是做性能,自然少不了并发用的集合点
// 集合点,需要放在事务之前 lr_rendezvous("集合点名称"); // 事务开始 lr_start_transaction("事务名称"); // 这个需要放到Http请求前面,从结果中查找预期匹配内容 web_reg_find( "SaveCount=存储匹配次数的变量名", // 想要匹配的内容 "Text=\"errorCode\" : \"200\",\n", LAST); web_submit_data( // 名称,最好用英文 "Hello", // 接口的 URL,建议 appboss 地址设置成变量,方便切换环境 "Action={appboss}/app/shopBuy/detail?tokenId={tokenId}", // 提交方式 "Method=POST", "TargetFrame=", "Referer=1", // 返回内容定义的类型 "RecContentType=application/json", "Referer=", "Mode=HTML", ITEMDATA, // 请求体内容 "Name=传参的键", "Value=传参的值", ENDITEM, LAST); // 事务结束 // 根据匹配的数量进行判断事务是否成功 if(atoi(lr_eval_string("{存储匹配次数的变量名}"))>0) { // 事务成功 lr_end_transaction("事务名称", LR_PASS); } else { // 事务失败 lr_end_transaction("事务名称", LR_FAIL); }