2008年8月1日

              在近期的某性能測試項目中,使用LR 11做測試,遇到了一個問題:在錄制的腳本中,許多請求都帶有EXTRARES,如:
               web_submit_data("clientlog.jspx_23", 
          "Action=https://gaa-ad.pp2.shanghaionstar.com:8101/Advisor/faces/xAdvisorWeb/bundles/gaacommon/jsf/clientlog.jspx?message=Alerts%20refresh%20completed&clientTime=1466056941075", 
          "Method=POST", 
          "RecContentType=text/html", 
          "Referer=https://gaa-ad.pp2.shanghaionstar.com:8101/Advisor/xAdvisorWeb/desktop/desktop.jsp", 
          "Snapshot=t57.inf", 
          "Mode=HTML", 
          ITEMDATA, 
          EXTRARES, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1712&y=854&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1713&y=854&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1715&y=854&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1714&y=854&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1712&y=855&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1713&y=855&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1714&y=855&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1715&y=855&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1712&y=856&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1713&y=856&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1714&y=856&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1715&y=856&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1712&y=857&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1713&y=857&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1714&y=857&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1715&y=857&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1712&y=858&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1713&y=858&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1714&y=858&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1715&y=858&z=11", "Referer=", ENDITEM, 
          LAST);
               這些EXTRARES資源請求實際上是在上一個頁面請求時發起,并通過異步的方式返回的一些地圖數據。由于在錄制腳本的過程中,上一步操作未能等到這些數據全部返回便開始了下一步的操作,因此在隨后的腳本中,LR將這些請求作為EXTRARES
          資源附在了這些請求之后。如此一來就造成了一個問題:這些請求的響應時間變長,但對于真實的用戶而言,這些請求的響應時間卻并沒有那么長(因為這些地圖數據在后臺加載,用戶感受不到)。表面上看來,似乎LR測試得到的結果與實際“不一致”了。而另一方面,這些資源請求又是真實存在的,對于服務器產生了壓力,所以也不能簡單粗暴地直接在腳本中去掉。
              最后,我們采取的辦法是:將這些地圖數據的加載單獨寫成一個web_url,使它對服務器產生真實的負載,并把它放在定義的事務之外。腳本如下:
               web_url("map",
          "URL=http://10.16.93.182:22002/maptile/maptile?x=1711&y=854&z=11",
          EXTRARES, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1711&y=854&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1712&y=854&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1713&y=854&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1714&y=854&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1715&y=854&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1711&y=855&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1712&y=855&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1714&y=855&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1713&y=855&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1715&y=855&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1711&y=856&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1712&y=856&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1713&y=856&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1714&y=856&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1715&y=856&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1711&y=857&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1712&y=857&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1713&y=857&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1714&y=857&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1715&y=857&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1711&y=858&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1712&y=858&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1713&y=858&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1714&y=858&z=11", "Referer=", ENDITEM, 
          "Url=http://10.16.93.182:22002/maptile/maptile?x=1715&y=858&z=11", "Referer=", ENDITEM, 
          LAST);
              同時,將后續腳本中的EXTRARES資源請求刪除。

              這樣一來,就既模擬了服務器端真實的負載場景,又避免了客戶端實際響應時間不一致的問題。
                   


          posted @ 2016-07-08 12:54 xingcyx 閱讀(1405) | 評論 (0)編輯 收藏
           
          LoadRunner 12錄制的腳本在LoadRunner 11的controller上無法運行,提示該VUSER類型沒有license。
          原因:LR12的VUSER type是Mobile。
          解決方法:
          用文本編輯器打開腳本的.usr文件,如03_HandEmergencyCall.usr,
          AdditionalTypes=Mobile
          ActiveTypes=Mobile
          GenerateTypes=Mobile
          RecordedProtocols=
          修改為:
          AdditionalTypes=QTWeb
          ActiveTypes=QTWeb
          GenerateTypes=QTWeb
          RecordedProtocols=QTWeb
          posted @ 2016-06-30 15:17 xingcyx 閱讀(1596) | 評論 (0)編輯 收藏
           
              大多數情況下,在LoadRunner的腳本中設置參數還是比較簡單的,但是正所謂人在江湖飄,哪能不挨刀?有的時候我們也會遇到一些特殊的情況,對腳本中的參數需要做一些特殊的處理。比如我最近在幾個項目的性能測試腳本編寫過程中,就遇到了這種情況。
              第一個項目其實是我同事遇到的。他們的系統報文中有一個參數的限制條件:要求必須是數字型,且長度為9位,如果不足9位,需要在后面補齊空格,而且還需要保證參數值唯一。我們暫且不去追究為啥這個系統會設置這么坑爹的一個限制,在這里的重點是說明在這樣的情況下,我們該如何去設置參數?由于這個系統要求參數值唯一,所以我首先想到的還是利用LoadRunner的參數類型去控制,因為只有這樣才能在并發的情況下,保證參數值的唯一性。
              總體思路攏共分三步:1、設置一個類型為unique number的參數類型,轉換為字符型;2、根據字符串的長度,補齊空格為9位;3、將字符串轉換為參數并替換
              具體的代碼如下:
              

          char str[10];
           int len;

           int num;
           int i;


          //獲取參數的長度 

           len=strlen(lr_eval_string("{old_param}"));

           
          num=9-len;


           strcpy(str,lr_eval_string("{old_param}"));

           for(i=1;i<=num;i++)
           {
            //在字符串后面加上空格
            strcat(str," ");
           }


          //轉換為參數
          lr_param_sprintf("new_param",str);


               第二個項目的情況相對比較好理解一些。要測試的是一個批量提交的業務,用戶在頁面上選擇10筆數據后,作為一個批次一起提交。需要參數化的參數有兩個:客戶編號(custid)和業務編號(loanid),需要從參數文件中每次取10個參數。并拼接成需要的報文格式,以逗號分隔開。做法與上一個項目大同小異,只不過這里的參數類型要設置成file型。需要注意的是,由于參數文件中的custid和loanid是一行一筆數據,而我們每次需要使用的是10筆數據,因此在update values那里需要設置成每次出現時更新參數值。


              代碼示例如下:
             //獲取批次的custid和loanid,每批次取10筆數據
           for (i=1;i<=9;i++)
           {
            strcpy(scustid,lr_eval_string("{custid}"));
            strcat(bat_custid,scustid);
             //custid間用“,”分隔
            strcat(bat_custid,",");

            strcpy(sloanid,lr_eval_string("{loanid}"));
            strcat(bat_loanid,sloanid);
            //loanid間用“,”分隔
            strcat(bat_loanid,",");
            
           }

           strcat(bat_custid,lr_eval_string("{custid}"));
           strcat(bat_loanid,lr_eval_string("{loanid}"));

           //轉換成LR的參數
           lr_param_sprintf("p_custid",bat_custid);
           lr_param_sprintf("p_loanid",bat_loanid);


              
          posted @ 2014-01-08 20:35 xingcyx 閱讀(3627) | 評論 (0)編輯 收藏
           
          軟件測試泰斗傳道解惑 Google軟件測試精髓完美呈現 《Google軟件測試之道》
          posted @ 2013-10-17 20:05 xingcyx 閱讀(996) | 評論 (0)編輯 收藏
           
               摘要: 參加公司管理培訓后的心得  閱讀全文
          posted @ 2009-09-29 16:35 xingcyx 閱讀(1595) | 評論 (2)編輯 收藏
           
               摘要: 昨天在試用QC的時候,雖然出現了一個小小的意外,但情況仍然在我的掌控之中。  閱讀全文
          posted @ 2009-03-12 12:13 xingcyx 閱讀(3473) | 評論 (1)編輯 收藏
           
               摘要: 降龍十八掌升級版。  閱讀全文
          posted @ 2009-02-19 14:58 xingcyx 閱讀(2476) | 評論 (3)編輯 收藏
           
               摘要: LambdaProbe 是一款強大的免費開源工具,LambdaProbe擁有幾乎所有Tomcat Manager的功能, 可以說是一個增強版本的 Tomcat Manager。除此之外,Tomcat Probe 還擁有很多讓開發者和系統管理者更方便的性能。從而使得Tomcat對開發者和管理者更加透明。  閱讀全文
          posted @ 2008-08-05 12:55 xingcyx 閱讀(5630) | 評論 (0)編輯 收藏
           
               摘要: 根據前天在群里和同行朋友的聊天記錄整理而寫成。由于這兩天工作比較忙,所以一直拖了2天才整理完畢。
          將各位朋友比作奸臣小人,實乃玩笑,請勿介意!^_^  閱讀全文
          posted @ 2008-08-01 22:41 xingcyx 閱讀(2646) | 評論 (7)編輯 收藏
           
          主站蜘蛛池模板: 阿拉善右旗| 隆安县| 江油市| 新干县| 贞丰县| 沿河| 北京市| 武陟县| 通化县| 科技| 岫岩| 革吉县| 广水市| 万载县| 桓仁| 铅山县| 花莲市| 玛纳斯县| 和政县| 惠州市| 叶城县| 乐业县| 河北省| 电白县| 扶风县| 大庆市| 阳江市| 平罗县| 大名县| 伊金霍洛旗| SHOW| 五大连池市| 青铜峡市| 朝阳区| 禄劝| 兰州市| 宣威市| 宁国市| 郸城县| 锡林浩特市| 太原市|