1. 程式人生 > >LoadRunner性能測試基礎知識問答

LoadRunner性能測試基礎知識問答

協議 錄制完成 配置 lar resources 自定義函數 文件 計數 持續時間

點擊鏈接加入QQ群 522720170:https://jq.qq.com/?_wv=1027&k=5C08ATe

Q1:什麽是負載測試?什麽是性能測試?

A1:負載測試是通過逐步增加系統負載,測試系統性能的變化,並最終確定在滿足性能指標的情況下,系統所能承受的最大負載量的測試,例如,訪問一個頁面的響應時間規定不超過1秒,負載測試就是測試在響應時間為1秒時,系統所能承受的最大並發訪問用戶的數量。

性能測試:指在一定的約束條件下(指定的軟件、硬件、網絡環境等),確定系統所能承受的最大負載壓力。

Q2.性能測試包含了哪些測試(至少舉出3種)

 A2:性能測試包含負載測試、壓力測試、大數據量測試、疲勞強度測試等。

Q3.簡述性能測試的步驟

技術分享圖片

  Q4.簡述使用Loadrunner的步驟

A4:制定性能測試計劃—>開發測試腳本—>設計測試場景—>執行測試場景—>監控測試場景—>分析測試結果

技術分享圖片

  Q5.什麽時候可以開始執行性能測試?

A5:功能測試通過;一般需要進行性能測試的系統,都是用戶量比較大、業務使用比較頻繁、比較重要的功能模塊。

  Q6.LoadRunner由哪些部件組成?

A6:主要有三部分組成:

技術分享圖片

Q7.你使用LoadRunner的哪個部件來錄制腳本?

A7:使用Virtual User Generator錄制測試腳本

 Q8.LoadRunner的哪個部件可以模擬多用戶並發下回放腳本?

A8:LoadRunner的Controller組件。

 Q9.什麽是集合點?設置集合點有什麽意義?Loadrunner中設置集合點的函數是哪個?

A9:在性能測試過程中,需要模擬大量用戶在同一時刻,訪問系統並同時操作某一任務,可以通過配置集合點來實現,多個用戶同時進行某操作;

 集合點可以在服務器上創建密集的用戶負載,使LoadRunner能夠測試服務器在負載狀態下的性能。

  設置集合點函數:lr_rendezvous("Meeting"); // Meeting是集合點名稱

Q10.什麽是場景?場景的重要性有哪些?如何設置場景?

A10:場景用於模擬用戶實際業務操作;

LoadRunner中場景有手工場景和面向目標的場景。

設置場景:選擇場景類型、設置運行時設置、模擬用戶數、加減壓方式、持續時間,配置負載生成器。

Q11.請解釋一下如何錄制web腳本?

A11:利用Virtual User Generator錄制測試腳本,錄制步驟:

1、選擇合適的協議

技術分享圖片

2、設置錄制選項

技術分享圖片

3、開始錄制

技術分享圖片

Q12.為什麽要創建參數?如何創建參數?

A12:LoadRunner在錄制腳本的時候,只是忠實的記錄了所有從客戶端 發送到服務器的數據,而在進行性能測試的時候,為了更接近真實的模擬現實應用,對於某些信息需要每次提交不同的數據,或者使用多個不同的值進行循環輸入。 這時,在LoadRunner中就可以進行參數化設置,以使用多個不同的值提交應用請求。

【參數化】:使用指定數據源中的值來替換腳本錄制生成的語句中的參數。

【參數化好處】

● 減少腳本的大小

● 提供使用不同的值執行腳本的能力,更加真實的模擬現實應用。

【參數化步驟】

● 用參數替換Vuser腳本中的常量值

● 為參數設置屬性和數據源

 Q13.什麽是關聯?請解釋一下自動關聯和手動關聯的不同。

 A13:【關聯的定義】簡單的說:就是把腳本中某些寫死(固定)的數據,轉變成動態的數據,或者說將前面語句的結果數據保存下來,然後在後面的語句提交請求時使用這些數據。

  【需要關聯的前提條件】:

  客戶端需要從服務器端返回數據中獲取部分數據,並將這些部分數據處理後作為自己下一次請求的一部分發出。

