2021-12-30 21:26:08|已瀏覽:353次
軟件性能測試的目標是識別應用程序中的所有性能瓶頸。一個軟件系統的性能不僅取決于系統本身的設計和編碼,而且取決于系統所依賴的運行環境。系統的運行環境會依賴于一些關鍵因素,例如:系統架構、硬件配置、網絡帶寬、配套的軟件如數據庫和中間件等、以及外部的負載大小。
系統性能的改善是測試、調整、再測試、再調整……的一個持續改進的過程,即性能調優,根據性能測試的結果對軟件的設計,代碼,系統的配置進行調整。
性能測試的類型
性能測試主要包含6種類型,如下表所示。
類型 |
說明 |
負載測試 |
確定軟件在給定時間內隨著工作負載增加的運行方式,工作負載可以是并發用戶、事務數、軟件行為等。在被測系統上不斷增加壓力,直到性能指標(如響應時間)超過預期指標或者某種資源使用已經達到飽和狀態。可以找到系統的處理極限,為系統調優提供數據。 |
壓力測試 |
測量超出正常工作參數、更高的流量負載(更多用戶、事務等)下的軟件穩定性,即系統在一定飽和狀態下,例如CPU、內存、磁盤空間等硬件資源飽和的情況下,系統能夠處理的會話能力,以及系統是否會出現錯誤。 |
穩定性測試 |
評估軟件在一個固定的常規工作負載下的長期性能。換句話說,它決定了軟件能夠承受恒定的工作負載多長時間以提供長期的可持續性。在測試期間,測試團隊監控KPI,如內存泄漏、內存使用、內存不足等。穩定性測試還分析長時間使用后的響應時間和吞吐量,以觀察這些指標是否一致。 |
尖峰測試 |
尖峰測試是一種壓力測試,它測量軟件在顯著的、突然的工作負載增加(如用戶并發數量)情況下的性能。軟件是否能夠反復快速地處理突然增加的工作負載。 |
容量測試 |
測試軟件在處理大量數據時的效率,用于檢查數據丟失、系統響應時間、數據存儲可靠性等。 |
可伸縮性測試 | 測量軟件在處理不斷增加的工作量方面的有效性。可以通過在監視軟件性能的同時逐漸添加數據量或用戶來執行可伸縮性測試。 |
如今,隨著DevOps的發展,性能測試已經上升為軟件系統全生命周期性能工程。本文從五個方面介紹性能測試的工具和解決方案:客戶端性能測試、服務端性能測試、分布式系統的應用性能監控、分布式系統的全鏈路壓測。
客戶端性能測試工具
1)Google Lighthouse
Lighthouse 是 Google 開發的一款分析 Web 應用和頁面性能的開源工具。Lighthouse分析Web應用程序和Web頁面,收集關于開發人員最佳實踐的現代性能指標和見解,讓開發人員根據生成的評估頁面,來進行網站優化和完善,提高用戶體驗。Lighthouse是直接集成到chrome開發者工具中的,位于‘Audits’面板下。2) PerfDog
PerfDog 性能狗是移動全平臺 iOS\Android 性能測試工具平臺,快速定位分析性能問題,提升 APP 應用及游戲性能和品質,手機無需 ROOT/越獄,手機硬件、游戲及應用無需做任何更改,極簡化即插即用。
官網地址:
https://wetest.qq.com/product/perfdog
3) Monkey
Monkey 是 Android SDK 提供的一個命令行工具,使用簡單、方便地運行在任何版本的 Android 模擬器和實體設備上。Monkey 會發送偽隨機的用戶事件流,適合對 app 做壓力測試。
4) Monkeyrunner
MonkeyRunner工具提供了多個API,通過monkeyrunner API 可以寫一個Python的程序來模擬操作控制Android APP,測試其穩定性并通過截屏可以方便地記錄出現的問題。
5) mobileperf
天貓團隊開源的PC Android性能穩定性測試工具,可以收集Android性能數據: cpu 內存 流暢度fps logcat日志 流量 進程線程數 進程啟動日志,mobileperf也支持原生monkey test。下載地址:https://github.com/alibaba/mobileperf6) Pyroscope
Pyroscope是一個開源的連續分析平臺。能夠幫你發現代碼中的性能問題和瓶頸、CPU利用率高的原因。并且幫你了解應用程序的調用樹,提供豐富的圖表和調用樹展示。官網地址:https://pyroscope.io7) MemoryLeakDetector
MemoryLeakDetector是由西瓜視頻android團隊開發的本地內存泄漏監視工具,它具有訪問簡單,監視范圍廣,性能優良和穩定性好的優點。它被廣泛用于ByteDance的主要應用程序的本機內存泄漏管理中。
官網地址:https://github.com/bytedance/memory-leak-detector服務端性能測試工具
8) JMeter
JMeter 是 Apache 組織開發的基于 Java 的壓力測試工具。用于對軟件做壓力測試,它最初被設計用于 Web 應用測試,但后來擴展到其他測試領域。它可以用于測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、數據庫、FTP 服務器等等。
JMeter 可以用于對服務器、網絡或對象模擬巨大的負載,來自不同壓力類別下測試它們的強度和分析整體性能。
官網地址:https://jmeter.apache.org/
9) LoadRunner
LoadRunner 是一種預測系統行為和性能的負載測試工具。通過模擬上千萬用戶實施并發負載及實時性能監測的方式來確認和查找問題,LoadRunner 能夠對整個企業架構進行測試。
官網地址:
https://www.microfocus.com/zh-cn/portfolio/performance-engineering/overview
10) WebLOAD
WebLOAD是一款針對Web應用程序的企業級負載和性能測試工具,提供性能、完整性和可伸縮性測試等功能,能夠同時模擬數千個用戶,因此您可以測試重流量負載,并報告應用程序中的弱點、約束和性能瓶頸。使用WebLOAD進行網站負載測試、連續測試、云負載測試等。該工具可以從云端或本地機器生成負載,并提供一個集成開發環境(IDE),用于可視化地記錄、編輯和調試測試腳本。官網地址:https://www.radview.com/11) Gatling
Gatling 是一款基于 Scala 開發的高性能服務器性能測試開源工具,同時也是一款功能強大的負載測試工具,開箱即用。Gatling主要用于測量基于HTTP的服務器,比如Web應用程序,RESTful服務等。Gatling是針對任何 HTTP 服務器進行負載測試的首選工具。
官網地址:https://gatling.io/
12) k6
k6是高性能的負載測試工具,也是一種高性能工具,旨在在預生產和QA環境中以高負載運行測試,可使用JavaScript編寫腳本。它是一個以開發人員為中心(當然,測試人員亦可以使用,因為真的很方便),免費和開源的負載測試工具,旨在使性能測試具有生產力和令人愉悅的體驗,可最大程度地減少系統資源的消耗。
官網地址:https://k6.io/
13) Vegata
Vegeta 是一個用Go語言編寫的多功能的 HTTP 負載測試工具,提供命令行工具和一個開發包。
官網地址:
https://github.com/tsenart/vegeta
14) Locust
Locust是使用Python開發的支持分布式的一款開源壓力測試工具,可以通過寫python腳本的方式來對web接口進行負載測試。Locust在單臺機器上能夠支持幾千并發用戶訪問,并且由于其對分布式運行的支持,理論上來說,Locust能在使用較少壓力機的前提下支持極高并發數的測試。
官網地址:https://locust.io/
分布式系統的性能監控工具
在微服務架構的分布式系統中,當客戶端發起一個請求時,往往會調用多個服務,涉及多個中間件,加上系統又分布在多臺服務器上,因此,當系統出現性能瓶頸時,故障診斷就變得非常復雜。分布式系統的應用性能監控(APM)工具通過服務調用鏈追蹤分析來定位鏈路上的性能瓶頸。
在線性能監控是指借助監控工具,監控系統性能的實際數據,因為是真實數據,比研發環境中通過工具產生負載得到的測試結果更客觀,更有分析價值。
15) SkyWalkingSkyWalking是一款國內開源的優秀的APM工具,提供了一個分布式系統的直觀的觀測平臺,用于從服務和云原生基礎設施收集、處理及可視化數據,通過監控、告警、可視化和分布式追蹤等功能為微服務、分布式,以及容器化的系統架構提供了可觀測性(observability)。它可以觀測橫跨不同云的分布式系統,而且從 SkyWalking 6 開始支持下一代的分布式架構Service Mesh。
官網地址:http://skywalking.apache.org/16)Pinpoint
Pinpoint是一個用于大規模分布式系統的APM(應用程序性能管理)工具,用Java/PHP編寫。Pinpoint提供了一個解決方案,幫助分析系統的總體結構,以及通過跟蹤分布式應用程序中的事務,分析系統中的組件如何相互連接,用于大型分布式系統的全鏈路監控,可以獲取不同服務之間,服務與數據庫,以及服務內部的方法的調用關系,還可以監控方法調用時長、可用率和內存等。下載地址:
https://pinpoint-apm.github.io/pinpoint/
分布式系統的全鏈路壓測平臺
全鏈路壓測是指模擬真實業務場景中的海量用戶請求和數據訪問生產環境,對整個業務鏈路進行全方位的、真實的壓力測試,提前找到分布式系統的性能瓶頸點并持續調優的實踐。目前企業大多采用的是基于開源工具Gatling、JMeter 搭建壓測集群進行全鏈路壓測。同時,國內也有商用的全鏈路壓測解決方案,如Perfma全鏈路壓測解決方案、京東ForceBot平臺、美團的 Quake、高德的 TestPG、字節跳動的Rhino、阿里媽媽的MagicOTP和性能測試平臺ACP,以及阿里的AMAZON、PTS和JVM-SANDBOX平臺。
本文由培訓無憂網長沙牛耳教育課程顧問老師整理發布,希望能夠對想參加長沙軟件測試培訓的學生有所幫助。更多軟件測試培訓課程信息可關注培訓無憂網電腦IT培訓或添加老師微信:15033336050
注:尊重原創文章,轉載請注明出處和鏈接 http://m.dedgn.cn/news-id-11361.html 違者必究!部分文章來源于網絡由培訓無憂網編輯部人員整理發布,內容真實性請自行核實或聯系我們,了解更多相關資訊請關注軟件測試頻道查看更多,了解相關專業課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050