1. 程式人生 > >LoadRunner學習---腳本編寫(4)(比較重要)

LoadRunner學習---腳本編寫(4)(比較重要)

用戶 變量 php roots 正則 ase src bar 分析

LoadRunner學習---腳本編寫(4)(比較重要)

今天接著來翻譯http://www.wilsonmar.com/中關於LoadRunner腳本編寫部分,下面該翻譯腳本編寫中一些比較重要的部分了。

Web用戶Action

在VuGen中,腳本產生的默認模式是基於HTML的--“描述用戶的動作的腳本”直接與用戶的動作是對應的:

*web_url是瀏覽器地址欄的URL.

*web_link是點擊在<ahref= ...>和<a>之間的文本超鏈接。

*web_image是點擊HTML的<imghref= link.

*web_submit_form

是在前面操作的上下文中的GET或PUT表單上點“提交”--可能前面的操作被VuGen在基於HTML模式下錄制下來了。

*web_submit_data是在GET或PUT表單上點“提交”,而沒有帶前面操作的上下文--可能是在基於URL模式下錄制,或者是基於HTML模式,並且選擇了“A scrīpt containing explicit URLs only”選項。

不用HTML產生的資源是.gif和.jpg圖片。資源屬性的列表只能當對這些資源的路直選項設置成“Record within the current scrīpt step”時被插入。這也是默認的設置。

如果你在“Tools > Internet Procotol > Recording”中選擇“a scrīpt containing explicit URLs only”,這將會產生URL-based的

腳本錄制,只使用web_url和web_submit_data函數,將不會使用 web_link 和 web_image函數,或包含在 applets, XML, ActiveX或javascrīpt中的非HTML元素。

技術分享在進行下一頁錄制之前(如點擊鏈接或者圖標),暫停錄制,把該頁屏幕的標題拷貝下來粘貼到註釋中。錄制完成之後,這將會在後面的給事務命名上用到。

技術分享在每一個頁面顯示之後,暫停錄制,把決定是否是期望頁的文本拷貝下來,粘貼到註釋中。錄制完成之後,這將會用到文本驗證檢查點的腳本編寫中。

錄制中產生的各種信息都保存在RecordingLog.txt文件中,刪除它不會對腳本的回放產生影響。

額外錄制的Action腳本

錄制腳本的時候,當瀏覽器沒有安裝SSL根證書的時候,會捕獲的下面這些代碼行。這個信息意思是“這個證書不能被信任證書驗證”。

web_url("authrootseq.txt",

      "URL=http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootseq.txt",

      "Resource=1",

      "RecContentType=text/plain",

      "Referer=",

      LAST);

web_url("authrootstl.cab",

      "URL=http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab",

      "Resource=1",

      "RecContentType=application/octet-stream",

      "Referer=",

    LAST);
    錄制腳本的時候,但瀏覽器遇到Macromedia flash組件的時候,會產生下面的代碼行:
      web_url("version_en_win_ax.xml",
        "URL=http://fpdownload.macromedia.com/pub/flashplayer/update/current/xml/version_en_win_ax.xml",

        "Resource=0",

        "RecContentType=text/html",

        "Referer=",

        "Snapshot=t8.inf",

        "Mode=HTML",

      LAST);
    如果你安裝有Google Toolbar,即使你沒有訪問Google,也會錄制上發到Google的請求。
    腳本語言規則:
    在LoadRunner中,大小寫是敏感的,甚至在被檢驗的值中。所以上面的腳本會因為大寫字母的原因,不會識別“Welcome”的。所以Steve Cheney 建議使用“ic”忽略大小寫的文字標誌:
      web_reg_find("
Text/ic
      =Welcome",
LAST
    );
技術分享
      括號裏的參數包含了
LAST
    是為了指定最後的一個參數。這樣做是很方便的,因為上面的例子漏掉了一個指定期望是“found”還是“notfound”的屬性。默認是“found”,所有我經常忽略它。
    另一個文本標誌是“/BIN”用來指定是二進制的字符集。例如,查找“Adams”:
      web_reg_find("Text/BIN=\\x00A\\x00d\\x00a\\x00m\\x00s",
LAST
    );
技術分享
    註意兩個反斜杠,一個是轉義字符,代表是使用了一個符號。如果錯誤的只使用一個反斜杠,LR會認為它是一個空的終止。
      下面的例子腳本是在UTF8服務器上支持獲得newquoteuid為UTF-16編碼。因為LoadRunner中,UTF16編碼的“Red”用ASCII是 R\x00e\x00d\