【自動關聯與手工關聯的不同】:自動關聯是在腳本錄制過程中,VuGen會根據已經制定好的規則,自動找出需要關聯 的值或腳本錄制完成後,執行腳本一次,通過Correlation Studio自動找出需要關聯的數據,並建立關聯;而手動關聯是需要錄制兩份相同業務流程的腳本,輸入的數據要相同,利用WinDiff工具,找出兩份腳 本之間不同之處,也就是需要關聯的數據,再通過web_reg_save_param函數手動建立關聯,將腳本中用到關聯的數據參數化。

  Q14.你如何找出哪裏需要關聯?請給一些你所在項目的實例。

  A14:

1、錄制兩份相同業務流程的腳本,輸入的數據要相同

2、利用WinDiff工具,找出兩份腳本之間不同之處,也就是需要關聯的數據

3、通過web_reg_save_param函數手動建立關聯,將腳本中用到關聯的數據參數化。

示例:

技術分享圖片

通過錄制兩份腳本,進行對比,可知jsessionid、sap-ext-sid、sap-wd-cltwndid、sap-wd-tstamp需要進行關聯。

技術分享圖片

  Q15.你在哪裏設置自動關聯選項?

  A15:錄制選項中進行設置,如下圖所示:

技術分享圖片

  Q16.哪個函數是用來截取虛擬用戶腳本中的動態值?(手工關聯)

  A16:Web_reg_save_param函數主要根據需要做關聯的動態數據前面和後面的固定字符串來識別、提取動態數據,所以在做關聯時,需要找出動態數據的左、右邊界字符串。

1.函數原型:

int web_reg_save_param (const char *ParamName, <List of Attributes>, LAST);

2.參數說明:

ParamNam:存放動態數據的參數名稱

List of Attributes:其它屬性,包含Notfound、LB、RB、RelFrameID、Search、ORD、SaveOffset、Convert、SaveLen。

● Notfound:指當找不到要找的動態數據時,怎麽處理。

● Notfound=error,當找不到動態數據時,發出一個錯誤信息,為LoadRunner的默認值。

● Notfound=warning,當找不到動態數據時,不發出錯誤信息,只發出警告,腳本會繼續執行下去不會中斷。

● LB:動態數據的左邊界字符串,該參數為必選參數,並區分大小寫。

● RB:動態數據的右邊界字符串,該參數為必選參數,並區分大小寫。

● ORD:指提取第幾次出現的左邊界的數據,該參數為可選參數,默認值是1。假如值為All,則查找所有符合條件的數據並把這些數據存儲在數組中。

● Search:搜尋的範圍。可以是Headers(只搜尋Headers)、Body(只搜尋Body部分,不搜尋Headers)、 Noresources(只搜尋Body部分,不搜尋Header與Resource)或是All(搜尋全部範圍,此為默認值),該參數為可選參數。

● RelFrameID:相對於URL而言,欲搜尋的網頁的Frame,此屬性可以是All或是具體的數字,該參數為可選參數。

● SaveOffset:當找到符合的動態數據時,從第幾個字符開始才存儲到參數中,該參數為可選參數,此屬性值不可為負數,其默認值是0.

● Convert:可能的值有兩種:

● HTML_TO_URL:將HTML-encoded數據轉成URL-encoded數據格式。

● HTML_TO_TEXT:將HTML-encoded數據轉成純文字數據格式。

● SaveLen:從Offset開始算起,到指定長度內的字符串,才儲存到參數中,該參數為可選參數,默認值為-1,表示儲存到結尾整個字符串。

  Q17.你在VUGen中何時選擇關閉日誌?何時選擇標準和擴展日誌?

  A17:在測試場景執行時,關閉日誌,因為日誌信息過多,也會影響性能測試結果;在調試測試腳本時,可以選擇標準或擴展日誌,用於輸出調試信息。

