qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          LoadRunner FAQ

          web_concurrent_start和web_concurrent_end
            web_concurrent_start
            語法:
            int web_concurrent_start ( [char * ConcurrentGroupName,]NULL );
            參數:
            ConcurrentGroupName:可選的,并發組的標識符。
            NULL:參數列表結束的標記符。
            返回值:
            整型,返回LR_PASS (0)表示成功,返回LR_FAIL(1)表示失敗。
            web_concurrent_end
            語法:
            int web_concurrent_end ( reserved );
            參數:
            reserved:保留的供擴展的字段。
            返回值
            整型。返回LR_PASS (0)表示成功,返回LR_FAIL(1)表示失敗。
            說明
            web_concurrent_start函數是并發組開始的標記。web_concurrent_end,并發組結束的標記。在并發組中的函數不是立即執行的。在并發組開始時,所有的函數首先被記錄下來,當并發組結束時,所有的函數并發執行。腳本執行時,碰到 web_concurrent_end函數時,開始并發執行所有記錄的函數。
            在并發組中,可以包含的函數有:web_url、web_submit_data、web_custom_request、web_create_html_param、web_create_html_param_ex、web_reg_save_param、web_add_header。
            URL-based 方式將每條客戶端發出的請求錄制成一條語句,對LoadRunner來說,在該模式下,一條語句只建立一個到服務器的連接,LoadRunner提供了web_concurrent_start和web_concurrent_end函數模擬HTML-based的工作方式
            LoadRunner變量
            Loadrunner變量分為局部變量和全局變量。
            1. 如何定義變量
            在Loadrunner腳本中變量必須在開頭聲明。比如說,在vuser_init、Action、vuser_end定義變量,必須現在最頂端生命,后面才能使用。如果不這樣,編譯器是通不過的。
            2. 局部變量
            就像C語言一樣,變量有作用域范圍,局部變量包含在函數或者vuser_init、Action、vuser_end內部,對于其他范圍之外就不起作用了。
            3. 全局變量
            若要跨越vuser_init、Action、vuser_end定義變量,則需要定義全局變量。在Loadrunner的腳本錄制時,會生成一個globals.h文件,在這里定義的變量相當于Loadrunner腳本的全局變量,可以在vuser_init、Action、vuser_end中被使用。例子:
          #ifndef _GLOBALS_H
          #define _GLOBALS_H
          //-------------------------------------------------------------------
          // Include Files
          #include "lrun.h"
          #include "web_api.h"
          #include "lrw_custom_body.h"
          //定義全局變量char * str="This is a test";
          //-------------------------------------------------------------------
          // Global Variables#endif // _GLOBALS_H
           LR中參數的定義和賦值
            1.參數的賦值和取值
            lr_save_string("hello world","param");
            lr_eval_string("{param}");
            2.變量到參數
          int x;
          char *y;
          y="hello";
          x=10;
          lr_save_int(x,"param");
          lr_save_string(y,"param1");
          lr_eval_string("{param}");
          lr_eval_string("{param1}");
            3.變量讀參數
          char x[100];
          x="{param}";
          lr_save_string("hello world","param");
          lr_eval_string(x);
            LR中文件下載模擬
          Action()
          {
          //定義一個整型變量保存獲得文件的大小
          int flen;
          //保存文件句柄
          long filedes;
          //保存文件路徑及文件名
          char file[256]="/0";
          //定義一個隨機數
          char * strNumber;
          //Returns the string argument after evaluating embedded parameters.
          strNumber=lr_eval_string("{RandomNum}");
          //將路徑保存到file變量中
          strcat(file,"D://Excel//");
          //將獲得的隨機數拼接在file變量之后
          strcat(file,strNumber);
          //將下載的文件后綴名.rar拼接在file變量之后
          strcat(file,".rar");
          //到此為止一個LoadRunner已經獲得了一個完整的文件名
          //設置參數的最大長度,注意該值必須大于文件的大小
          web_set_max_html_param_len("20000");
          //使用關聯函數獲取下載文件的內容,在這里不定義左右邊界,獲得服務器響應的所有內容
          web_reg_save_param("fcontent",
          "LB=",
          "RB=",
          "SEARCH=BODY",
          LAST);
          lr_start_transaction("下載幫助文件");
          //發送下載幫助文件的請求
          web_url("DownLoadServlet",
          "URL=https://testserver3/servlet/DownLoadServlet?filename=help",
          "Resource=1",
          "RecContentType=application/x-msdownload",
          "Referer=",
          "Snapshot=t41.inf",
          LAST);
          //獲取響應中的文件長度
          flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
          if(flen > 0)
          {
          //以寫方式打開文件
          if((filedes = fopen(file, "wb")) == NULL)
          {
          lr_output_message("打開文件失敗!");
          return -1;
          }
          //寫入文件內容
          fwrite(lr_eval_string("{fcontent}"), flen, 1, filedes);
          //關閉文件
          fclose(filedes);
          }
          lr_end_transaction("下載幫助文件",LR_AUTO);
          return 0;
          }
            如何進行數據的關聯
            VuGen提供二種方式幫助您找出需要做關聯(correlation)的值:
            1. 自動關聯
            2. 手動關聯
            自動關聯
            VuGen內建自動關聯引擎(auto-correlationengine),可以自動找出需要關聯的值,并且自動使用關聯函數建立關聯。有兩種方式:
            RuleCorrelation
            可以在【RecordingOptions】>【InternetProtocol】>【Correlation】中啟用關聯規則,則當錄制這些應用系統的腳本時,VuGen會在腳本中自動建立關聯。

          您也可以在【RecordingOptions】>【InternetProtocol】>【Correlation】檢視每個關聯規則的定義。
            請依照以下步驟使用RuleCorrelation:
            1. 啟用auto-correlation
            1) 點選VuGen的【Tools】>【RecordingOptions】,開啟【RecordingOptions】對話窗口,選取【InternetProtocol】>【Correlation】,勾選【Enablecorrelation during recording】,以啟用自動關聯。
            2) 假如錄制的應用系統屬于內建關聯規則的系統,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,請勾選相對應的應用系統。
            3) 或者也可以針對錄制的應用系統加入新的關聯規則,此即為使用者自訂的關聯規則。
            2. 錄制腳本
            開始錄制腳本,在錄制過程中,當VuGen偵測到符合關聯規則的數據時,會依照設定建立關聯,您會在腳本中看到類似以下的腳本,此為BroadVision應用系統建立關聯的例子,在腳本批注部分可以看到關聯前的數據為何。
            3. 執行腳本驗證關聯是OK的。
            CorrelationStudio
            當錄制的應用系統不屬于VuGen預設支持的應用系統時,RuleCorrelation可能既無法發揮作用,這時可以利用CorrelationStudio來做關聯。
            CorrelationStudio會嘗試找出錄制時與執行時,服務器響應內容的差異部分,藉以找出需要關聯的數據,并建立關聯。
            使用CorrelationStudio的步驟如下:
            1. 錄制腳本并執行
            2. 執行完畢后,VuGen會跳出下面的【ScanAction for Correlation】窗口,詢問您是否要掃描腳本并建立關聯,按下【Yes】按鈕。
            3. 掃描完后,可以在腳本下方的【CorrelationResults】中看到掃描的結果。
            4. 檢查一下掃瞄的結果后,選擇要做關聯的數據,然后按下【Correlate】按鈕,一筆一筆做,或是按下【CorrelateAll】讓VuGen一次就對所有的數據建立關聯。
            注意:由于CorrelationStudio會找出所有有變動的數據,但是并不是所有的數據都需要做關聯,所以不建議您直接用【CorrelateAll】。
            5. 一般來說,您必須一直重復步驟1~4直到所有需要做關聯的數據都找出來為止。因為有時前面的關聯還沒做好之前,將無法執行到后面需要做關聯的部份。
            手動關聯
            手動關聯的執行過程大致如下:
            1. 使用相同的業務流程與數據,錄制二份腳本
            2. 使用Diff工具比較一下生成的Action.c,找出需要關聯的數據
            3. 使用web_reg_save_param函數手動建立關聯
            4. 將腳本中有用到關聯的數據,以參數取代
            注意動態數據不能放在vuser_init.c文件中。不是所有的差異處都要關聯的,WEB_URL()等方法的參數列表的先后順序是沒關系的,思考時間當然也可以不同。
            LR的檢查點設置
            常用檢查點函數如下:
            1)web_find()函數用于從 HTML 頁中搜索指定的文本字符串;
            2)web_reg_find()函數注冊一個請求,以在下一個操作函數(如 web_url)檢索到的HTML網頁上搜索指定的文本字符串;
            3)web_image_check()函數用于從HTML頁面中查找指定的圖片;
            4)web_global_verfication()屬于注冊函數,注冊一個在web頁面中搜索文本字符串的請求,與web_reg_find只在下一個Action函數中執行搜索不同的是它在之后所有的Action類函數中執行搜索指定的文本字符串;
            下面分別介紹以上函數的用法:
            1、web_find()函數參數舉例:
            web_find("web_find","RighOf=a","LeftOf=b","What=name",LAST);
            參數解釋:"web_find"定義該查找函數的名稱;“LeftOf”和“RighOf=”用來定義查找字符的左右邊界;“What=”定義查找內容;
            例如上述參數舉例中的意思就是在頁面中查找左邊界為b,右邊界為a,內容為name的信息;
            使用該函數注意事項:該函數是在查找頁面中的內容,所以要放在要查找的內容的后面;該函數只能在基于HTML模式錄制的腳本中進行查找
            注意事項:使用該函數時,要在Vuser->Run-Tme Settings中更改下設置
            勾選Enable Image and text check
            系統默認是不勾選該選項的。
            2、web_reg_find()函數參數舉例:
            web_reg_find("Search=Body","SaveCount=ddd","Test=aaa",LAST);
            參數解釋: Search用來定義查找范圍,SaveCount定義查找計數變量名稱,該參數可以記錄在緩存中查找內容出現的次數,可以使用該值,來判斷要查找的內容是否被找到;
            例如上述參數舉例中的意思就是Body中查找內容為aaa的信息,并將出現次數記錄在變量ddd中;
            【代碼一:web_reg_find("Text=PaymentDetails",LAST);
            代碼思路:1.“Payment Details” 為你要檢查的文本;
            2. 腳本執行到此處,若在頁面上找到了這幾個字符串,那腳本繼續執行下去;若沒有找到,腳本將在此報錯并且結束。
            3、web_image_check()函數參數說明:
            web_image_check("web_image_check","Alt=","Src=",LAST);
            參數解釋:“Alt”和“Src”的值直接取該圖片在網頁源代碼中相應參數的值;
            注意事項:使用該函數時,要在Vuser->Run-Tme Settings中勾選Enable Image and text check,具體操作請看web_find()中的注意事項。
            插入函數的方法
            1、 手工寫入,在需要插入函數的位置手工寫入該函數;
            2、 光標停留在要插入函數的位置,在INSERT菜單中,選擇new step,在列表中選擇或查找要插入的函數,根據提示填寫必要的參數;
            3、 在tree view模式下,在樹狀菜單中選中要插入函數的位置,右鍵,選擇insert after或insert before,根據提示填寫必要的參數;
            總結:
            1、 這兩個函數函數類型不同,WEB_FIND是普通函數,WEB_REG_FIND是注冊函數;
            2、 WEB_FIND使用時必須開啟內容檢查選項,而WEB_REG_FIND則不沒有此限制;
            3、 WEB_FIND只能用在基于HTML模式錄制的腳本中,而WEB_REG_FIND沒有此限制;
            4、 WEB_FIND是在返回的頁面中進行內容查找,WEB_REG_FIND是在緩存中進行查找;
            5、 WEB_FIND在執行效率上不如WEB_REG_FIND;
            使用web_concurrent_start報錯
            錄制方式選的是HTML-based script,改為url-based script就可以了。該函數不支持HTML-based script方式。
            LR中的腳本變量聲明報錯
            Loadrunner使用的是C語言的語法。腳本中變量必須在開頭聲明。比如說,在Vuser_init、Action、Vuser_end定義變量,必須現在最頂端生命,后面才能使用。如果不這樣,編譯器是通不過的。

          posted on 2014-04-15 11:01 順其自然EVO 閱讀(272) 評論(0)  編輯  收藏 所屬分類: loadrunner

          <2014年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 年辖:市辖区| 远安县| 青铜峡市| 彩票| 日土县| 扶风县| 太和县| 九龙城区| 新建县| 团风县| 尉犁县| 慈溪市| 华容县| 沁阳市| 永寿县| 大竹县| 吴桥县| 津市市| 靖西县| 长葛市| 新宾| 周至县| 南川市| 金山区| 南康市| 车险| 凯里市| 奈曼旗| 乌什县| 定日县| 天镇县| 长顺县| 额尔古纳市| 吉林市| 平果县| 阿拉善盟| 吉水县| 桂阳县| 稻城县| 岗巴县| 托里县|