loadrunner 接口性能腳本編寫(Get請求和Post請求)

  前段時間接觸了一下loadrunner的接口性能測試,而後嘗試了一下手動編寫腳本,畢竟錄製這種東西,不是每次都能通的,並且錄製下來的腳本,一般是有不少其餘雜七雜八的請求夾雜在中間,沒有達到真正的壓測接口的目的;web

  loadrunner默認的腳本是C語言的,百度以後發現其實它支持目前全部主流的語言,如:Java User、VB User、VB script User 、Javascript User等。 json

  下面是嘗試過的幾種post接口的請求方式:api

  • Post接口,經過JSON方式請求:

int i;app

game()
{post

//賽事列表接口開始時間,時間戳
lr_save_string("","gameHoldBeginTime");
//賽事列表接口結束時間,時間戳
lr_save_string("","gameHoldEndTime");
//gameCode
//lr_save_string("1532122","gameCode");性能

//如下接口循環請求兩次
for (i=0;i<2;i++)
{測試

/*勝負盤賽事列表接口*/
web_reg_save_param ("S_respond","LB=","RB=",LAST); 
//獲取賽事編碼gameCode,提供給後續接口調用
web_reg_save_param("gameCode","LB=gameCode\":\"","RB=\"",LAST);
web_add_header("Content-Type","application/json; charset=UTF-8");編碼

lr_start_transaction("listGames");url

web_custom_request("listGames", 
"URL={url}/common/listGames", 
"Method=POST", 
"Resource=0", 
"RecContentType=application/json", 
"Referer=", 
"Snapshot=t3.inf", 
"Mode=HTML", 
"EncType=application/json; charset=UTF-8", 
"Body={\"requestId\":\"{requestId}\",\"timestamp\":\"1523503209424\",\"version\":\"1.0.0\",\"clientId\":\"{clientId}\",\"accessToken\":\"{token}\",\"data\":{\"gameHoldEndTime\":\"{gameHoldEndTime}\",\"gameHoldBeginTime\":\"{gameHoldBeginTime}\",\"gameType\":\"ALL\"},\"sign\":\"{sign}\"}", 
LAST);spa


lr_end_transaction("listGames", LR_AUTO);

//打印返回信息 
lr_convert_string_encoding ( lr_eval_string ("{S_respond}"),LR_ENC_UTF8 ,NULL,"respond"); 
//打印轉碼後的響應報文 
lr_output_message ( "\nlistGames :%s",lr_eval_string ("{respond}"));

//循環結束
}

}

 

  • Post請求,使用from-data方式進行請求的時候,腳本的寫法:
    lr_start_transaction("saishiPost");

    web_submit_data("saishiPost", 
        "Action={url}/higame/saishiPost",  
        "Method=POST", 
        "TargetFrame=",
        "EncType=multipart/form-data",//使用的編碼類型
        "Referer=https://yqcqtest.100bei.com/higame/gamelist",   
        "RecContentType=application/josn",
        "Mode=HTML",         
         ITEMDATA, //下面編輯post請求的數據
          "Name=gameState", "Value=WAITING", ENDITEM, //數據的name、value及結束符
          "Name=riqi", "Value=2018-06-08", ENDITEM, //第二條數據的name、value及結束符
          "Name=leagueCode", "Value=", ENDITEM, 
        LAST); 

    //結束事件
    lr_end_transaction("saishiPost", LR_AUTO);

    //打印返回信息
    lr_convert_string_encoding( lr_eval_string("{S_respond}"),LR_ENC_UTF8,NULL,"respond" );
    //打印轉碼後的響應報文
    lr_output_message("\nappInfo :%s", lr_eval_string("{respond}"));
 

 

  • Get請求腳本編寫方法,get請求仍是比較簡單的,只須要套用更改url,基本就能調通了;
    /*情報接口*/
    web_reg_save_param ("S_respond","LB=","RB=",LAST); 
    //檢查點
    //web_reg_find("Search=Body","Text=200",LAST);
    web_add_header("Content-Type","application/json; charset=UTF-8");
    lr_start_transaction("intelligences"); 

    web_custom_request("intelligences", 
        "URL={url}/guess-api-gateway/portal/admin/common/intelligences?pageSize=5",  
        "Method=GET", 
        "Resource=0", 
        "Referer=",   
        "Mode=HTTP", 
        "EncType=application/json;charset=UTF-8", 
        "Body=", 
        LAST); 

    lr_end_transaction("intelligences", LR_PASS); 

    //打印返回信息
    lr_convert_string_encoding( lr_eval_string("{S_respond}"),LR_ENC_UTF8,NULL,"respond" );
    //打印轉碼後的響應報文
    lr_output_message("\nintelligences :%s", lr_eval_string("{respond}"));

 

另外:使用lr_save_string方法,配置靜態變量以及接口請求的字段參數。還能夠使用判斷語句,來區分讀取不一樣的配置,達到更高的易維護性;

相關文章
相關標籤/搜索