可以在運行時設置中,進行日誌設置,如下圖所示:

技術分享圖片

  Q18.你如何調試LoadRunner腳本?

  A18: 通常采用以下方法調試LoadRunner測試腳本

● 斷點

【方法】在腳本的任意一行上按右鍵菜單或F9增加斷點。

● 單步跟蹤

【方法】通過菜單命令VUser—>Run Step by Step或F10,可以控制腳本以語句為單位執行。

● 日誌輸出

【方法】通過日誌輸出函數lr_message、lr_log_message、lr_output_message輸出。

● 對話框輸出

綜上,在實際測試工作中,基本上使用前三種方法,對話框輸出基本上沒用過。

  Q19、你在LR中如何編寫自定義函數?請給出一些你在以前進行的項目中編寫的函數。

  A19:在編寫用戶自定義函數之前,需要首先為函數創建外部庫(DLL)文件,將這些庫文件放在bin目錄下,一旦庫文件已經被添加並且將用戶自定義函數作為參數,函數應該為以下格式:__declspec (dllexport) char* (char*, char*)

  Q20.在運行設置下你能更改那些設置?

  A20:可以修改Run Logic、pacing、Log、Think Time等,見下圖;可以測試實際需要,修改相關選項。

技術分享圖片

  Q21.你在不同的環境下如何設置叠代?

  A21:在“運行時設置”中設置,如下圖所示:

技術分享圖片

  Q22.你如何在負載測試模式下執行功能測試?

  A22:在負載測試模式下,可以通過同時運行數個虛擬用戶,通過增加虛擬用戶數,確定服務器在多大的負載量下,仍然可以正常運行,我一般進行核心功能操作,驗證核心功能運行是否正常。

  Q23.什麽是逐步遞增?你如何來設置?

  A23:虛擬用戶數隨著負載時間逐漸增加,可以幫助確定系統響應時間減慢的準確時間點。

可以在“加壓”選項卡中進行設置:如下圖所示,將設置更改為:“每 30 秒啟動 2 個 Vuser”

技術分享圖片

 Q24.以線程方式運行的虛擬用戶有哪些優點?

  A24:以線程方式運行的虛擬用戶,在默認情況下,Controller為每50個用戶僅啟動一個mmdrv進程,而每個用戶都按線程方式來運行,這些線程用戶將共享父進程的內存,這就節省了大量內存空間,從而可以在一個負載生成器上運行更多的用戶。

  Q25.當你需要在出錯時停止執行腳本,你怎麽做?

  A25:取消運行設置中的“Continue on error”復選框。

或者使用lr_abort函數。

技術分享圖片

  Q26.響應時間和吞吐量之間的關系是什麽?

  A26:當系統吞吐量未達到系統處理極限時,系統性能不會衰減,交易平均響應時間一般也不會遞增,當系統達到吞吐量極限時,客戶端交易會在請求隊列中排隊等待,等待的時間會記錄在響應時間中,故交易平均響應時間一般會遞增。

  Q27.說明一下如何在LR中配置系統計數器?

  A27:以windows資源監控為例,可右鍵點“添加度量”,輸入系統IP、選擇平臺類型,確定即可,詳細參加LR自帶操作手冊^_^。

對於監控不同類型的操作系統,需要做一些準備工作,可參見監控操作系統資源部分。

Q28.你如何識別性能瓶頸?

  A28:性能瓶頸分為:硬件瓶頸和軟件瓶頸

