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