LoadRunner:Controller及結果分析


一、性能測試概述

1、關於性能測試目標:

①TPS

②一定並發用戶數下功能點的響應時間

③一定響應時間內功能點的並發用戶數

性能測試不是達到既定目標即可,還要測試軟件功能能夠達到的極限值。

2、關於性能測試的場景:

在腳本錄制調試完成后,需要進行場景的設置,進而對腳本進行壓測,分析壓測的結果。

性能測試場景:

  單場景 → 單獨某個功能、接口,測試目標是多少(一般10--15分鍾)

  混合場景 → 發現線程死鎖和數據庫死鎖(一般10--15分鍾)

  穩定性場景 → 系統是否穩定運行,發現系統是否有內存泄漏(過程)、內存溢出(結果,系統崩潰)(一般N*12小時)

在進行場景的壓測時,相當重要的一點是要保證數據庫表中有足夠的數據量。

3、loadrunner負載機

用其它機子做負載機為"分布式負載",這時候在用作負載的機子上,只需要安裝loadrunner Agent這個模塊就可以了,在進行分布式負載時,可能出現連接不上負載機的情況,檢查網絡及防火牆的狀況。

 

二、Controller的場景概述

 

三、手工性能測試場景

1、為什么要使用分布式負載:

在進行並發的時候,一台PC機能夠發送的並發數,可能達不到測試的要求,那么就需要用多台機子進行並發,每台機子分擔一定的並發數。

Controller應與Load Generator分開。若測試需要的vu數,超過單負載機所能產生的vu數,則負載機本身將成為性能瓶頸,這是不合理的。

例如,負載機內存512M,一個vu占2.5M,則單台負載機只能產生200vu,若需測試500vu,一台controller調用多台Generator,要考慮負載均衡問題,帶寬問題。

2、Controller的場景設置:

①Controller中負載機的設置如下圖:

 在進行腳本壓測時候,可以如下圖進行快速的操作:

上邊我們已經描述了在Scenario Groups中,如何進行腳本的選擇及負載機是如何進行設置的,接下來要對腳本的並發數及運行時間進行設置:

②腳本虛擬用戶初始化:

一般在進行虛擬用戶設置的時候,選擇彈出框Edit Action中的第一個或者第三個選項

③虛擬用戶並發數及加載方式的設置:

注意:在此次設置了多少個虛擬用戶進行並發,並不表示在進行壓測時,就有設置的並發用戶數運行,實際的並發數,取決於服務器的處理能力及代碼,TPS/RPS(每秒通過的事務/每秒通過的請求數)

 

  • 思考:

壓測時2000個用戶並發,每秒加載2個用戶,並發15分鍾,問在15分鍾里,用戶數能夠加載完嗎

進行如下設置:

由上圖可知,用戶的加載時間,不包含用戶的並發時間

同理用戶的退出時間,也不包含在用戶的並發時間內,所以說以上"壓測時2000個用戶並發,每秒加載2個用戶,並發15分鍾,問在15分鍾里,用戶數能夠加載完嗎"的描述是錯誤的。

 如下圖設置:

loadrunner的運行方式有兩種:進程方式、線程方式

默認情況下以線程方式運行

在腳本運行前,加載2000個並發用戶,這時服務器會啟動40個(2000/50=40)mmdrv進程(1個mmdrv進程默認有50(可修改)個線程。也就是說如果是50個進程並發的話,系統會啟動一個mmdrv的進程(負載機進程),如果多於50個線程,就對應啟動x個mmdrv進程。如果是以進程方式運行的話,一個並發就是一個mmdrv進程。進程比較耗內存資源,線程比較耗CPU可以這么理解。)

產生的影響:

對負載機來說,開始壓力會大一些

對服務器來說,服務器沒有任何緩存時間,一下子來2000個並發,可能導致服務器崩潰

熱負載:一點一點的加並發

冷負載:所有並發一次性向服務器發送

 

loadrunner支持壓測的同時,增加並發用戶數,如下圖:

在壓測時候對比上圖①運行的虛擬用戶數②請求的響應時間③tps 進行分析

④腳本的串聯運行:

方式一、

方式二、lr和QC進行集成

方式三、定時任務

 

四、面向目標的性能測試場景

 

 

五、Analysis:

1、新增監控視圖:

2、Analysis報告的簡單分析:

上圖中,如果標准方差在5以內取Average做作為平均相應時間,如果標准方差大於5取90 Percent作為響應時間。

3、Analysis中,進行視圖的合並操作,如下圖:

一般合並並發用戶數和響應時間或者並發用戶數和tps,可以看到不同並發用戶數下的響應時間或者tps值的變化情況。

 並發用戶數下的響應時間不包含失敗事務或者請求的響應時間。

 

六、測試目標對應測試場景的設置實戰

實戰1、測試響應時間:測試網易體育20個並發的響應時間如何設置?(測試某個功能/接口的響應時間,前提條件是多少個並發)

直接加載需要的用戶數去測試某個功能/接口,並發15分鍾,得出平均時間即可

在手工場景下進行如下設置:

腳本運行完后,根據標准方差的大小,取平均響應時間或者百分之90的響應時間

 

實戰2、測試最大tps 需要知道測試哪個接口或者功能(包含條件是1秒)

直接從1個用戶開始測試,通過不斷的加壓(加用戶)去測試最大tps,最大tps的標識是隨着用戶的不斷增加,tps不再增加或者tps反而減小,那么那個不再增加的tps或者出現拐點的tps就是最大的tps

在手工測試場景下,進行如下設置:

擴展:

項目的某一功能的tps如何評估:

①tps是開發、項目經理或者產品經理制定的。分析線上日志,1s最大有多少個用戶或請求通過

②只知道在線用戶數,如何去衡量系統某個功能的tps是合理的

測試人員心里預估值來源:

最精確來源,線上日志分析(可用awk命令統計日志每分鍾通過的請求數,進而得到tps);

其次可以用28(百分之80的用戶會在百分之20的時間段內同時做一件事情)原則,前提知道在線用戶數,和用戶的訪問習慣,譬如有100個用戶,在預定的某個10分鍾內,要做某件事,那么 100個用戶*80%=80個用戶,10分鍾*20%=2分鍾  tps=80/(2*60)

 

實戰3:測試最大並發用戶數:測試某個功能/接口,響應時間在多少秒以內

用戶直接從1開始測試,逐漸加大並發用戶數,觀察響應時間,直到響應時間達到需要的秒數,再繼續觀察響應時間是否穩定,如果穩定,那么這個並發數就是最大並發,如果不穩定,那么就需要增加或減少用戶

 

四、其它的一些問題:

這里描述一些問題,表述其思考方式,以便舉一反三:

1、發送的請求大於處理請求,出現排隊的情況,響應時間會越來越長。

2、在允許同一個用戶多點登錄的情況下,在進行壓測的時,不需要進行登錄用戶的參數化操作;如若不允許同一個用戶進行多點登錄的話,就需要進行參數化。

3、性能測試壓測對象是action中的事務,在init中不影響,參數化的時候,用once的時候,不需要做參數化。

4、lr的循環嵌套:

cotroller里的運行時間 - while(endtime>0) → action的迭代 - while(迭代次數>0) → 腳本里的循環

故在腳本中,設置迭代的次數並不影響壓測時,controller的顯示。

5、loadrunner測試手機app:app和web一樣,app本身就相當於web瀏覽器,后台調的都是服務,對server有並發對app本身沒有並發,測試app分為兩部分:后台的服務器的性能(接口),接口不需要錄制,只需要知道app接口的說明文檔,自己手寫腳本;app本身,相當於web前端性能測試,需要用到其它前端性能測試工具。

6、IP欺騙:模擬本機局域網段內的大量IP來進行操作。服務器識別的是網卡IP,單網卡一個IP,雙網卡倆IP。

 

---------

釋然、感恩,感恩遇到她,感恩曾經一起的美好... ...

越努力越精彩,加油!!!

--------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM