本文轉(zhuǎn)載:http://www.reibang.com/p/c0cfbc1105af
性能測(cè)試的概念
定義:軟件的性能是軟件的非功能特性冶匹,關(guān)注的是軟件完成功能時(shí)展現(xiàn)出來(lái)的性能。一般性能測(cè)試在系統(tǒng)功能趨于完善且穩(wěn)定時(shí)咆瘟,才會(huì)進(jìn)行性能測(cè)試嚼隘。
通過(guò)工具模擬多種正常、峰值袒餐、異常負(fù)載條件對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試飞蛹。
性能測(cè)試的類型
基準(zhǔn)測(cè)試:在給系統(tǒng)施加壓力時(shí),查看系統(tǒng)運(yùn)行狀況并記錄相關(guān)數(shù)據(jù)為參考匿乃。
負(fù)載測(cè)試:對(duì)系統(tǒng)不斷的增加壓力或在一定壓力下的持續(xù)時(shí)間桩皿,知道系統(tǒng)達(dá)到某項(xiàng)性能指標(biāo)或多項(xiàng)性能指標(biāo)達(dá)到安全的臨界值,不斷加壓使系統(tǒng)達(dá)到瓶頸幢炸。
壓力測(cè)試:
(1)穩(wěn)定性壓力測(cè)試:在不同的條件下(內(nèi)存使用泄隔、一定時(shí)間段內(nèi)的多少個(gè)請(qǐng)求)系統(tǒng)表現(xiàn)出來(lái)的反應(yīng)宛徊、處理能力(會(huì)考慮系統(tǒng)的容錯(cuò)能力佛嬉、恢復(fù)能力)
(2)破壞性壓力測(cè)試:不斷的加壓、直至系統(tǒng)奔潰闸天、掛掉暖呕,得出系統(tǒng)的最大承受能力在哪里
穩(wěn)定性測(cè)試:在一定業(yè)務(wù)壓力負(fù)載的條件下,系統(tǒng)運(yùn)行一段時(shí)間苞氮,以檢測(cè)系統(tǒng)是否穩(wěn)定運(yùn)行湾揽。
并發(fā)性測(cè)試:在多個(gè)用戶同時(shí)訪問(wèn)同一個(gè)頁(yè)面或模塊,檢測(cè)系統(tǒng)是否存在死鎖或性能問(wèn)題笼吟。
失效恢復(fù)測(cè)試:針對(duì)有多余備份和負(fù)責(zé)均衡的系統(tǒng)設(shè)計(jì)库物,檢測(cè)如果系統(tǒng)局部發(fā)生故障,系統(tǒng)能否繼續(xù)執(zhí)行贷帮。
配置測(cè)試:通過(guò)對(duì)被測(cè)系統(tǒng)的軟硬件調(diào)整戚揭,了解各種環(huán)境下對(duì)系統(tǒng)的最優(yōu)配置
性能測(cè)試應(yīng)用場(chǎng)景:
性能測(cè)試應(yīng)用領(lǐng)域與測(cè)試方法關(guān)聯(lián)
性能測(cè)試的常用指標(biāo)
1、響應(yīng)時(shí)間(Response Time)
定義:從用戶發(fā)送一個(gè)請(qǐng)求到用戶接收到服務(wù)器返回的響應(yīng)數(shù)據(jù)這段時(shí)間就是響應(yīng)時(shí)間
計(jì)算方法:Response time = (網(wǎng)絡(luò)時(shí)間 + 應(yīng)用程序處理時(shí)間)
合理的響應(yīng)時(shí)間 2/5/10 (2秒之內(nèi)給客戶響應(yīng)被用戶認(rèn)為是非常有吸引力的撵枢,5秒之內(nèi)民晒,比較糟糕,10秒之內(nèi)锄禽,糟糕的用戶體驗(yàn)潜必,超過(guò)10秒,請(qǐng)求失斘值)
響應(yīng)時(shí)間-負(fù)載對(duì)應(yīng)關(guān)系:
image.png
圖中拐點(diǎn)說(shuō)明:
1刮便、響應(yīng)時(shí)間突然增加
2、意味著系統(tǒng)的一種或多種資源利用達(dá)到的極限
3绽慈、通澈藓担可以利用拐點(diǎn)來(lái)進(jìn)行性能測(cè)試分析與定位
2辈毯、吞吐量
定義:?jiǎn)挝粫r(shí)間內(nèi)系統(tǒng)處理的客戶端請(qǐng)求的數(shù)量
計(jì)算方法:Throughput = (number of requests) / (total time)
吞吐量-負(fù)載對(duì)應(yīng)關(guān)系:
①上升階段:吞吐量隨著負(fù)載的增加而增加,吞吐量和負(fù)載成正比搜贤;
②平穩(wěn)階段:吞吐量隨著負(fù)載的增加而保持穩(wěn)定谆沃,無(wú)太大變化或波動(dòng);
③下降階段:吞吐量隨著負(fù)載的增加而下降仪芒,吞吐量和負(fù)載成反比唁影;
image.png
a1面積越大,說(shuō)明系統(tǒng)的性能能力越強(qiáng)掂名,a2面積越大据沈,說(shuō)明系統(tǒng)穩(wěn)定性越好,a3面積越大饺蔑,說(shuō)明系統(tǒng)的容錯(cuò)能力越好
吞吐率
吞吐量/傳輸時(shí)間锌介,即單位時(shí)間內(nèi)網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)量,也可以指單位時(shí)間內(nèi)處理客戶請(qǐng)求數(shù)量猾警,它是衡量網(wǎng)絡(luò)性能的重要指標(biāo)孔祸。
通常情況下,吞吐率用“字節(jié)數(shù)/秒”來(lái)衡量发皿,當(dāng)然崔慧,也可以用“請(qǐng)求數(shù)/秒”和“頁(yè)面數(shù)/秒”來(lái)衡量;
3穴墅、并發(fā)數(shù)
①狹義上的并發(fā):所有用戶在同一時(shí)間點(diǎn)進(jìn)行同樣的操作惶室,一般指同一類型的業(yè)務(wù)場(chǎng)景,比如1000個(gè)用戶同時(shí)登陸系統(tǒng)玄货;
②廣義上的并發(fā):多個(gè)用戶與系統(tǒng)發(fā)生了交互拇涤,這些業(yè)務(wù)場(chǎng)景可以是相同的也可以是不同的,交叉請(qǐng)求和處理較多誉结;
4、資源利用率
資源指標(biāo)與硬件資源消耗直接相關(guān)券躁,而系統(tǒng)指標(biāo)則與用戶場(chǎng)景及需求直接相關(guān):
image.png
資源指標(biāo):
CPU使用率:指用戶進(jìn)程與系統(tǒng)進(jìn)程消耗的CPU時(shí)間百分比惩坑,長(zhǎng)時(shí)間情況下,一般可接受上限不超過(guò)85%也拜;
內(nèi)存利用率:內(nèi)存利用率=(1-空閑內(nèi)存/總內(nèi)存大幸允妗)*100%,一般至少有10%可用內(nèi)存慢哈,內(nèi)存使用率可接受上限為85%蔓钟;
磁盤(pán)I/O: 磁盤(pán)主要用于存取數(shù)據(jù),因此當(dāng)說(shuō)到IO操作的時(shí)候卵贱,就會(huì)存在兩種相對(duì)應(yīng)的操作滥沫,存數(shù)據(jù)的時(shí)候?qū)?yīng)的是寫(xiě)IO操作侣集,取數(shù)據(jù)的時(shí)候?qū)?yīng)的是是讀IO操作,一般使用% Disk Time(磁盤(pán)用于讀寫(xiě)操作所占用的時(shí)間百分比)度量磁盤(pán)讀寫(xiě)性能兰绣;
網(wǎng)絡(luò)帶寬:一般使用計(jì)數(shù)器Bytes Total/sec來(lái)度量世分,其表示為發(fā)送和接收字節(jié)的速率,包括幀字符在內(nèi)缀辩;判斷網(wǎng)絡(luò)連接速度是否是瓶頸臭埋,可以用該計(jì)數(shù)器的值和目前網(wǎng)絡(luò)的帶寬比較;
系統(tǒng)指標(biāo):
并發(fā)用戶數(shù):?jiǎn)挝粫r(shí)間內(nèi)與系統(tǒng)發(fā)生交互的用戶數(shù)臀玄;
在線用戶數(shù):某段時(shí)間內(nèi)訪問(wèn)系統(tǒng)的用戶數(shù)瓢阴,這些用戶并不一定同時(shí)向系統(tǒng)提交請(qǐng)求;
平均響應(yīng)時(shí)間:系統(tǒng)處理事務(wù)的響應(yīng)時(shí)間的平均值健无;事務(wù)的響應(yīng)時(shí)間是從客戶端提交訪問(wèn)請(qǐng)求到客戶端接收到服務(wù)器響應(yīng)所消耗的時(shí)間荣恐;
事務(wù)成功率:性能測(cè)試中,定義事務(wù)用于度量一個(gè)或者多個(gè)業(yè)務(wù)流程的性能指標(biāo)睬涧,如用戶登錄募胃、保存訂單、提交訂單操作均可定義為事務(wù)畦浓,單位時(shí)間內(nèi)系統(tǒng)可以成功完成多少個(gè)定義的事務(wù)痹束,在一定程度上反應(yīng)了系統(tǒng)的處理能力,一般以事務(wù)成功率來(lái)度量讶请;
超時(shí)錯(cuò)誤率:主要指事務(wù)由于超時(shí)或系統(tǒng)內(nèi)部其它錯(cuò)誤導(dǎo)致失敗占總事務(wù)的比率祷嘶;
資源利用-負(fù)載對(duì)應(yīng)關(guān)系:
image.png
圖中拐點(diǎn)說(shuō)明:
1、服務(wù)器某件資源使用逐漸達(dá)到飽和
2夺溢、通陈畚。可以利用拐點(diǎn)來(lái)進(jìn)行性能測(cè)試分析與定位
5、其它常用概念:
TPS
Transaction Per Second:每秒事務(wù)數(shù)风响,指服務(wù)器在單位時(shí)間內(nèi)(秒)可以處理的事務(wù)數(shù)量嘉汰,一般以request/second為單位;
QPS是查詢状勤,而TPS是事務(wù)鞋怀,事務(wù)是查詢的入口,也包含其他類型的業(yè)務(wù)場(chǎng)景持搜,因此QPS應(yīng)該是TPS的子集密似!
QPS
Query Per Second:每秒查詢率,指服務(wù)器在單位時(shí)間內(nèi)(秒)處理的查詢請(qǐng)求速率葫盼;
TPS和QPS都是衡量系統(tǒng)處理能力的重要指標(biāo)残腌,一般和并發(fā)結(jié)合起來(lái)判斷系統(tǒng)的處理能力;
Thinking Time
思考時(shí)間,在性能測(cè)試中抛猫,模擬用戶的真實(shí)操作場(chǎng)景蟆盹。用戶操作的事務(wù)與事務(wù)之間是有一定間隔的,此時(shí)間內(nèi)是不對(duì)服務(wù)器產(chǎn)生壓力的邑滨,引入這個(gè)概念是為了并發(fā)測(cè)試(有交叉業(yè)務(wù)場(chǎng)景)時(shí)日缨,業(yè)務(wù)場(chǎng)景比率更符合真實(shí)業(yè)務(wù)場(chǎng)景;
PV
Page View:頁(yè)面瀏覽量掖看,通常是衡量一個(gè)頁(yè)面甚至網(wǎng)站流量的重要指標(biāo)匣距;
細(xì)分的話,有獨(dú)立訪問(wèn)者數(shù)量哎壳、重復(fù)訪問(wèn)者數(shù)量毅待、單獨(dú)頁(yè)面訪問(wèn)數(shù)量、用戶停留時(shí)間等類型归榕;
RT/ART
Response Time/average Response Time:響應(yīng)時(shí)間/平均響應(yīng)時(shí)間尸红,指一個(gè)事務(wù)花費(fèi)多長(zhǎng)時(shí)間完成;
一般來(lái)說(shuō)刹泄,性能測(cè)試中平均響應(yīng)時(shí)間更有代表意義外里。細(xì)分的話,還有最小最大響應(yīng)時(shí)間特石,50%盅蝗、90%用戶響應(yīng)時(shí)間等;
性能測(cè)試流程
需求分析
需要分析的系統(tǒng)信息
需要分析的業(yè)務(wù)信息
性能需求評(píng)估
在實(shí)施性能測(cè)試之前姆蘸,我們需要對(duì)系統(tǒng)做性能的評(píng)估墩莫,評(píng)價(jià)是否需要做性能測(cè)試。如果需要做性能測(cè)試逞敷,則需要進(jìn)一步確定測(cè)什么范圍狂秦、性能指標(biāo)是什么
確定測(cè)試藥要點(diǎn)
關(guān)鍵業(yè)務(wù)
確定被測(cè)項(xiàng)目是否屬于關(guān)鍵業(yè)務(wù),有哪些主要的業(yè)務(wù)邏輯點(diǎn)推捐,特別是跟交易相關(guān)的功能點(diǎn)裂问。例如轉(zhuǎn)賬,扣款等接口牛柒。如果項(xiàng)目(或功能點(diǎn))不屬于關(guān)鍵業(yè)務(wù)(或關(guān)鍵業(yè)務(wù)點(diǎn))
日請(qǐng)求量
確定被測(cè)項(xiàng)目各功能點(diǎn)的日請(qǐng)求量(可以統(tǒng)計(jì)不同時(shí)間粒度下的請(qǐng)求量如:小時(shí)堪簿,日,周焰络,月)。如果日請(qǐng)求量很高符喝,系統(tǒng)壓力很大闪彼,而且又是關(guān)鍵業(yè)務(wù),該項(xiàng)目需要做性能測(cè)試,而且關(guān)鍵業(yè)務(wù)點(diǎn)畏腕,可以被確定為性能點(diǎn)
邏輯復(fù)雜度
判定被測(cè)項(xiàng)目各功能點(diǎn)的邏輯復(fù)雜度缴川。如果一個(gè)主要業(yè)務(wù)的日請(qǐng)求量不高,但是邏輯很復(fù)雜描馅,則也需要通過(guò)性能測(cè)試把夸。原因是,在分布式方式的調(diào)用中铭污,當(dāng)某一個(gè)環(huán)節(jié)響應(yīng)較慢恋日,就會(huì)影響到其它環(huán)節(jié),造成雪崩效應(yīng)嘹狞。
運(yùn)營(yíng)推廣活動(dòng)
根據(jù)運(yùn)營(yíng)的推廣計(jì)劃來(lái)判定待測(cè)系統(tǒng)未來(lái)的壓力岂膳。未雨綢繆、防患于未然磅网、降低運(yùn)營(yíng)風(fēng)險(xiǎn)是性能測(cè)試的主要目標(biāo)谈截。被測(cè)系統(tǒng)的性能不僅能滿足當(dāng)前壓力,更需要滿足未來(lái)一定時(shí)間段內(nèi)的壓力涧偷。因此簸喂,事先了解運(yùn)營(yíng)推廣計(jì)劃,對(duì)性能點(diǎn)的制定有很大的作用燎潮。例如喻鳄,運(yùn)營(yíng)計(jì)劃做活動(dòng),要求系統(tǒng)每天能支撐多少 PV跟啤、多少 UV诽表,或者一個(gè)季度后,需要能支撐多大的訪問(wèn)量等等數(shù)據(jù)隅肥。當(dāng)新項(xiàng)目(或功能點(diǎn))屬于運(yùn)營(yíng)重點(diǎn)推廣計(jì)劃范疇之內(nèi)竿奏,則該項(xiàng)目(或功能點(diǎn))也需要做性能測(cè)試。
建立性能指標(biāo)
a.選取核心業(yè)務(wù)流程(重要程度/頻繁)
b.并發(fā)用戶數(shù)
c.事物吞吐需求
d.響應(yīng)時(shí)間需求
e.系統(tǒng)占用資源需求
f.可擴(kuò)展性需求
建立系統(tǒng)負(fù)載模型
業(yè)務(wù)層面:核心業(yè)務(wù)流程吞吐率腥放、高峰期業(yè)務(wù)分布時(shí)段
系統(tǒng)負(fù)載:高峰/平常場(chǎng)景負(fù)載泛啸、CPU/IO/NETWORK
數(shù)據(jù)來(lái)源:服務(wù)器監(jiān)控、數(shù)據(jù)庫(kù)日志秃症、用戶需求
制定測(cè)試計(jì)劃的時(shí)間和方案
預(yù)測(cè)本次性能測(cè)試的起止時(shí)間和終止時(shí)間候址。測(cè)試環(huán)境的配置:局域網(wǎng)、虛擬機(jī)种柑、操作系統(tǒng)岗仑、數(shù)據(jù)庫(kù)、中間件聚请。參與人員:測(cè)試人員荠雕。產(chǎn)出:測(cè)試方案稳其、結(jié)論。
搭建測(cè)試環(huán)境
測(cè)試機(jī)環(huán)境
執(zhí)行機(jī)環(huán)境:這個(gè)是用來(lái)執(zhí)行負(fù)載的機(jī)器炸卑。
負(fù)載工具:JDK/Eclipse/LoadRuner or Jmeter或Galting等
監(jiān)控工具:準(zhǔn)備性能測(cè)試時(shí)的服務(wù)器資源既鞠、JVM、數(shù)據(jù)庫(kù)監(jiān)控工具盖文、以便日后進(jìn)行性能測(cè)試分析和調(diào)優(yōu)
服務(wù)器環(huán)境
系統(tǒng)運(yùn)行環(huán)境:這個(gè)通常就是我們的測(cè)試環(huán)境嘱蛋,Linux系統(tǒng)/數(shù)據(jù)庫(kù)/應(yīng)用服務(wù)/各種監(jiān)控工具。
大部分公司的測(cè)試環(huán)境會(huì)低于生產(chǎn)環(huán)境五续,同時(shí)還需要考慮到不同的硬件配置是否會(huì)是制約系統(tǒng)性能的重要因素洒敏!因此在測(cè)試環(huán)境中,需要部署多個(gè)不同的測(cè)試環(huán)境返帕,在不同的硬件配置上檢查應(yīng)用系統(tǒng)的性能桐玻,配置大概是如下幾類:
①數(shù)據(jù)庫(kù)服務(wù)器
②應(yīng)用服務(wù)器
③負(fù)載模擬器
④軟件運(yùn)行環(huán)境,
平臺(tái)并對(duì)不同配置下系統(tǒng)的測(cè)試結(jié)果進(jìn)行分析荆萤,得出最優(yōu)結(jié)果(最適合當(dāng)前系統(tǒng)的配置)
測(cè)試場(chǎng)景設(shè)計(jì)
通過(guò)和業(yè)務(wù)部門(mén)溝通以及以往用戶操作習(xí)慣镊靴,確定用戶操作習(xí)慣模式,以及不同的場(chǎng)景用戶數(shù)量链韭,操作次數(shù)偏竟,確定測(cè)試指標(biāo),以及性能監(jiān)控等
性能測(cè)試結(jié)果分析和調(diào)優(yōu)
瓶頸定位分析:
吞吐量二八法則(80%的業(yè)務(wù)在20%的時(shí)間內(nèi)完成/正太分布)
響應(yīng)時(shí)間:2/5/10原則
內(nèi)存敞峭、磁盤(pán)踊谋、I/O、進(jìn)程旋讹、網(wǎng)絡(luò)分析殖蚕、硬件、操作系統(tǒng)沉迹、中間件睦疫、應(yīng)用瓶頸等,具體情況具體分析鞭呕。
測(cè)試報(bào)告和跟蹤
性能測(cè)試報(bào)告是性能測(cè)試的里程碑蛤育,通過(guò)報(bào)告能展示出性能測(cè)試的最終成果,展示系統(tǒng)性能是否符合需求葫松,是否有性能隱患