qileilove

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

          如何用好LoadRunner中的檢查點

          如何用好LoadRunner中的檢查點
          轉自:領測軟件測試網[http://www.ltesting.net]
          原文鏈接:http://www.ltesting.net/ceshi/ceshijishu/rjcsgj/mercury/loadrunner/2012/0120/203946.html

          如何用好LoadRunner中的檢查點LR中檢查點有兩種:圖片和文字。 常用檢查點函數如下: 1)web_find()函數用于從 HTML 頁中搜索指定的文本字符串; 2)web_reg_find()函數注冊一個請求,以在下一個操作函數(如 web_url)檢索到的HTML網頁上搜  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=Payment Details",LAST);

           

            代碼思路:1.“Payment Details” 為你要檢查的文本;

            2. 腳本執行到此處,若在頁面上找到了這幾個字符串,那腳本繼續執行下去;若沒有找到,腳本將在此報錯并且結束。】

            【代碼二:web_reg_find("Text=Payment Details", "SaveCount=para_count", LAST); //check 的函數

            web_submit_form("reservations.pl_2", //要check的頁面的錄制時的代碼

            "Snapshot=t22.inf",


            ITEMDATA,

            "Name=outboundFlight", "Value=003;0;06/23/2007", ENDITEM,

            "Name=reserveFlights.x", "Value=61", ENDITEM,


            "Name=reserveFlights.y", "Value=2", ENDITEM,

            LAST);

           

            if (atoi(lr_eval_string("{para_count}"))>0) //驗證是否找到了頁面上的要檢查的字符串

            lr_output_message("we find the string!");

            else

           

            lr_output_message("sorry,don't find the string!");

            代碼思路:1.“Payment Details” 為你要檢查的文本;

            2. 腳本執行到此處,不管頁面上是否存在你要檢查的字符串,腳本都不會報錯,而是執行下去。

            3. 此段代碼將找到的你要檢查的字符串的個數,存為一個參數。 然后在頁面代碼的后面,通過檢查這個參數的值是否大于0,來判斷是否找到了你所要檢查的字符串。】

            【代碼三:


            A. web_reg_find("Text=Payment Detdils", "Fail=NotFound",LAST);或

            B. web_reg_find("Text=Payment Detdils", "Fail=Found",LAST);


            代碼思路:


            1.“Payment Details” 為你要檢查的文本;


            2. 若是A代碼:腳本執行到此處,若沒有找到check的字符串,腳本將FAIL, 并且停止執行下去。反之,則一直執行下去。

            3. 若是B代碼:腳本執行到此處,若找到check的字符串,腳本將FAIL, 并且停止執行下去。反之,則一直執行下去】

           

            使用該函數注意事項:該函數是在緩存中查找相應的內容,所以要放在查找內容之前;通常情況下寫在如下六個函數之前:Web_castom_request(); web_image(); web_link(); web_submit_data(); web_submit_form(); web_url();

            使用技巧:在該函數的參數中有個“SaveCount”,該參數可以記錄在緩存中查找內容出現的次數,我們可以使用該值,來判斷要查找的內容是否被找到,下面舉個例子來說明:(引用LR的幫助中的例子)


            // Run the Web Tours sample

           

            web_url("MercuryWebTours",

            "URL=http://localhost/MercuryWebTours/",

            "Resource=0",

           

            "RecContentType=text/html",

            "Referer=",

           

            "Snapshot=t1.inf",

           

            "Mode=HTML",

           

            LAST);

           

            // Set up check for successful login by looking for "Welcome"

            web_reg_find("Text=Welcome",

            "SaveCount=Welcome_Count",


            LAST);

            // Now log in

            web_submit_form("login.pl",

            "Snapshot=t2.inf",

          轉自:領測軟件測試網[http://www.ltesting.net]


          ITEMDATA, Name=username, Value=jojo, ENDITEM, Name=password, Value=bean, ENDITEM, Name=login.x, Value=35, ENDITEM, Name=login.y, Value=14, ENDITEM, LAST); // Check result if (atoi(lr_eval_string({Wel
            ITEMDATA,

            "Name=username", "Value=jojo", ENDITEM,

            Name=password", "Value=bean", ENDITEM,

            "Name=login.x", "Value=35", ENDITEM,

           

            "Name=login.y", "Value=14", ENDITEM,


            LAST);


            // Check result

            if (atoi(lr_eval_string("{Welcome_Count}")) > 0){ //判斷如果Welcome字符串出現次數大于0


            lr_output_message("Log on successful."); }//在日志中輸出Log on successful

            else{ //如果出現次數小于等于

            lr_error_message("Log on failed"); //在日志中輸出Log on failed


            return(0); }


            我覺得這個方法非常有用,我們可以舉一反三,應用到我們實際的項目

            注:在錄制過程中添加的檢查點,用到的函數是web_reg_find(),且參數只有“Text=”

            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()中的注意事項。


            經過測試,該函數用到查找內容前面或后面,都不影響查找結果。

           

            舉例說明(腳本)

            該腳本記錄的是登陸系統后退出的操作,在腳本中用到atoi()函數和lr_eval_string(”{SaveCount定義的變量}”)兩個函數結合使用,判斷查找內容出現的次數是否大于0,若大于0,則輸入登錄成功的信息。

           

            vuser_init()


            {

            web_url("xjcost",


            "URL=http://gczj-server8:9205/xjcost/",

           

            "Resource=0",

            "RecContentType=text/html",


            "Referer=",

            "Snapshot=t1.inf",


            "Mode=HTML",

           

            EXTRARES,


            "Url=jsp/images/index/index.swf", ENDITEM,

           

            "Url=jsp/images/index/xxfb2.gif", ENDITEM,

           

            "Url=jsp/images/index/ywpt2.gif", ENDITEM,

           

            LAST);

           

            web_url("userAction.struts",

           

            "URL=http://gczj-server8:9205/xjcost/userAction.struts?actionType=reLogin",


            "Resource=0",

            "RecContentType=text/html",

           

            "Referer=",

            "Snapshot=t2.inf",

            "Mode=HTML",


            LAST);

            return 0;

            }

            Action()

           

            {

            lr_start_transaction("Log_on");


            lr_rendezvous("Log_on");

           

            web_add_cookie("userAccount=admin; DOMAIN=gczj-server8");

           

            web_reg_find("Text=歡迎您",

            "SaveCount=歡迎您_Count",


            LAST);

           

            web_image_check("web_image_check",

            "Src=/xjcost/jsp/images/index1/edit_01.gif",

            LAST);

           

            web_submit_data("userLogin.struts",

            "Action=http://gczj-server8:9205/xjcost/userLogin.struts?actionType=userLogin",


            "Method=POST",

            "RecContentType=text/html",

            "Referer=http://gczj-server8:9205/xjcost/userAction.struts?actionType=reLogin",

           

            "Snapshot=t3.inf",

            "Mode=HTML",

           

            ITEMDATA,

            "Name=userAccount", "Value=admin", ENDITEM,

            "Name=pwd", "Value=1111", ENDITEM,


            EXTRARES,

            "Url=jsp/images/index1/edit_01a.gif", "Referer=http://gczj-server8:9205/xjcost/userLogin.struts?actionType=userLogin", ENDITEM,

            LAST);


            web_find("web_find",

            "What=歡迎您",

            LAST);

           

            lr_end_transaction("Log_on",LR_AUTO);

            //檢查是否登錄成功


            //如果“歡迎您”這個字符出現次數大于0,輸出“Log on successfully!”

            if(atoi(lr_eval_string("{歡迎您_Count}"))>0)


            lr_output_message("Log on successfully!");


            else

            lr_error_message("Log on failed!");


            return 0;

           

            return 0;

            }

            //atoi()函數的作用是將一個ASCII字符串轉換為整型

            //lr_eval_string()函數作用是取得參數值,將字符串變量中的參數值替換為當前的參數值并將這個字符串返回

           

            vuser_end()


            {

            lr_think_time(4);

           

            web_url("userAction.struts_2",


            "URL=http://gczj-server8:9205/xjcost/userAction.struts?actionType=reLogin",

           

            "Resource=0",


            "RecContentType=text/html",

           

            "Referer=",


          轉自:領測軟件測試網[http://www.ltesting.net]
          原文鏈接:http://www.ltesting.net/ceshi/ceshijishu/rjcsgj/mercury/loadrunner/2012/0120/203946_2.html

           

          Snapshot=t4.inf, Mode=HTML, LAST); return 0; } Global.h: #ifndef _GLOBALS_H #define _GLOBALS_H //-------------------------------------------------------------------- // Include Files #include lrun.h
            "Snapshot=t4.inf",

            "Mode=HTML",

            LAST);

           

            return 0;

           

            }

           

            Global.h:


            #ifndef _GLOBALS_H

            #define _GLOBALS_H

            //--------------------------------------------------------------------

            // Include Files

           

            #include "lrun.h"

           

            #include "web_api.h"

            #include "lrw_custom_body.h"

            //--------------------------------------------------------------------

            // Global Variables

           

            #endif // _GLOBALS_H


            Replay Log常見信息說明

           

            1、web_find()和web_image_check()函數的日志信息(這兩個日志信息實際上是一樣的,只是輸出的函數名和參數不同)

           

            1)信息1Action.c(22): Verification checks not enabled. web_image_check is skipped. See the 'Run-time settings/Preferences/Checks'


            [MsgId: MMSG-27197]

           

            Action.c(22): web_image_check was successful


            [MsgId: MMSG-26392]


            出現該信息,說明沒有勾選Enable Image and text check

           

            2)信息2Action.c(22): "web_image_check" succeeded (1 occurrence(s) found. Alt="", Src="/xjcost/jsp/images/index1/edit_01.gif")

            [MsgId: MMSG-27192]


            Action.c(22): web_image_check was successful

           

            [MsgId: MMSG-26392]

           

            出現該信息,說明檢查點設置成功,且已經查找到信息

            3)信息3Action.c(22): Error -27191: "web_image_check" failed (0 occurrence(s) found. Alt="", Src="/xjcost/jsp/images/index1/edit_1.gif")

            [MsgId: MERR-27191]


            Action.c(22): web_image_check highest severity level was "ERROR"

           

            [MsgId: MMSG-26391]

            出現該信息,說明要查找的內容沒有找到。這時依次嘗試以下操作:

           

            (1)檢查參數的信息是否寫錯;

            (2)如果是web_find(),檢查函數的位置是否在要查找內容的后面;

           

            (3)如果是web_image_check(),查看該圖片的源代碼,看其是否是這個頁面上的圖片,很可能是圖片選擇錯誤,即所選圖片不屬于該頁面。


            2、web_reg_find()函數的日志信息


            1)信息1Action.c(15): Registering web_reg_find was successful

           

            [MsgId: MMSG-26390]

            出現該信息,說明內容已查找到


            2)信息2Action.c(27): Error -26366: "Text=ABC" not found for web_reg_find

            [MsgId: MERR-26366]

           

            Action.c(27): web_submit_data("userLogin.struts") highest severity level was "ERROR", 18364 body bytes, 918 header bytes, 13 chunking overhead bytes

            [MsgId: MMSG-26387]

           

            該信息在replay log頁面是紅色顯示的,說明沒有找到內容,出現此情況嘗試以下兩個操作:

            (1)參數的信息是否正確;

           

            (2)查看該函數是否在查找內容的前面。


            插入函數的方法:

            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;


          轉自:領測軟件測試網[http://www.ltesting.net]
          原文鏈接:http://www.ltesting.net/ceshi/ceshijishu/rjcsgj/mercury/loadrunner/2012/0120/203946_3.html


          原文鏈接:http://www.ltesting.net/ceshi/ceshijishu/rjcsgj/mercury/loadrunner/2012/0120/203946.html

          posted on 2012-01-25 22:18 順其自然EVO 閱讀(2736) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2012年1月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 芒康县| 阿巴嘎旗| 松原市| 河北区| 淅川县| 米泉市| 泰和县| 自贡市| 麻栗坡县| 抚远县| 郎溪县| 东台市| 寿宁县| 伊川县| 铁力市| 大洼县| 常熟市| 大宁县| 偏关县| 麦盖提县| 岳普湖县| 大洼县| 平武县| 信丰县| 嘉义市| 东方市| 依安县| 广汉市| 周宁县| 镇坪县| 丹东市| 遂宁市| 融水| 射阳县| 株洲县| 垫江县| 邻水| 新兴县| 墨玉县| 延长县| 喀什市|