Loadrunner:脚本编写通用模板(Http协议类型)

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);
    }    

 

上一篇:Android Retrofit+RXJava的使用


下一篇:操作符全解