干貨技術(shù),第一時(shí)間送達(dá)! ![]() 開課通知:重磅消息 | 2021年最新全棧測(cè)試開發(fā)技能實(shí)戰(zhàn)指南(第2期) 大家好,我是黎潘,來(lái)自重慶,狂師老師的全棧測(cè)開訓(xùn)練營(yíng)中上一期的學(xué)員。 大多數(shù)測(cè)試人員在談到性能測(cè)試時(shí),往往會(huì)倍感壓力。對(duì)于我來(lái)說(shuō)更是如此,想做好性能測(cè)試 一、簡(jiǎn)述性能測(cè)試性能測(cè)試含義:系統(tǒng)在一個(gè)給定的環(huán)境和場(chǎng)景中的性能表現(xiàn)是否與預(yù)期目標(biāo)一致,評(píng)判系統(tǒng)是否存在性能缺陷,并根據(jù)測(cè)試結(jié)果識(shí)別性能瓶頸,改善系統(tǒng)性能的完整的過(guò)程。 介入時(shí)機(jī):通常是在功能測(cè)試完成之后,并且系統(tǒng)功能處于相對(duì)穩(wěn)定狀態(tài)。 1.1性能測(cè)試開展范圍客戶端:web端,PC端,移動(dòng)端,小程序,每一個(gè)都是不同領(lǐng)域的性能測(cè)試,關(guān)注點(diǎn)都不盡相同。還包括一個(gè)服務(wù)端的性能測(cè)試,本篇也主要是以服務(wù)端的性能測(cè)試來(lái)展開的。 1.2軟件性能關(guān)注點(diǎn)
使用過(guò)程中更加關(guān)注響應(yīng)時(shí)間,穩(wěn)定性。總得來(lái)說(shuō)就是用戶體驗(yàn)要好。
系統(tǒng)最大并發(fā),最大業(yè)務(wù)處理量,能支持多少用戶訪問(wèn),能否長(zhǎng)時(shí)間提供服務(wù),服務(wù)器資源使用,數(shù)據(jù)庫(kù)資源使用,系統(tǒng)是否可以實(shí)現(xiàn)擴(kuò)展??偟膩?lái)說(shuō),更加關(guān)注系統(tǒng)的穩(wěn)定性,資源利用率,可擴(kuò)展性,系統(tǒng)容量等。
架構(gòu)設(shè)計(jì),數(shù)據(jù)庫(kù)設(shè)計(jì),代碼設(shè)計(jì),是否存在不合理的內(nèi)存使用和線程同步方式,以及資源競(jìng)爭(zhēng)等,總的來(lái)說(shuō),更加關(guān)注系統(tǒng)架構(gòu),數(shù)據(jù)庫(kù)設(shè)計(jì),設(shè)計(jì)與代碼實(shí)現(xiàn)等。
系統(tǒng)資源指標(biāo),業(yè)務(wù)性能指標(biāo),DB性能指標(biāo),系統(tǒng)穩(wěn)定性,支持最大并發(fā),性能拐點(diǎn)等,幾乎包括了上述所有人員的關(guān)注點(diǎn)。 二、后端性能常見指標(biāo)2.1業(yè)務(wù)性能指標(biāo)并發(fā)用戶數(shù):并發(fā)用戶數(shù)取決于業(yè)務(wù)并發(fā)用戶數(shù)和用戶行為模式,也就是說(shuō)實(shí)際使用的用戶并不是每種用戶行為都會(huì)對(duì)服務(wù)端產(chǎn)生壓力,通常是指同一批用戶同時(shí)執(zhí)行一個(gè)對(duì)后端服務(wù)產(chǎn)生壓力的操作行為。 響應(yīng)時(shí)間:響應(yīng)時(shí)間是系統(tǒng)最重要的性能指標(biāo),直觀的反映了系統(tǒng)的快慢。指的是用戶端發(fā)出請(qǐng)求到得到響應(yīng)的整個(gè)過(guò)程所經(jīng)歷的。 系統(tǒng)處理能力:系統(tǒng)處理能力是指系統(tǒng)在利用系統(tǒng)硬件平臺(tái)和軟件平臺(tái)進(jìn)行信息處理的能力,通常有以下幾個(gè)指標(biāo)衡量。
吞吐量:系統(tǒng)在單位時(shí)間內(nèi)處理請(qǐng)求的數(shù)量。 事務(wù)成功率:?jiǎn)挝粫r(shí)間內(nèi)系統(tǒng)可以成功完成多少個(gè)定義的事務(wù)。 超時(shí)錯(cuò)誤率:主要指事務(wù)由于超時(shí)或系統(tǒng)內(nèi)部其它錯(cuò)誤導(dǎo)致失敗占總事務(wù)的比率。 2.2系統(tǒng)資源指標(biāo)CPU使用率:指用戶進(jìn)程與系統(tǒng)進(jìn)程消耗的CPU時(shí)間百分比。 內(nèi)存利用率:內(nèi)存利用率=(1-空閑內(nèi)存/總內(nèi)存大小)*100%。 磁盤I/O:磁盤吞吐量簡(jiǎn)稱為 Disk Throughput,是指在無(wú)磁盤故障的情況下單位時(shí)間內(nèi)通過(guò)磁盤的數(shù)據(jù)量。 網(wǎng)絡(luò)帶寬:發(fā)送和接收字節(jié)的速率,包括幀字符在內(nèi)。 數(shù)據(jù)庫(kù)性能指標(biāo):sql語(yǔ)句,連接數(shù),讀寫速度,資源使用率等。 上述只是一些常見的指標(biāo),通常還包括一些其他中間件,以及整個(gè)鏈路所經(jīng)過(guò)的服務(wù)器指標(biāo)。 2.3并發(fā)用戶數(shù),響應(yīng)時(shí)間,系統(tǒng)吞吐量三者之間的關(guān)系未達(dá)到系統(tǒng)瓶頸:隨著并發(fā)用戶數(shù)的增加,系統(tǒng)吞吐量會(huì)逐漸增加,此時(shí)響應(yīng)時(shí)間會(huì)較快。 達(dá)到系統(tǒng)瓶頸:隨著并發(fā)用戶數(shù)的增加,系統(tǒng)吞吐量不再會(huì)增加,此時(shí)響應(yīng)時(shí)間會(huì)開始變長(zhǎng)。 超過(guò)系統(tǒng)瓶頸:隨著并發(fā)用戶數(shù)的增加,系統(tǒng)吞吐量出現(xiàn)下降,此時(shí)響應(yīng)時(shí)間會(huì)逐漸拉長(zhǎng),甚至無(wú)響應(yīng)。 三、常見性能測(cè)試方法后端性能測(cè)試:通過(guò)模擬一定的并發(fā)用戶量,獲取一系列需要的系統(tǒng),業(yè)務(wù)性能指標(biāo),來(lái)驗(yàn)證是否滿足我們預(yù)期性能需求或者探索系統(tǒng)的容量和潛在的問(wèn)題。 代碼級(jí)性能測(cè)試:在單元測(cè)試階段,針對(duì)代碼本身,例如通過(guò)多次執(zhí)行單元測(cè)試用例,獲取一些關(guān)鍵算法的性能指標(biāo),是否滿足需求。 壓力測(cè)試:系統(tǒng)在一定資源飽和的情況下,模擬一定用戶量,不斷對(duì)系統(tǒng)施壓,驗(yàn)證系統(tǒng)處于壓力情況下的性能表現(xiàn),尋找系統(tǒng)的性能瓶頸點(diǎn)。 配置測(cè)試:觀察系統(tǒng)在不同配置下性能的表現(xiàn),了解不同環(huán)境配置對(duì)系統(tǒng)性能的影響程度。 并發(fā)測(cè)試:模擬多個(gè)用戶同一時(shí)間訪問(wèn)一個(gè)系統(tǒng),模塊或數(shù)據(jù)記錄等其他并發(fā)操作,關(guān)注系統(tǒng)可能存在的性能瓶頸,如內(nèi)存泄漏,線程死鎖或資源競(jìng)爭(zhēng)等問(wèn)題。 可靠性測(cè)試:給系統(tǒng)施加一定的壓力,持續(xù)運(yùn)行一段時(shí)間,觀察系統(tǒng)能否穩(wěn)定運(yùn)行。 四、企業(yè)中常見性能測(cè)試類型性能基準(zhǔn)測(cè)試:基于固定的硬件環(huán)境和部署架構(gòu)(比如專用的服務(wù)器、固定的專用網(wǎng)絡(luò)環(huán)境、固定大小的集群規(guī)模、相同的系統(tǒng)配置、相同的數(shù)據(jù)庫(kù)背景數(shù)據(jù)等),通過(guò)執(zhí)行固定的性能測(cè)試場(chǎng)景得到系統(tǒng)的性能測(cè)試報(bào)告,然后與上一版本發(fā)布時(shí)的指標(biāo)進(jìn)行對(duì)比,如果發(fā)現(xiàn)指標(biāo)有“惡化”的趨勢(shì),就需要進(jìn)一步排查。 穩(wěn)定性測(cè)試:又稱可靠性測(cè)試,主要是通過(guò)長(zhǎng)時(shí)間(7*24 小時(shí))模擬被測(cè)系統(tǒng)的測(cè)試負(fù)載,來(lái)觀察系統(tǒng)在長(zhǎng)期運(yùn)行過(guò)程中是否有潛在的問(wèn)題。通過(guò)對(duì)系統(tǒng)指標(biāo)的監(jiān)控,穩(wěn)定性測(cè)試可以發(fā)現(xiàn)諸如內(nèi)存泄漏、資源非法占用等問(wèn)題。 并發(fā)測(cè)試:是在高并發(fā)情況下驗(yàn)證單一業(yè)務(wù)功能的正確性以及性能的測(cè)試手段。高并發(fā)測(cè)試一般使用思考時(shí)間為零的虛擬用戶腳本來(lái)發(fā)起具有“集合點(diǎn)”的測(cè)試。 容量規(guī)劃測(cè)試:是為了完成容量規(guī)劃而設(shè)計(jì)執(zhí)行的測(cè)試。容量規(guī)劃的主要目的是,解決當(dāng)系統(tǒng)負(fù)載將要達(dá)到極限處理能力時(shí),我們應(yīng)該如何通過(guò)垂直擴(kuò)展(增加單機(jī)的硬件資源)和水平擴(kuò)展(增加集群中的機(jī)器數(shù)量)增加系統(tǒng)整體的負(fù)載處理能力的問(wèn)題。 五、常見的性能測(cè)試工具目前市面上比較常見的服務(wù)端性能測(cè)試少說(shuō)也有幾十種,這里我們簡(jiǎn)單的比較下常見的三種,即JMeter,locust,LoadRunner。 5.1 組件對(duì)比![]() 5.2 功能區(qū)別![]() 通過(guò)以上對(duì)比,大家結(jié)合自己公司的需求,選擇合適的性能測(cè)試工具。 5.3 locust入門定義Locust是使用Python語(yǔ)言編寫實(shí)現(xiàn)的開源性能測(cè)試工具,簡(jiǎn)潔、輕量、高效,并發(fā)機(jī)制基于gevent協(xié)程,可以實(shí)現(xiàn)單機(jī)模擬生成較高的并發(fā)壓力。中文意為:蝗蟲,蝗蟲過(guò)境,寸草不生。 主要特點(diǎn)
安裝直接通過(guò) 安裝成功后可以輸入 簡(jiǎn)單腳本示例
locust腳本命令運(yùn)行
locust的UI界面![]()
測(cè)試結(jié)果頁(yè)面![]()
其他模塊![]()
由于本篇是對(duì)性能測(cè)試?yán)碚撝R(shí)的分享,想了解更多l(xiāng)ocust的高級(jí)使用方法,可以參考官方文檔。 注意: 后端性能測(cè)試工具是實(shí)現(xiàn)后端性能測(cè)試的技術(shù)手段,不能簡(jiǎn)單地把使用后端性能測(cè)試工具等同于后端性能測(cè)試。一般是在測(cè)試腳本開發(fā)和測(cè)試執(zhí)行階段發(fā)揮作用。 六、性能測(cè)試流程對(duì)于我們初學(xué)性能測(cè)試時(shí),往往會(huì)陷入一個(gè)誤區(qū),那就是單純的去學(xué)習(xí)性能測(cè)試工具,認(rèn)為學(xué)會(huì)了工具的使用,就掌握了性能測(cè)試。這其實(shí)是大錯(cuò)特錯(cuò)的,工具的學(xué)習(xí)只是其中的一個(gè)階段,而且是比較基礎(chǔ)的一個(gè)階段,在整個(gè)性能測(cè)試流程中,性能測(cè)試執(zhí)行策略,性能場(chǎng)景和分析才是重中之重,也是最難的部分。 性能測(cè)試的學(xué)習(xí)路徑可以分為五個(gè)階段:
6.1 性能測(cè)試的前提日常工作中,被問(wèn)及何時(shí)進(jìn)行性能測(cè)試時(shí),往往很多人都是摸不著頭腦,大多數(shù)情況下都是被動(dòng)接受領(lǐng)導(dǎo)或者開發(fā)給的任務(wù),才回去進(jìn)行性能測(cè)試,很少人會(huì)主動(dòng)出擊,去思考在什么階段進(jìn)行性能測(cè)試,下面給出幾點(diǎn)建議,當(dāng)然大前提肯定是在功能測(cè)試之后,整個(gè)系統(tǒng)都是處于一種穩(wěn)定的狀態(tài)。
6.2 制定性能測(cè)試目標(biāo)
6.3 性能測(cè)試場(chǎng)景設(shè)計(jì)1. 測(cè)試負(fù)載組成
2. 負(fù)載策略
3. 資源監(jiān)控范圍定義
4. 終止方式
5. 負(fù)載產(chǎn)生規(guī)劃
6.4 制定性能測(cè)試方案性能測(cè)試方案是在正式進(jìn)行性能測(cè)試之前的工作,主要包括:
七、總結(jié)今天談到的性能測(cè)試知識(shí),不過(guò)是九牛一毛。想要正真掌握性能測(cè)試還需要不斷的親身實(shí)踐,擴(kuò)大自己知識(shí)的廣度和深度,對(duì)于初識(shí)性能測(cè)試且沒(méi)有實(shí)際經(jīng)驗(yàn)的我來(lái)說(shuō),這將是我以后學(xué)習(xí),并加以實(shí)踐的基石。 如果你覺得文章還不錯(cuò),幫忙 點(diǎn)贊、轉(zhuǎn)發(fā)、關(guān)注、留言 ,因?yàn)檫@將是我持續(xù)輸出更多優(yōu)質(zhì)文章的最強(qiáng)動(dòng)力! |
|
來(lái)自: 測(cè)試開發(fā)技術(shù) > 《待分類》