x00 這樣的,
    所以需要把它保存到buffer中。
lr_eval_string_ext
      ("{newquoteuid_temp}",

      strlen("{newquoteuid_temp}") + 2,

    &Buf, &BufLen, 0, 0, -1);
    對字符數組變量NewBuf使用lr_save_var函數來去掉額外的填充(x00):
      for (i=0; i if (Buf[i]!=0) NewBuf[NewBufLen++]=Buf[i];

lr_save_var
    (NewBuf, NewBufLen-1, 0, "newquoteuid");
    註:lr_save_var 需要四個參數(不需要使用LAST)
    1.param_value 參數值
    2 value_len 參數的長度。
    3 options 參數的選項,一般為0
    4。param_name 參數名稱
    LoadRunner 7.8不支持正則表達式,但是有他自己的通配符:
    為了使任何[0-9] 的數字在指定的數字位置,使用/DIG做標誌:
      web_reg_save_param("pSer","LB
/DIG
      =Serial XXX-
###
    -ZZZZ","RB=\r\n", LAST );
    有三種使用^做通配符的方法:
    * 忽略大小寫,並且允許在指定的字符位置使用任意字符:
web_reg_find("Text/ALNUMIC=^ercury", LAST); * 允許任何小寫字符[a-z] 在指定位置: web_reg_find("Text/ALNUMLC=^ercury", LAST); * 允許任何大寫字符[A-Z]在指定的字符位置: web_reg_find("Text/ALNUMUC=^ercury", LAST); 把一個字符串變成大寫:strupr()錯誤信息: 請添加一些其他的錯誤信息來幫助其他人:

Could not resolve address of host ... [MsgId: MERR-27798]

如果網絡不能用或者域沒有註冊的話,顯示一個404的DNS錯誤

Contents unexpectedly not in cache. [MsgId: MERR-26549]

當一個文件為空時會顯示該錯誤。在空文件中添加空格來滿足LoadRunner的錯誤檢查。BTW,因為當創建的iframe沒有文件時,IE會產生一個錯誤,這樣就指定了一個空文件。

事務時間腳本編寫:

技術分享我更喜歡給一個action命名事務,而不是一個結果頁面。

lr_start_transaction("00.1 Invoke URL");
...
lr_end_transaction("00.1 Invoke URL",LR_AUTO);
...
lr_start_transaction("01.2 Top menu");
...
lr_end_transaction("01.2 Top menu",LR_AUTO);

lr_start_transaction("02.0 Updating");

      lr_start_sub_transaction("02.1 Update menu","02.0 Updating");

      web_url( ...

      lr_end_sub_transaction("02.1 Update menu",LR_AUTO);

      lr_start_sub_transaction("02.2 Update submit","02.0 Updating");

      web_submit_form( ...

      lr_end_sub_transaction("02.2 Update submit",LR_AUTO);

      lr_start_sub_transaction("02.3 Update OK","02.0 Updating");

      web_url( ...

    lr_end_sub_transaction("02.3 Update OK",LR_AUTO);


lr_end_transaction("02.0 Updating",LR_AUTO);

技術分享我喜歡在一個層次結構中使用0填充的事務名稱,這樣來確保控制器能夠正確的給事務排序。

技術分享我對不同類型的action上的事務名稱上加不同的關鍵字
  • ContactLink= Click "Contact" link on Menu
  • ContactIcon= Click "Contact" Icon
  • Regis.Sub= Page Submit
  • OK= Pop-up dismiss with OK

事務名可以是變量,但是它只能被VuGen作為字符串來編譯,不能在控制器的接口中顯示。無論如何,他們會顯示在分析結果文件中。

對於web腳本,LR自動創建和決定事務的的持續時間,但是C語言腳本可以使用這些函數:

使用lr_start_transaction_instance函數來顯式獲得指定事務實例的句柄,事務名稱在函數lr_user_data_point_instance或lr_user_data_point_instance_ex中使用。

使用 lr_start_sub_transaction在一個事務中來操作思考時間和消耗的時間。

好了,腳本編寫部分基本已經翻譯了一半了,該睡覺了,下面會接著翻譯檢查點,操作字符串,從流中獲得數據,參數化,如何使用文件,關聯,集合點等,內容還是很多的。哈哈

轉自:http://www.51testing.com/html/66/34866-70224.html

LoadRunner學習---腳本編寫(4)(比較重要)