近期,有些同學提出希望我們撰寫些關于性能測試的技術文章。因此,小編今天通過上網查資料,結合項目實操過程中的一些問題,總結了一些關于性能測試的內容,希望是大家想要了解的內容哈。
首先,先來明確一個問題,我們為什么要給產品/軟件等做性能測試?
時下,市面上絕大多數的軟件產品,都是分布式應用。這就產生了一些有意思的現象:開發的產品在少量用戶使用時,可能不存在問題,一旦用戶多起來,就容易出現系統癱瘓等多種問題。
那么,為什么會出現這種情況呢?這是由于用戶的使用數量、用戶場景的不確定性造成的。當并發用戶數量超過負載量,系統就會陷入崩潰狀態。由此可見,對新開發的產品做性能測試是非常重要的。它能幫助我們了解系統可承受的并發用戶數量,帶寬、cpu、內存、硬盤速度等。
2、性能測試的內容
性能測試主要包括以下幾個方面的內容:負載測試、壓力測試、容量測試等。
負載測試:不限制軟件的運行資源,測試軟件的數據吞吐量上限,以發現設計上的錯誤或驗證系統的負載能力。目標是確定并確保系統在超出預期工作量的情況下,是否能夠正常運行。
壓力測試:也稱為強度測試。通過模擬實際應用的軟硬件環境,及用戶使用過程的系統負荷,長時間或超大負荷地運行,來測試被測系統的性能、可靠性、穩定性等。
容量測試:可以看作是系統性能指標中,特定環境下的特定性能指標,即設定的界限或極限值。
3、性能測試評價指標
說了這么多,下面就要對性能測試的指標做評價了。
從用戶的角度來說,一般響應時間<2秒,就屬于流暢的體驗;如果響應時間>10秒,則要考慮改進響應速度的問題;
從產品的吞吐量來說,我們需要關注硬盤IO(讀寫)、網絡IO(上行下行帶寬)、cupIO、服務器的處理能力、客戶端的打開頁面數量等。
另外,我們還需要了解用戶打開頁面、登陸服務器、實現消息發送等某一動作的事務處理能力。
4、性能測試關注點
●響應時間快慢,服務器端的處理速度
●服務器端的使用情況
●數據庫端的資源使用情況
●用戶訪問數量
●同時處理業務數量
●考察系統能否支撐7x24小時運轉
●內存資源、線程資源能否正常回收
●代碼,算法,sql語句設計是否合理
●整個系統的穩定性,可恢復性
5、性能測試的核心原理
1)基于協議(前端、后端的通信機制),基于界面(與前端的交互),基于代碼(后端);
2)基于網絡的分布式架構:基于網絡協議去模擬用戶發送請求等;
3)基于多線程:模擬多線程操作,多人同時操作,模擬大負載量;
4)基于真實場景:模擬真實的網絡環境,用戶操作時間不確定性,操作不確定,得出數據的準確性也存在差異。場景不對,數據也不一定可用。
6、代碼實現性能測試
針對某一功能做性能測試,可以通過論壇的登陸以及發帖(post協議,多線程這兩點)、登陸操作、發帖操作(涉及協議)等,并采用多線程同時操作。
7、Loadrunner的使用
Loadrunner的四個部件,分別是指:
●Vuser generator:開發性能測試腳本;
●Controller:提供多線程并發等操作;
●Ananlysis:結果分析;
●Load generator:負載生成器(controller里面的一個主鍵)