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