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