LoadRunner 簡單筆記

竟然要幫測試寫loadrunner的腳本,也不好意思讓別人來幹,只好自己上咯。

借了本書,看了下,寫了一天,完成了。特意記錄下幾個注意點。

 

1:基本情況

對我來說,loadrunner腳本編程=loadrunner系統函數調用+基本C編程。前者實現了網絡相關應用以及一些基本系統功能,如類似printf功能。

所有函數我就都加在Action函數裏面。其實實際上,loadrunner會有一個Action.c 文件在本地,可以直接編輯。

可以在代碼裏面直接加事務範圍或者同步點。

 

通過設置Iterations來實現反覆調用或者Concurrent來併發執行。

 

2:重要函數

參考下面代碼,實現了:設置事務,get操作,post操作,並得到了每次連接的返回數據指針(preturn )

   

  lr_start_transaction("uploading"); 

  web_reg_save_param("preuploadcontents", "LB=", "RB=", "SEARCH=BODY", LAST);

  sprintf(szURL,"URL=http://xxx.xx.xxx.xxx:8080/rest?appkey=testkey&method=ps.preupload&token=%s&appsig=8aae40dc374ea0367cf25f86fcdef9f8",token);

 web_url("rest",
   szURL,
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t1.inf",
  "Mode=HTML",
  LAST);

    preturn = lr_eval_string("{preuploadcontents}");

     rc = atoi(&preturn[14]);

     lr_output_message("preload rc = %d", rc);

  if(rc != 0)
  {
   goto END;
  }
  

  memcpy(transid, preturn+25, 36);

  //lr_output_message("transid = %s", transid);

 
     web_reg_save_param("loadcontents", "LB=", "RB=", "SEARCH=BODY", LAST);


  sprintf(sttoken,"Value=%s", token);
  sprintf(sttransid,"Value=%s", transid);
 // sprintf(stname,"Value=G://sb_facebook//%s.jpg", lr_eval_string("{filename}"));
      sprintf(stname,"Value=G://sb_facebook//%s//%s.jpg", lr_eval_string("{logID}"), lr_eval_string("{filename}"));
    lr_output_message("stname = %s", stname);
     web_submit_data("upload",
                "Action=http://xxx.xx.xxx.xxx:8080/rest?",
                "Method=POST",
                "EncType=multipart/form-data",
                "RecContentType=text/html",
                "Referer=http://localhost:8080/Demo/upload/uploadDemo02.html",
                "Snapshot=t2.inf",
                "Mode=HTTP",
                ITEMDATA,
                "Name=appkey", "Value=testkey", ENDITEM,
                "Name=method", "Value=ps.upload", ENDITEM,
    "Name=token", sttoken, ENDITEM,
                "Name=tranid", sttransid, ENDITEM,
    "Name=appsig", "Value=8aae40dc374ea0367cf25f86fcdef9f8", ENDITEM,
                "Name=file1", stname, "File=Yes", ENDITEM,
                LAST);


   preturn = lr_eval_string("{loadcontents}");

     rc = atoi(&preturn[14]);

     lr_output_message("upload rc = %d", rc);

  if(rc != 0)
  {
   goto END;
  }

 

END:

 lr_end_transaction("uploading", LR_AUTO);

 

 

 

 

另外,有點要注意:

如果下載的是文本文件(XML),其大小應該是iflen = strlen(lr_eval_string("{fcontents}")); //試驗過

如果下載的是raw數據,其大小應該是iflen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE); //據說,我沒試驗

 

 

3:設置參數

這個是重點了。

參數文件其實就是本地的dat文件,就是文本文件格式。

 

有兩個屬性要設置:

select next row:

update value on:

 

我上面的logID,因爲要每個vuser有一個獨立的logID,並且在每次迭代中都是不變的,所以前者選擇Unique,後者選擇Once。

我上面的filename,因爲要每個vuser在每次迭代使用不同的文件,而vuser之間保持一致,所以前者選擇Sequential,後綴選擇Each iteration。 其實前者選random也是可以的,這樣vuser之間就不一致了。

 

 

 

 

 

 

 

發佈了53 篇原創文章 · 獲贊 4 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章