天天看點

loadrunner 接口測試

1.HTTP的GET請求 

這裡以通路百度為例,位址http://www.baidu.com/s?wd=mobile,表示在百度上搜尋mobile。具體腳本如下(有注釋) 

Lr script代碼  

  1. Action()  
  2. {  
  3.     int status;  
  4.     lr_start_transaction("send");  
  5.     web_reg_find("Search=Body",//這裡說明在Body的範圍内查找  
  6.                  "SaveCount=ret_Count",//這裡表示把傳回值的個數放在變量ret_Count裡  
  7.                  "Text=mobile",//這裡表示查找的内容是“mobile”  
  8.                  LAST);  
  9.     status=web_url("Baidu_Search",   
  10.         "URL= http://www.baidu.com/s?wd=mobile",   
  11.         "TargetFrame=Main",   
  12.         "Resource=0",   
  13.         "RecContentType=text/html",   
  14.         "Mode=http",   
  15.         LAST );   
  16.     lr_output_message("Request Status:%d",status);  
  17.     lr_output_message("查找到的傳回值個數:%d",atoi(lr_eval_string("{ret_Count}")));  
  18.     if (atoi(lr_eval_string("{ret_Count}")) > 0){//這裡判斷檢查到的個數  
  19.          lr_output_message("Rec successful.");  
  20.          lr_end_transaction("send", LR_PASS);  
  21.      }  
  22.      else{   
  23.          lr_error_message("Rec failed");  
  24.          lr_end_transaction("send", LR_FAIL);  
  25.      }   
  26.     return 0;  
  27. }  

2.HTTP POST請求 

這個是在我們項目中用到的,發送POST請求,進行自然語言識别的,腳本如下: 

  1.                  "Text=t",//這裡表示查找的内容是“t”  
  2.     status=web_submit_data("trs",  
  3.                 "Action=http://192.168.77.185:9002/recognizeText",//位址  
  4.                 "Method=POST",//POST請求  
  5.                 "RecContentType=text/html",  
  6.                 "Mode=HTML",  
  7.                 ITEMDATA,  
  8.                 "Name=usercontent","Value=gprs",ENDITEM,//這一行表示傳入一個參數usercontent,值為gprs  
  9.                 "Name=Accept","Value=text/plain",ENDITEM,  
  10.                 LAST);  
  11.      lr_output_message("Request Status:%d",status);  
  12.      if (atoi(lr_eval_string("{ret_Count}")) > 0){//這裡判斷檢查到的個數  
  13.      return 0;  

3.WebService請求 

webservice請求的腳本建議通過可視化的方式添加 

1)引入webservice,注意wsdl字尾 

2)給入參填值 

3)給傳回值指定存儲到的變量中 

4)結果檢查 

這個與其它模式一樣,不多說了 

我這裡添加的是網上公用的天氣預報webservice,位址是:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 

詳細腳本如下: 

  1.     status=web_service_call( "StepName=getSupportCity_102",  
  2.         "SOAPMethod=WeatherWebService|WeatherWebServiceSoap|getSupportCity",//這裡是我已經引用了webservice的名稱及調用方法  
  3.         "ResponseParam=response",  
  4.         "Service=WeatherWebService",  
  5.         "ExpectedResponse=SoapResult",  
  6.         "Snapshot=t1353067092.inf",  
  7.         BEGIN_ARGUMENTS,  
  8.                       "byProvinceName=安徽",//這裡是入參,參數名稱:byProvinceName,值:安徽。入參和傳回值的名稱都可以再引用裡看見  
  9.         END_ARGUMENTS,  
  10.         BEGIN_RESULT,  
  11.                       "getSupportCityResult=result",//這裡是傳回值,名稱:getSupportCityResult,把它放到變量result中  
  12.         END_RESULT,  
  13.         LAST);  
  14.     lr_output_message("Result:%s",lr_eval_string("{result}"));//這裡把傳回值輸出,調試webservice的時候用  
  15.     if(strstr(lr_eval_string("{result}"),"合肥")>0){//這裡是判斷傳回值中是否包含“合肥”  
  16.         lr_end_transaction("send",LR_PASS);  
  17.     }else{  
  18.         lr_end_transaction("send",LR_AUTO);  
  19.     }  

4.Socket請求 

我這裡指的是簡單的Socket請求,端連接配接,發送接收的都是一個字元串。比較複雜的Socket請求,自己錄制腳本。如果不知道,自己去查。 

詳細腳本如下,另外還包含一個data.ws檔案,用來聲明發送和接收的位元組數組及其長度的,并指定要發送的内容(發送的内容一樣可以參數化的) 

  1. #include "lrs.h"  
  2.     char *recvbuf;  
  3.     int recvlen=0;  
  4.     int rc;  
  5.     lrs_startup(257);  
  6.     lr_start_transaction("Trans_1");  
  7.     lr_start_transaction("Conn_1");  
  8.     rc=lrs_create_socket("socket0", "TCP", "RemoteHost=192.168.1.101:8888",  LrsLastArg);//建立Socket連接配接  
  9.     if (rc != 0 ) {     
  10.         lr_end_transaction("Conn_1", LR_FAIL);     
  11.         lr_end_transaction ("Trans_1", LR_FAIL);     
  12.         return 0;    
  13.     lr_end_transaction("Conn_1", LR_PASS);  //判斷socket是否連結成功的事務,0表示建立成功  
  14.     lrs_send("socket0", "buf0", LrsLastArg); //發送buf0,buf0為在data.ws中定義的發送變量  
  15.     lrs_receive("socket0", "buf1", LrsLastArg); //接收消息,存放在buf1中,buf1是在data.ws中定義的接收數組,注意數組長度一定要大于等于實際接收長度  
  16.     lrs_get_last_received_buffer("socket0",&recvbuf,&recvlen);//把Socket最後接收的位元組數組,長度放在recvlen中,内容放在recvbuf中  
  17.     lr_output_message("Received:%s",lr_eval_string(recvbuf));  
  18.     if(recvlen>3)  
  19.         lr_end_transaction("Trans_1", LR_PASS);  
  20.     else  
  21.         lr_end_transaction ("Trans_1", LR_FAIL);  
  22.     lrs_disable_socket("socket0", DISABLE_SEND_RECV);  
  23.     lrs_close_socket("socket0");  
  1. //data.ws  
  2. ;WSRData 2 1  
  3. send  buf0 32  
  4.     "hehehehe"  
  5. recv  buf1 50  

繼續閱讀