性能瓶頸可以通過監控器來分析發現,這些監控器包括應用服務器監控、web服務器監控、數據庫服務器監控器和網絡監控器;它們可以幫助分析導致響應時間增加的原因;性能度量一般包括響應時間、吞吐量、每秒點擊率、網絡延遲等等。

  Q29.如果web服務器、數據庫以及網絡都正常,問題會出在哪裏?

  A29:問題可能出在系統本身或應用服務器、或為應用編寫的代碼編寫中。

 Q30.如何發現web服務器的相關問題?

  A30:可以利用web資源監控器發現web服務器相關問題,在場景執行過程中,可以利用監控器分析web服務器吞吐量、每秒點擊率、每秒HTTP響應數、每秒頁面下載數,以及web服務器硬件資源使用情況等。

  Q31.如何發現數據庫的相關問題?

  A31:可以通過數據庫監控器和數據資源圖發現數據庫相關的問題,例如在運行Controller之前,可以指定需要度量的資源,之後可以根據監控的數據,分析數據庫相關的問題。

  Q32.解釋所有web錄制配置?

  A32:選擇錄制協議、設置錄制選項、選擇瀏覽器、選擇存放路徑、開始錄制。

  Q33.解釋一下覆蓋圖和關聯圖的區別?

  A33:覆蓋圖:合並兩個圖的內容,使用同一個X軸,合並圖左Y軸顯示當前圖的值,合並圖右Y軸顯示被合並圖的值。

關聯圖:當前活動圖的Y軸變為合並圖的X軸,被合並圖的Y軸變成合並圖的Y軸。

  Q34.你如何設計負載?標準是什麽?

  A34:負載測試計劃多少用戶數量、使用什麽類型的機器、以及在什麽環境下進行。主要基於兩個重要的文檔,任務分布圖和事務信息,任務分布圖告訴我們在負載時間段內,某一個事務使用的用戶數,高峰使用率及低峰使用率均來自該文檔;

事務信息告訴我們事務名及優先級,在設計場景時可以參考。

  Q35.Vuser_init中包括什麽內容?

  A35:Vuser_init中包含在腳本執行過程中只需執行一次的腳本。一般來說,所有需要初始化的都可以放在vuser_init裏面,比如登錄。

  Q36. Vuser_end中包括什麽內容?

  A36:vuser_end中一般包含退出的過程,比如退出系統,主要在腳本執行完成或停止時運行,在設置了叠代次數時,vuser_end和vuser_int均只執行一次。

  Q37.什麽是think time?think_time有什麽用?

  A37:思考時間:用戶在各步驟之間停下來進行思考的時間,由於用戶基於其經驗水平和目標而與應用程序進行交互操作,因此技術水平更高的用戶工作起來可能會比新用戶要快。

通過啟用思考時間,可以使 Vuser在負載測試期間更準確地模擬其對應的真實世界用戶。

 Q38.標準日誌和擴展日誌的區別是什麽?

  A38:標準日誌:腳本執行過程中,將函數集及信息發送到日誌文件中

擴展日誌:可以將詳細的腳本執行信息輸出到日誌文件中,可以選擇以下三種擴展日誌信息:

● 參數替換:腳本運行過程中,可以將參數及當前參數值輸出到日誌文件中

● 服務器返回的數據:將服務器返回給客戶端的數據輸出到日誌文件中

● 高級跟蹤:所有的虛擬用戶信息和函數調用輸出到日誌文件中

 Q39.解釋以下函數及他們的不同之處。

  A39:lr_debug_message:發送調試信息到輸出窗口或業務監控日誌文件中

lr_output_message:發送日誌信息到輸出窗口或業務監控日誌文件中

lr_error_message:發送錯誤信息到輸出窗口或業務監控日誌文件中

lrd_stmt:賦予一個SQL語句用於處理

lrd_fetch:獲取結果集中的下一行數據

  Q40.什麽是吞吐量?

  A40:客戶端每秒從服務器接收到的數據,或系統服務器每秒能處理通過的交易數。一般隨著虛擬用戶數的增加,吞吐量也增加,說明網絡帶寬比較充足,反之,吐過隨著虛擬用戶數的增加,吞吐量比較平穩,呈直線狀態,則說明網絡帶寬成為瓶頸,限制了數據傳輸。

  Q41.場景設置有哪幾種方法?

  A41:面向目標的場景設置和手動場景技術分享圖片

LoadRunner性能測試基礎知識問答