LoadRunner 測試腳本

LoadRunner是一個強有力的壓力測試工具。它的腳本能夠錄製生成,自動關聯;測試場景能夠面向指標,多方監控;測試結果能夠用圖表顯示,而且能夠拆分組合。 做爲專業的性能測試工具,經過模擬成千上萬的用戶對被測系統進行操做和請求,可以在實驗室環境中重現生產環境中可能出現的業務壓力,再經過測試過程當中獲取的信息和數據來確認和查找軟件的性能問題,分析性能瓶頸。 2.1 LoadRunner建立測試腳本 開發LoadRunner腳本須要通過圖2-1所示的幾個步驟。 在錄製腳本時要遵循如下錄製原則: 1.提升腳本執行效率 所錄製的腳本內容要精練,並且是用戶的真實操做,不可增長多餘或重複性的操做,這樣的腳本執行起來更能準確地模擬用戶的真實行爲,減小了執行時間,執行結果更準確。 2.錄製具備表明性的功能 在一個軟件中有不少不一樣的功能,但要錄製全部的功能幾乎是不可能的,因此要選擇經常使用的、使用頻率較高的業務功能來進行測試。 3.選擇具備影響的事務 測試人員要對被測功能具備必定的認識和了解,選擇一些對於整個測試過程當中有影響的事務來測試,不然測試結果是無心義的。 當啓動Visual User Generator後會出現選擇腳本類型的對話框,在此對話框中,請選擇咱們經常使用的腳本類型,也就是Web(HTTP/HTML)協議,這是最爲常見的。如下腳本介紹以此類型爲例。 2.1.1 錄製普通腳本 啓動Visual User Generator,在彈出的對話框中選擇須要新建的協議腳本,經過VuGen能夠採用單協議或多協議模式,進行腳本的錄製。選擇單協議仍是多協議,根據測試程序的實際須要而定。 1.選擇協議 採用單協議模式時,VuGen將只錄制指定的協議;採用多協議模式時,VuGen將錄製多個協議中的操做。下列協議支持多協議腳本:COM、 FTP、IMAP、Oracle NCA、POP三、RealPlayer、Window Sockets(原始)、SMTP和Web。「雙協議Web/Web Services」的引擎使用一種不一樣的機制,應視爲單協議,不能與其餘多協議類型結合使用。 各類Vuser類型之間的另外一個區別是多操做支持功能。大多數協議均可支持多個操做部分,如Oracle NCA、Web、RTE、General(C Vusers)、WAP、i-Mode 和VoiceXML等協議。 對於大多數Vuser類型,在每次錄製時都會新建一個Vuser腳本,而不能在現有腳本中進行錄製。可是,在錄製Java、CORBA-Java、 RMI- Java、Web、WAP、i-mode、Voice XML、Oracle NCA或RTE Vuser腳本時,能夠在現有腳本中進行錄製。 建立腳本時,單擊「New」(新建)打開「New Virtual User」(新建Vuser)對話框,該對話框可提供選擇錄製腳本協議的快捷方式。 (1)單協議腳本:建立單協議Vuser腳本,這是「Startup」(啓動)對話框打開時的默認選項。從Vuser生成器的「類別」中進行選擇,並選擇錄製腳本的協議,如圖2-2所示。 圖2-2 選擇單協議腳本 (2)多協議腳本:建立多協議Vuser腳本,VuGen將顯示全部可用的協議。選擇一個協議後,單擊右箭頭,將其移入「Selected Protocols」(選定的協議)部分中,如圖2-3所示。 圖2-3 選擇多協議腳本 (3)使用最近使用過的協議新建腳本:從最近建立腳本的協議中選擇已經使用過的協議,而且這些協議已經體現了錄製腳本類型,如圖2-4所示。 圖2-4 選擇最近使用的協議 2.開始錄製 假設須要測試的是Web應用,選擇「Web(HTTP/HTML)」協議,單擊「OK」按鈕肯定後,進入主窗體,如圖2-5所示。 圖2-5 錄製結果的主窗體 單擊工具欄中「Start Record」按鈕,根據錄製的對話框,輸入要測試程序的地址,開始進行錄製。經過「Vuser」菜單來啓動錄製腳本的命令,如圖2-6所示。 圖2-6 選擇錄製按鈕 也能夠在工具欄中直接單擊「Start Recording」按鈕,但錄製以前還要進行相應的設置,如圖2-7所示。 圖2-7 錄製配置界面 (1)環境設置 首先,勾選「Record the application startup」,單擊「OK」後,就會自動啓動要測試的程序,還能夠選擇要把錄製的腳本放到哪個部分,默認狀況下是「Action1」。 而後,單擊左下角的「Options」按鈕,進入錄製環境設置界面,如圖2-8所示。 ? 「Recording」標籤頁:默認狀況下選擇「HTML-based Script」,說明腳本中採用HTML頁面的形式,這種方式的Script腳本容易維護和理解,推薦用這種方式錄製。「URL-based Script」說明腳本中的表示採用基於URL的方式,WAS和ACT中的錄製方式就是這種,這種方式看上去比較亂。 其餘標籤頁功能說明以下,若有須要可做相應的設置。 ? 「Browser」標籤頁:瀏覽器的選擇。 ? 「Recording Proxy」標籤頁:瀏覽器上的代理設置。 圖2-8 環境設置界面 ? 「Advanced」標籤頁:能夠設置錄製時的思考時間(Think Time)、支持的字符集標準等。 ? 「Correlation」標籤頁:手工設置關聯,經過關聯可在測試執行過程當中保存動態值。使用這些設置能夠配置VuGen在錄製過程當中執行的自動關聯的程度。 (2)腳本內容 在錄製過程當中,能夠單擊「Pause」(暫停錄製)按鈕,在腳本中插入事務、註釋和集合,防止在錄製完成後再插入這些事務找不到具體位置。當業務流程完成後,單擊「Stop」(中止錄製)按鈕,會自動生成腳本,退出錄製過程,如圖2-6所示。 單擊「Save」(保存)按鈕,起個與實際業務有關係的名字,保存到相應的位置。 使用VuGen錄製以後生成的每一個Vuser腳本都至少包含vuser_init、一個或多個Actions及vuser_end等三部分。 在一般狀況下,將登陸到服務器的活動記錄在vuser_init部分中,將客戶端活動錄製到Actions部分中,並將註銷過程錄製到 vuser_end部分中。由於運行屢次迭代的Vuser腳本時,只有腳本的Actions部分重複,而vuser_init和vuser_end部分將 不重複。 腳本圖例如圖2-9所示。 圖2-9 腳本圖例 在錄製腳本期間,發出的消息能夠經過日誌來查看,選擇「View」>「Output Window」,而後選擇「Recording Log」選項卡。能夠在「Run time Setting」的「Log」選項卡中設置該日誌的詳細級別,如圖2-10所示。 圖2-10 錄製日誌 錄製時,VuGen會建立一系列配置、數據和源代碼文件。這些文件包含Vuser運行時和設置信息。VuGen會將這些文件連同腳本一塊兒進行保存。 至此,一個完整的Vuser腳本錄製完成。 多協議腳本的錄製與單協議腳本的錄製過程基本相同,只是比單協議腳本的錄製多一個選項界面,如圖2-11所示。 在此界面中單擊協議,能夠進行添加和刪除協議的操做。在協議前的複選框中打對號,即爲選中,不然刪除。 圖2-11 添加協議 2.1.2 錄製Web Services腳本 在進行性能測試時,大部分對Web性能測試,選擇「Web(HTTP/HTML)」協議即 可,但錄製完腳本後,回放腳本過程當中有時會發生中斷或中止的狀況,查看錯誤時,若是沒法找到SOAP文件字樣時,就須要考慮更換腳本錄製協議了。一般首先 考慮更換Web Services協議,再次錄製腳本,問題就相應解決了。 在錄製Web Services腳本前,首先對Web Services作一個簡要的介紹,這樣有助於讀者或者測試人員可以更好地利用Web Services協議錄製腳本。 1.什麼是Web Services Web Services是一種構建應用程序的普通模型,並能在全部支持Internet通訊的操做系統上實施運行。Web Services令基於組件的開發和Web的結合達到最佳,基於組件的對象模型,如:分佈式組件對象模型(Distributed Component Object Model, DCOM)、遠程方法調用(Remote Method Invocation, RMI)、互聯網內部對象請求代理協議(Internet Inter-Orb Protocol, IIOP)都已經發布很長時間,可是它們都依賴於特殊對象模型協議。而Web Services利用SOAP和XML對這些模型在通訊方面做了進一步的擴展,以消除特殊對象模型的障礙。 進一步地,Web Services還基於HTTP和SOAP協議,使得Web用戶經過Web調用的方法使用SOAP和HTTP來調用遠程對象,確保業務數據得以在Web上傳輸。 2.Web Services結構 客戶根據WSDL描述文檔,會生成一個SOAP請求消息。Web Services都是放在Web服務器(如IIS)後面的,客戶生成的SOAP請求會被嵌入在一個HTTP POST請求中,發送到Web服務器,Web服務器再把這些請求轉發給Web Services請求處理器。請求處理器的做用在於,解析收到的SOAP請求,調用Web Services,而後再生成相應的SOAP應答。Web服務器獲得SOAP應答後,會再經過HTTP應答的方式把信息送回到客戶端。 3.Web Services體系 Web Services體系主要包括如下幾個方面: (1)Web Services包括3種組件。 服務提供者:提供服務,進行註冊以使服務可用; 服務代理者:服務交換所,服務提供者和服務請求者之間的媒體; 服務請求者:向服務代理請求服務,調用這些服務建立應用程序。 (2)Web Services提供3種操做。 發佈/不發佈(Publish/Unpublish):服務提供者向服務代理者發佈(註冊)服務或不發佈(移去)這些服務的註冊; 發現(Find):由服務請求者向服務代理者執行發現操做,服務請求者描述要找的服務,服務代理者分發匹配的結果; 綁定(Bind):在服務請求者和服務提供者之間綁定,這兩部分協商以使請求者能夠訪問和調用提供者的服務。 (3)UDDI規範 統一描述、發現和集成(Universal Description Discovery and Integration, UDDI)是一個Web Services的信息註冊規範,基於UDDI的Web Services註冊能夠被發現。UDDI的核心部分是UDDI業務登記邏輯,即在Web上有一種分佈的註冊服務,這種服務以一種通用的XML格式進行描 述。經過XML中的結構化描述,能夠很方便地在互聯網上發現須要的數據,進而方便進行分析和操做。從概念上看,一個UDDI業務登記邏輯所提供的信息包括 三個部分:「白頁」包括地址、協議和已有標識;「黃頁」包括基於分類標準的工業類型;「綠頁」是關於企業所包含的服務技術信息,包括網絡服務說明參考和根 據發現機制對各類文件和網址提供的標識支持。 (4)網絡服務描述語言(WSDL) 網絡服務描述語言(Web Services Description Language, WSDL)遵循XML語法,爲服務提供者提供了描述構建在不一樣協議或編碼方式之上的Web Services請求基本格式的方法。WSDL用來描述一個Web Services能作什麼,它的位置在哪裏,如何調用它等。在假定以SOAP/HTTP/MIME做爲遠程對象調用機制的狀況下,WSDL會發揮最大做 用。UDDI註冊描述了Web Services絕大多數方面,包括服務的綁定細節。WSDL能夠看做是UDDI服務描述的子集。 WSDL 將服務定義爲一個網絡端點的集合,或者說端口的集合。在 WSDL 裏面,端點及消息的抽象定義與它們具體的網絡實現和數據格式綁定是分離的。這樣就能夠重用這些抽象定義:消息(須要交換的數據的抽象描述)和端口類型(操 做的抽象集合)。針對一個特定端口類型的具體協議和數據格式規範構成一個可重用的綁定。一個端口定義成網絡地址和可重用的綁定的鏈接,端口的集合定義爲服 務。所以,一個WSDL文檔在定義Web Services時使用以下的元素: 類型——使用某種類型系統定義數據類型的容器; 消息——通訊數據抽象的有類型的定義; 操做——服務支持動做的抽象描述; 端口類型——操做的抽象集合,該操做由一個或多個端點支持; 綁定——針對一個特定端口類型的具體協議規範和數據格式規範; 端口——單一的端點,定義成一個綁定和一個網絡地址的連接; 服務——相關端點的集合。 不難看出,WSDL給客戶提供了一個模板,方便客戶描述和綁定服務。 上面簡單介紹了Web Services基本的知識,下面採用Web Services單協議進行簡要的腳本錄製,讀者可結合錄製腳本的過程進一步瞭解它,具體步驟以下: 選擇「開始」>「程序」>「LoadRunner」>「Virtual User Generator」(Vuser生成器),啓動VuGen。在VuGen的「File」下拉菜單中選擇「New」,新建一個腳本;從 「Category」(類別)列表中選擇「Web Services」協議,單擊「OK」按鈕開始錄製Vuser腳本。 首先配置Web Services錄製嚮導,配置程序錄制的方式。「Record Client Application」方式是經過客戶端進行錄製的,「Scan WSDL file」方式須要錄入WSDL文件纔可錄製,在這裏選擇「Record Client Application」進行錄製,如圖2-12所示。 「Specify WSDL files for recording」嚮導用於配置WDSL文件,因爲選擇「Record Client Application」的錄製方式,因此在此選擇「Do not use WSDL file during recording」,表示不利用WSDL文件進行錄製,如圖2-13所示。 圖2-12 Web Services錄製界面1 圖2-13 Web Services錄製界面2 「Specify application to record」嚮導用於配置程序的訪問地址、瀏覽器和錄製腳本中的一些初始化設置。在URL中添加測試程序的訪問地址;若是程序須要其餘的瀏覽器,選擇 「Record any application」進行其餘瀏覽器的設置,這裏不須要特殊的瀏覽器,因此不選擇此項;「Record into action」選項用於指定把錄製的腳本放到哪個部分,通常初始化放在vuser_init中,循環部分在Action 中,結束退出部分放在 vuser_end中,如圖2-14所示。若有須要請單擊後面的「Advanced Details」按鈕,能夠詳細地配置「Options Recording」用來錄製腳本,這裏不介紹Options Recording,在之後的章節中有詳細的介紹。單擊「完成」按鈕便可完成Web Services的嚮導配置。 而後VuGen將根據程序的訪問地址自動啓動應用程序,並顯示「Recording…」(錄製)工具欄,開始腳本的錄製,如圖2-15所示。 圖2-14 Web Services錄製界面3 圖2-15 「Recording…」工具欄 在整個操做過程完成後,單擊「中止」按鈕,腳本錄製結束,LoadRunner自動把錄製的內容保存在腳本中。在錄製完畢的腳本中會出現一些函數,在後面章節中會詳細介紹這些函數的使用方法。 一個生成的Web Services的腳本節選如圖2-16所示。 圖2-16 Web Services腳本圖例 這樣就完成了Web Services單協議腳本的錄製過程。 2.1.3 回放腳本及調試 錄製完腳本後,須要單機運行一下腳本,由於在錄製腳本的過程當中可能會出現錯誤。例如:有些鏈接、圖片或界面無 法找到,須要調試;有些地方須要參數化,只有惟一值才能執行經過;還有可能回放腳本時出現-40四、-500等錯誤頁面,發生超時等現象。這時就須要把這 些問題解決掉。 單擊工具欄中的「Compile」按鈕,查看腳本中是否有語法或者亂碼錯誤,若是出現錯誤須要手工及時調試,若是沒有錯誤,在執行日誌中顯示「No error detected」消息提示。 而後,單擊工具欄中的「Run」按鈕,開始執行腳本,在執行腳本期間,一樣能夠經過日誌來查看發出的一些消息。選擇「View」>「Output Window」,再選擇「Execution Log」選項卡。 若是有錯誤,VuGen將會提示錯誤。雙擊錯誤提示,VuGen可以定位到出現錯誤的那一行,如圖2-17所示。 圖2-17 提示運行腳本錯誤 單機運行測試腳本後,若是編譯經過,就會開始運行,運行結果如圖2-18所示。 在每次單擊回放腳本後,都會出現如圖2-18所示的運行結果頁。在結果頁中能夠清楚地看到腳本運行的狀況,顯示整個運行過程當中出現成功、失敗和警告狀況各自的運行時間,而且記錄下整個運行開始、結束的日期和時間。 圖2-18 單機運行腳本結果 若是整個運行過程成功,在頁面的左側是整個腳本的樹型結構,顯示出的每一個腳本的控件名稱前都有綠色對號的標誌,例如圖片、連接、提交表單等,如圖2-19所示。 圖2-19 運行成功時的結果頁 單擊某個控件,在其右邊便顯示出其控件的頁面或相應的運行步驟,如圖2-20所示。 圖2-20 顯示運行成功步驟 在此結果頁中還能夠檢測腳本中控件或者其餘錯誤,若是腳本回放出現錯誤的話,會在相應控件前出現紅色叉號的錯誤提示,如圖2-21所示。 圖2-21 運行失敗的結果頁 單擊其控件後,在右邊出現腳本未經過的具體緣由,以便查找出錯位置進行改正,如圖2-22所示。 圖2-22 定位運行失敗 腳本錄製、調試完成後,還能夠經過插入事務、集合點等操做來完善、加強腳本。 2.1.4 完善腳本 爲何要完善加強腳本呢? 首先,爲了衡量服務器的性能,須要定義事務(Transaction)。例如在腳本中有一個數據查詢操做,爲了衡量服務器執行查詢操做的性能,能夠 把這個操做定義爲一個事務。這樣在運行測試腳本時,LoadRunner運行到該事務的開始點時,就會開始計時,直到運行到該事務的結束點,計時結束。這 個事務的運行時間在測試結果中會有反映。LoadRunner容許在腳本中插入不限數量的事務。 在方案執行期間,控制檯將測量執行每一個事務所用的時間。方案運行後,可以使用LoadRunner的圖和報告來分析各個事務的服務器性能。 其次,使用集合點是爲了衡量在加劇負載的狀況下服務器的性能狀況。在測試計劃中,可能會要求系統可以承受多人同時提交數據,LoadRunner通 過在提交數據操做前面加入集合點的方法,檢查同時有多少用戶運行到集合點,人數不足時,LoadRunner會命令已經到集合點的用戶等待,當在集合點等 待的用戶達到要求容納的人數(如1000人)時,LoadRunner向系統提交數據。 在腳本中加入集合點後,控制檯運行腳本時,能夠對集合點進行策略設置,這樣就能夠根據實際狀況在系統上模擬用戶負載了。 再次,在錄製過程當中最好加入註釋,由於在錄製完腳本後看到的都是腳本代碼,操做複雜的業務沒法找到相應的位置進行關聯或者參數化的動做,這時,註釋就顯得尤其重要。 最後,LoadRunner提供了不少函數,有些函數是在錄製時根據不一樣的協議自帶的函數。其中有些函數是供手工添加的,這就要根據實際狀況進行添加了。例如腳本關聯,有些變量沒法實現系統自動關聯,只能添加函數進行手動關聯。 在錄製完成的腳本中,還能夠根據實際狀況,添加事務、集合點、註釋、函數等內容來加強腳本,進一步完善。下面逐一進行介紹。 1.插入事務 腳本中插入事務既能夠在錄製過程當中直接插入,也能夠在腳本錄製結束後經編輯插入。建議採用在腳本的錄製過程當中插入事務的方法,這樣不至於遺漏程序中應插入事務的操做。 在須要插入事務的操做前,經過工具欄上的「Start Transaction」(開始事務)按鈕插入事務,事務的名稱最好有意義,這樣在最後分析系統時,有助於發現系統的瓶頸點是否在具體的事務中。 具體的操做方法以下:在錄製Vuser腳本時,在須要定義事務的操做前面,單擊「錄製」工具欄上的「Start Transaction」菜單項,將打開「Start Transaction」對話框,如圖2-23所示。 接着出現如圖2-24所示的對話框。 圖2-23 插入事務開始點 圖2-24 輸入事務開始名稱 在給事務起名字時,事務名必須以字母或數字開始,能夠包含字母、數字或者下列字符:!、$、%、&、'、-、[、^、_、`、<、>、{、}、|或~。填寫好事務名稱後,就能夠對系統進行操做,單擊「OK」接受該事務名稱。 VuGen將自動在Vuser腳本中插入事務的起始標誌(「lr_start_transaction」)和終點標誌(「lr_end_transaction」)。起點和終點之間的內容就是錄製或者編寫的測試事務腳本。 在錄製腳本過程當中,隨時能夠單擊「錄製」工具欄上的「End Transaction」菜單項,結束錄製,如圖2-25所示。 圖2-25 插入事務結束點 此時會出現如圖2-26所示的結束事務的對話框。 單擊「Transaction Name」下拉框的箭頭得到已打開事務的列表,選擇要關閉的事務。事務的狀態在默認狀況下是LR_AUTO。通常狀況下,也不須要修改,除非在手工編寫代碼時,有可能須要手動設置事務的狀態。單擊「OK」按鈕接受該事務名稱。 腳本中事務的代碼如圖2-27所示。 圖2-26 選擇要結束事務的名稱 圖2-27 插入事務圖例 當結束事務時,經過工具欄上的「End Transaction」按鈕,結束事務。在結束列表中會顯示最近定義的事務的名稱,只要選擇本身新建的事務的名稱便可結束該事務。 這樣就完成了事務的插入操做。 2.插入集合點 集合點只能在Action中插入,不能在vuser_init或vuser_end中插入。 在須要插入集合點的操做前,經過工具欄上的集合點按鈕插入集合點,並在集合點的輸入框中輸入集合點的名稱。集合點的名稱最好是有意義的名稱,這樣有助於在系統分析時,分析系統的瓶頸所在。 插入集合點具體的操做方法以下:在錄製Vuser腳本時,在須要插入集合點的位置,單擊「錄製」工具欄上的「集合點」按鈕或單擊「Insert」菜單下的「Rendezvous」子菜單。將打開「Rendezvous」(集合點)對話框,如圖2-28所示。 圖2-28 插入集合點 接着,出現如圖2-29所示的對話框。輸入該集合點的名稱,注意,名稱最好可以清楚地說明該集合點所完成的動做。腳本中集合點的代碼如圖2-30所示。 圖2-29 輸入集合點名稱 圖2-30 插入集合點圖例 3.插入註釋 註釋能夠在錄製腳本時插入,也能夠在腳本錄製後插入,其順序對程序分析沒有影響。在須要插入註釋的操做前,經過工具欄上的「註釋」按鈕或者 「Insert」 菜單下的「Comment」子菜單插入註釋。在「Insert Comment」對話框中輸入對操做的註釋,以便於對腳本的重複使用。 在須要插入註釋的位置,經過菜單或者工具欄操做,如圖2-31所示。 圖2-31 插入註釋 接着,出現如圖2-32所示的對話框。腳本中註釋的代碼如圖2-33所示。 圖2-32 輸入註釋內容 圖2-33 插入註釋圖例 4.插入函數 在錄製腳本的過程當中,根據不一樣的協議,會用到不一樣的函數,在此介紹幾個腳本中比較常見的函數,但願初學者能對插入函數的基本操做方法有大概的瞭解。詳細的函數調用方法,會在第6章的「LoadRunner函數介紹」中說明,這裏再也不贅述。 (1)web_custom_request:容許使用HTTP支持的任何方法來建立自定義HTTP請求。 (2)web_image:在定義的圖像上模擬鼠標單擊。 例子: web_image("46.gif", "Src=frame/sapphire/image/tree/15/46.gif", "Ordinal=2", "Snapshot=t4.inf", EXTRARES, "Url=frame/sapphire/style/controls.css","Referer=http:// 192.168.1.10:7001/mail/login.do", ENDITEM, "Url=frame/sapphire/style/custom.css", "Referer=http://192.168.1.10/mail/login.do ", ENDITEM, LAST); (3)web_link:在定義的文本連接上模擬鼠標單擊。 例子: web_link("MAIL", "Text= MAIL ", "Snapshot=t3.inf", EXTRARES, "Url=frame/sapphire/style/menu.css", "Referer=http://192.168.1.10:7001/mail/login.do ", ENDITEM, "Url=frame/sapphire/style/panel.css", "Referer=http:// 192.168.1.10:7001/mail/login.do ", ENDITEM, LAST); (4)web_submit_data:執行「無條件」或「無上下文」的表單。 例子: web_submit_data("j_security_check", "Action=http://192.168.1.121:10001/Application/j_security_check", "Method=POST", "RecContentType=text/html", "Referer=http://192.168.1.121:10001/Application/login.jsp; jsessionid=013613D116183D08E6C0C05A1310B70F.node1", "Snapshot=t2.inf", "Mode=HTTP", ITEMDATA, "Name=j_username", "Value=mayi", ENDITEM, "Name=j_password", "Value=1", ENDITEM, "Name=prelogon", "Value=登陸", ENDITEM, LAST); (5)web_submit_form:模擬表單的提交。 例子: web_submit_form("zxlogin.do", "Snapshot=t2.inf", ITEMDATA, "Name=username", "Value=001_yangzhifang", ENDITEM, "Name=password", "Value=1", ENDITEM, "Name=btnlogin", "Value=登陸", ENDITEM, EXTRARES, "Url=frame/images/quick_1_01.gif", "Referer=http://192.168.1.103:8080/Application/mail/fox/zxMain.jsp",ENDITEM, "Url=frame/images/quick_2_03.gif", "Referer=http://192.168.1.103:8080/Application/mail/fox/zxMain.jsp",ENDITEM,LAST); (6)web_url:加載由「URL」屬性指定的URL。 例子: web_url("Application", "URL=http://192.168.1.121:10001/Application", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t1.inf", "Mode=HTTP", LAST); (7)web_add_cookie:添加新的Cookie或修改現有的Cookie。 例子: web_add_cookie("cnt_uid_www=9f9e130439330156c92c51430b3e0120; DOMAIN=top2007.csdn.net"); web_add_cookie("IMMsgID_d41d8cd98f00b204e9800998ecf8427e=70; DOMAIN=top2007.csdn.net"); (8)web_set_timeout:指定Vuser等待執行指定任務的最長時間。 2.1.5 腳本回放問題解決 在運行腳本回放過程當中,有時會出現錯誤,這在實際測試中是不可避免的,畢竟自動錄製生成的腳本不免會有問 題,須要運行腳本進行驗證,把問題都解決後才加入到場景中進行負載測試。下面結合經常使用的協議(如Web、Web Services協議)錄製的腳本進行回放時出現的問題介紹一下解決的方法。 須要注意的是,回放腳本時出現的錯誤有時是程序自身的緣由致使的,所以在解決腳本回放問題前必須保證程序錄製出的腳本是正確的。 1.LoadRunner超時錯誤:在錄製Web協議腳本回放時超時狀況常常出現,產生錯誤的緣由也有不少,解決的方法也不一樣。 錯誤現象1:Action.c(16): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s)。 錯誤分析:對於HTTP協議,默認的超時時間是120秒(能夠在LoadRunner中修改),客戶端發送一個請求到服務器端,若是超過120秒服務器端尚未返回結果,則出現超時錯誤。 解決辦法:首先在運行環境中對超時進行設置,默認的超時時間能夠設置長一些,再設置屢次迭代運行,若是還有超時現象,須要在「Runtime Setting」>「Internet Protocol:Preferences」>「Advanced」區域中設置一個「winlnet replay instead of sockets」選項,再回放是否成功。 錯誤現象 2:Action.c(81):Continuing after Error -27498: Timed out while processing URL=http://172.18.20.70:7001/workflow/bjtel/leasedline/ querystat/ subOrderQuery.do 錯誤分析:這種錯誤經常是由於併發壓力過大,服務器端太繁忙,沒法及時響應客戶端的請求而形成的,因此這個錯誤是正常現象,是壓力過大形成的。 若是壓力很小就出現這個問題,多是腳本某個地方有錯誤,要仔細查看腳本,提示的錯誤信息會定位某個具體問題發生的位置。 解決辦法:例如上面的錯誤現象問題定位在某個URL上,須要再次運行一下場景,同時在其餘機器上訪問此URL。若是不能訪問或時間過長,多是服務器或者此應用不能支撐如此之大的負載。分析一下服務器,最好對其性能進行優化。 若是再次運行場景後還有超時現象,就要在各類圖形中分析一下緣由,例如能夠查看是否服務器、DNS、網絡等方面存在問題。 最後,增長一下運行時的超時設置,在「Run-Time Settings」>「Internet Protocol:Preferences」中,單擊「options」,增長「HTTP-request connect timeout」 或者「HTTP-request receive」的值。 2.LoadRunner腳本中出現亂碼:在錄製Web協議腳本時出現中文亂碼,在回放腳本時會使回放中止在亂碼位置,腳本沒法運行。 錯誤現象:某個連接或者圖片名稱爲中文亂碼,腳本運行沒法經過。 錯誤分析:腳本錄製可能採用的是URL-based script方式,若是程序定義的字符集合採用的是國際標準,腳本就會出現亂碼現象。 解決辦法:從新錄製腳本,在錄製腳本前,打開錄製選項配置對話框進行設置,在「Recording Options」的「Advanced」選項裏先將「Surport Charset」選中,而後選中支持「UTF-8」的選項。 3.LoadRunner HTTP服務器狀態代碼:在錄製Web協議腳本回放腳本的過程當中,會出現HTTP服務器狀態代碼,例如常見的頁面-404錯誤提示、-500錯誤提示。 錯誤現象1:-404 Not Found服務器沒有找到與請求URI相符的資源,但還能夠繼續運行直到結束。 錯誤分析:此處與請求URI相符的資源在錄製腳本時已經被提交過一次,回放時不可再重複提交一樣的資源,而須要更改提交資源的內容,每次回放一次腳本都要改變提交的數據,保證模擬實際環境,形成必定的負載壓力。 解決辦法:在出現錯誤的位置進行腳本關聯,在必要時插入相應的函數。 錯誤現象2:-500 Internal Server Error服務器內部錯誤,腳本運行中止。 錯誤分析:服務器碰到了意外狀況,使其沒法繼續迴應請求。 解決辦法:出現此錯誤是致命的,說明問題很嚴重,須要從問題的出現位置進行檢查,此時須要此程序的開發人員配合來解決,並且產生的緣由根據實際狀況來定,測試人員沒法單獨解決問題,並且應該儘快解決,以便於後面的測試。 4.LoadRunner請求沒法找到:在錄製Web協議腳本回放腳本的過程當中,會出現請求沒法找到的現象,而致使腳本運行中止。 錯誤現象:Action.c(41): Error -27979: Requested form. not found [MsgId: MERR-27979] Action.c(41): web_submit_form. highest severity level was "ERROR",0 body bytes, 0 header bytes [MsgId: MMSG-27178]" 這時在tree view中看不到此組件的相關URL。 錯誤分析:所選擇的錄製腳本模式不正確,一般狀況下,基於瀏覽器的Web應用會使用「HTML-based script」模式來錄製腳本;而沒有基於瀏覽器的Web應用、Web應用中包含了與服務器進行交互的Java Applet、基於瀏覽器的應用中包含了向服務器進行通訊的JavaScript/VBScript代碼、基於瀏覽器的應用中使用HTTPS安全協議,這時則使用「URL-based script」模式進行錄製。 解決辦法:打開錄製選項配置對話框進行設置,在「Recording Options」的「Internet Protocol」選項裏的「Recording」中選擇「Recording Level」爲「HTML-based script」,單擊「HTML Advanced」,選擇「Script. Type」爲「A script. containing explicit」。而後再選擇使用「URL-based script」模式來錄製腳本。 5.LoadRunner不執行檢查方法:在錄製Web協議腳本中添加了檢查方法Web_find,可是在腳本回放的過程當中並無執行。 錯誤現象:在腳本中插入函數Web_find,在腳本中設置文本以及圖像的檢查點,可是在回放過程當中並無對設置的檢查點進行檢查,即Web_find失效。 錯誤分析:因爲檢查功能會消耗必定的資源,所以LoadRunner默認關閉了對文本以及圖像的檢查,因此在設置檢查點後,須要開啓檢查功能。 解決辦法:打開運行環境設置對話框進行設置,在「Run-time Settings」的「Internet Protocol」選項裏的「Perference」中勾選「Check」下的「Enable Image and text check」選項。 6.LoadRunner回放Web Services協議腳本錯誤:LoadRunner 8.0版本在錄製Web Services協議的腳本時正常,但在回放時會出現錯誤,提示中止腳本運行。 錯誤現象:利用LoadRunner 8.0版原本錄製Web Services協議的腳本沒有任何錯誤提示,回放腳本時會出現以下錯誤提示「Error:server returned an incorrectly formatted SOAP response」。 錯誤分析:出現此錯誤的緣由是LoadRunner8.0在錄製Web Services協議的腳本時存在一個缺陷:若是服務器的操做系統是中文的,VuGen會自動將WSDL文件的頭改成 ,因此纔會有此錯誤提示。 解決辦法:下載兩個補丁,分別爲「LR80WebServicesFPI_setup.exe」和「lrunner_web_ services_patch_1.exe」安裝上便可。
相關文章
相關標籤/搜索