如何做性能測試?
瀏覽量: 次 發布日期:2023-09-06 10:06:49
如何做性能測試?
大家好,我是阿薩。 今天看一個性能測試的例子。????
什么是性能測試?
性能測試是一種軟件測試過程,用于測試軟件應用程序在特定工作負載下的速度、響應時間、穩定性、可靠性、可伸縮性和資源使用情況。性能測試的主要目的是識別和消除軟件應用程序中的性能瓶頸。它是性能工程的一個子集,也被稱為“性能測試”。
性能測試的重點是檢查軟件程序的性能
速度-確定應用程序是否快速響應
可伸縮性——決定軟件應用程序可以處理的最大用戶負載。
穩定性——確定應用程序在變化的負載下是否穩定
為什么要進行性能測試?
軟件系統所支持的特性和功能并不是唯一的關注點。軟件應用程序的性能(如響應時間、可靠性、資源使用和可伸縮性)確實很重要。性能測試的目標不是發現bug,而是消除性能瓶頸。
執行性能測試是為了向涉眾提供有關其應用程序的速度、穩定性和可伸縮性的信息。更重要的是,性能測試揭示了在產品推向市場之前需要改進的地方。如果沒有性能測試,軟件可能會遇到如下問題:當多個用戶同時使用它時運行緩慢,不同操作系統之間的不一致,以及糟糕的可用性。
性能測試將確定他們的軟件在預期工作負載下是否滿足速度、可伸縮性和穩定性要求。由于不存在或糟糕的性能測試而發送到市場的應用程序的性能指標很可能會獲得壞名聲,并且無法達到預期的銷售目標。
此外,像太空發射計劃或救生醫療設備這樣的關鍵任務應用程序應該進行性能測試,以確保它們能夠長時間運行而不出現偏差。
根據Dunn & Bradstreet的數據,59%的財富500強公司每周估計會有1.6小時的停機時間。考慮到擁有至少1萬名員工的財富500強公司平均每小時支付56美元,對于這樣的組織來說,停機成本的人工部分每周將達到896,000美元,換算成每年超過4,600萬美元。
據估計,谷歌網站(8月19日至13日)宕機5分鐘就會給這家搜索巨頭造成高達54.5萬美元的損失。
據估計,由于最近亞馬遜網絡服務中斷,公司每秒鐘損失1100美元的銷售額。
因此,性能測試非常重要。
性能測試的類型
負載測試——檢查應用程序在預期用戶負載下執行的能力。目標是在軟件應用程序上線之前確定性能瓶頸。
壓力測試——包括在極端工作負載下測試應用程序,看它如何處理高流量或數據處理。目標是確定應用程序的斷點。
耐久性測試——是為了確保軟件能夠在很長一段時間內處理預期的負載。
峰值測試——測試軟件對用戶產生的負載突然大幅峰值的反應。
批量測試-在批量測試下的大編號。的。數據被填充到數據庫中,整個軟件系統的行為被監視。目的是檢查軟件應用程序在不同數據庫容量下的性能。
可擴展性測試——可伸縮性測試的目標是確定軟件應用程序在“擴展”以支持用戶負載增加方面的有效性。它有助于規劃軟件系統的容量增加。
常見性能問題
大多數性能問題都與速度、響應時間、加載時間和糟糕的可伸縮性有關。速度通常是應用程序最重要的屬性之一。運行緩慢的應用程序將失去潛在用戶。性能測試可確保應用程序運行速度足夠快,以保持用戶的注意力和興趣。看看下面列出的常見性能問題,并注意速度是如何成為其中許多問題的共同因素的:
加載時間長——加載時間通常是應用程序啟動所需的初始時間。這通常應該保持在最低限度。雖然有些應用程序不可能在一分鐘內完成加載,但如果可能的話,加載時間應該保持在幾秒鐘以內。
較差的響應時間——響應時間是從用戶向應用程序輸入數據到應用程序輸出對該輸入的響應所花費的時間。一般來說,這應該很快。如果用戶需要等待太長時間,他們就會失去興趣。
糟糕的可伸縮性——當軟件產品不能處理預期的用戶數量或不能容納足夠廣泛的用戶時,它就會遭受糟糕的可伸縮性。應該進行負載測試,以確保應用程序可以處理預期的用戶數量。
瓶頸——瓶頸是系統中會降低整體系統性能的障礙。瓶頸是指在某些負載下,編碼錯誤或硬件問題導致吞吐量下降。瓶頸通常是由一段錯誤的代碼引起的。解決瓶頸問題的關鍵是找到導致速度變慢的代碼段,并試圖修復它。瓶頸通常可以通過修復運行不良的進程或添加額外的硬件來解決。一些常見的性能瓶頸是
CPU利用率
內存利用率
網絡利用率
操作系統限制
磁盤使用情況
如何進行性能測試
用于性能測試的方法可以有很大的不同,但是性能測試的目標是相同的。它可以幫助演示您的軟件系統滿足某些預定義的性能標準。或者它可以幫助比較兩個軟件系統的性能。它還可以幫助識別降低軟件系統性能的部分。
下面是關于如何執行性能測試的一般流程
步驟1)確定您的測試環境
了解您的物理測試環境、生產環境以及可用的測試工具。在開始測試過程之前,了解測試過程中使用的硬件、軟件和網絡配置的詳細信息。它將幫助測試人員創建更有效的測試。它還將幫助識別測試人員在性能測試過程中可能遇到的挑戰。
步驟2)確定性能驗收標準
這包括吞吐量、響應時間和資源分配的目標和約束。確定這些目標和約束之外的項目成功標準也是必要的。測試人員應該被授權設置性能標準和目標,因為項目規范通常不包括足夠廣泛的性能基準。有時可能根本沒有。如果可能的話,找到一個類似的應用程序進行比較是設置性能目標的好方法。
步驟3)計劃和設計性能測試
確定最終用戶之間的使用情況可能如何變化,并確定用于測試所有可能用例的關鍵場景。有必要模擬各種終端用戶,計劃性能測試數據并概述將收集哪些指標。
步驟4)配置測試環境
在執行前準備好測試環境。此外,安排工具和其他資源。
步驟5)實施測試設計
根據測試設計創建性能測試。
步驟6)運行測試
執行和監視測試。
步驟7)分析、調優和重新測試
整合、分析和共享測試結果。然后再進行微調和測試,看看性能是否有所改善或下降。由于每次重新測試的改進通常會越來越小,當CPU導致瓶頸時就停止。然后,您可以考慮增加CPU功率。
性能測試指標:被監控的參數
性能測試期間監測的基本參數包括:
處理器使用率——處理器執行非空閑線程所花費的時間。
內存使用-計算機上進程可用的物理內存量。
磁盤時間-磁盤忙于執行讀或寫請求的時間量。
帶寬-顯示網絡接口每秒使用的比特數。
私有字節數——一個進程分配的不能在其他進程之間共享的字節數。它們用于測量內存泄漏和使用情況。
提交內存量—使用的虛擬內存量。
內存頁數/秒——為解決硬頁錯誤而寫入或從磁盤讀取的頁數。硬頁錯誤是指從其他地方調用不是來自當前工作集的代碼并從磁盤檢索。
頁面錯誤/秒——處理器處理錯誤頁面的總速率。當進程需要來自其工作集之外的代碼時,同樣會發生這種情況。
每秒CPU中斷數——是處理器每秒接收和處理的平均硬件中斷數。
磁盤隊列長度-為平均。在采樣間隔內為選定磁盤排隊的讀和寫請求。
網絡輸出隊列長度-數據包中輸出數據包隊列的長度。超過兩個就意味著延遲,需要停止瓶頸。
每秒網絡字節總數——在接口上發送和接收字節的速率,包括分幀字符。
響應時間——從用戶輸入請求到接收到響應的第一個字符的時間。
吞吐量計算機或網絡每秒接收請求的速率。
連接池的數量-連接池滿足的用戶請求的數量。池中的連接滿足的請求越多,性能就越好。
最大活動會話-一次可以活動的最大會話數。
命中率——這與緩存數據處理的SQL語句數量有關,而不是昂貴的I/O操作。這是解決瓶頸問題的一個很好的開始。
每秒點擊率是第一。負載測試中每秒鐘web服務器上的點擊率。
回滾段——在任何時間點可以回滾的數據量。
數據庫鎖——需要對表和數據庫的鎖進行監視和仔細調優。
頂部等待——被監視,以確定在處理從內存中檢索數據的速度時可以減少什么等待時間
線程數——應用程序運行狀況可以通過線程數來衡量。正在運行和當前活動的線程。
垃圾收集——它與將未使用的內存返回給系統有關。為了提高效率,需要監控垃圾收集。
性能測試用例示例
測試用例01:驗證當1000個用戶同時訪問網站時,響應時間不超過4秒。
測試用例02:在網絡連接較慢的情況下,驗證應用程序負載下的響應時間在可接受的范圍內
測試用例03:檢查應用程序在崩潰前可以處理的最大用戶數。
測試用例04:當同時讀寫500條記錄時,檢查數據庫執行時間。
測試用例05:檢查應用程序和數據庫服務器在峰值負載條件下的CPU和內存使用情況
測試用例06:驗證應用程序在低、正常、中等和重載負載條件下的響應時間。
在實際性能測試執行過程中,模糊的術語如可接受范圍、重載等被具體的數字所取代。性能工程師根據業務需求和應用程序的技術前景來設置這些數字。
性能測試工具
市場上有各種各樣的性能測試工具。您選擇的測試工具取決于許多因素,如支持的協議類型、許可成本、硬件要求、平臺支持等。下面是一些常用的測試工具。
LoadNinja -是革命性的方式,我們加載測試。這個基于云的負載測試工具使團隊能夠記錄和即時回放全面的負載測試,而無需復雜的動態關聯,并在大規模的真實瀏覽器中運行這些負載測試。團隊能夠增加測試覆蓋率。將負載測試時間縮短60%以上。
HeadSpin -為用戶提供業界最好的性能測試能力。用戶可以通過HeadSpin平臺的性能測試功能,通過識別和解決應用程序、設備和網絡的性能問題,優化他們的數字體驗。HeadSpin提供真實的、真實的數據,消除來自數千個設備、網絡和位置的不確定性。用戶可以利用先進的人工智能功能,在性能問題影響用戶之前自動識別測試中的性能問題。
BlazeMeter -由熱衷于開源的工程師設計和建造。BlazeMeter可以讓您直接從IDE進行大規模負載和性能測試。另外,通過結合UX和負載測試,看看用戶在負載下看到了什么。最棒的是什么?一切都在這里:性能、功能、無腳本、API測試和監視、測試數據和模擬服務。
HP LoadRunner -是當今市場上最流行的性能測試工具。該工具能夠模擬成千上萬的用戶,將應用程序置于實際負載下,以確定它們在預期負載下的行為。Loadrunner的特點是虛擬用戶生成器,模擬真人用戶的操作。
Jmeter -用于web和應用服務器負載測試的領先工具之一。
常見問題解答
我們應該測試哪些應用程序?
性能測試總是只針對基于客戶端-服務器的系統進行。這意味著,任何不是基于客戶機-服務器架構的應用程序都不需要性能測試。
例如,Microsoft Calculator既不是基于客戶端-服務器的,也不運行多個用戶;因此它不是性能測試的候選。
性能測試與性能工程的區別是什么?
了解性能測試與性能工程的區別具有重要意義。現達成如下共識:
性能測試是一門涉及在各種參數下測試和報告軟件應用程序當前性能的學科。
性能工程是為了實現所需性能而對軟件進行測試和調優的過程。這個過程旨在優化最重要的應用程序性能特征,即用戶體驗。
從歷史上看,測試和調優是截然不同的領域,而且通常是相互競爭的領域。然而,在過去的幾年里,一些測試人員和開發人員已經獨立合作創建了調優團隊。因為這些團隊已經取得了巨大的成功,所以將性能測試與性能調優耦合起來的概念已經流行起來,現在我們稱之為性能工程。
結論
在軟件工程中,在銷售任何軟件產品之前,性能測試是必要的。它確保客戶滿意并保護投資者的投資免受產品失敗的影響。性能測試的成本通常可以通過提高客戶滿意度、忠誠度和保留率來彌補。
關注公眾號,可免費獲取如下資源:
回復[1], 獲取【Web安全測試規劃】
回復[2], 獲取【API測試白皮書】
回復[3], 獲取【移動APP測試軍規PPT】
回復[4], 獲取【AAR復盤模板】
回復[5], 獲取【測試資源】
推薦閱讀:測試接觸不到第一手需求,如何保證不漏測?線上問題,如何處理?怎么樣寫出好的測試用例?
我是阿薩。雙一流高校畢業,曾供職于世界100強企業。小目標日更 10 年。歡迎留言交流,看到會回復。更多精彩,請關注知識星球。關注公眾號,戳我的圈子,即可加入。