為什么進(jìn)行性能測試
應(yīng)用程序糟糕的性能表現(xiàn),通常不能讓企業(yè)達(dá)到預(yù)期的利益。
以最終用戶的眼光看待性能
關(guān)注“應(yīng)用程序”的性能,此處的“應(yīng)用程序”指的是應(yīng)用程序的所有部分(硬件、操作系統(tǒng)、系統(tǒng)架構(gòu)、中間件、應(yīng)用程序、網(wǎng)絡(luò)等),而非指某一部分。
性能度量
性能度量的兩種類型:服務(wù)型、效率型。
-
服務(wù)型指標(biāo):可用性和響應(yīng)時間,衡量的是應(yīng)用程序?yàn)橛脩舴?wù)效果的好壞。
- 可用性(Availability):應(yīng)用程序?qū)τ谧罱K用戶的可用時間??捎眯圆缓茫馕吨罱K用戶無法有效地使用該應(yīng)用系統(tǒng),是很嚴(yán)重的問題。
- 響應(yīng)時間(Response Time):一般指系統(tǒng)響應(yīng)時間(平均響應(yīng)時間、90%的平均響應(yīng)時間、方差等),即從用戶端發(fā)起請求到接收到應(yīng)用程序給出完整響應(yīng)所經(jīng)過的時間。
-
效率型指標(biāo):吞吐量和利用率,衡量的是應(yīng)用程序在應(yīng)用架構(gòu)基礎(chǔ)上對發(fā)揮效率的高低。
- 吞吐量(Throughput):應(yīng)用程序在單位時間內(nèi)能處理的請求數(shù)量。例如,在一段特定的時間內(nèi)對某個接口請求的次數(shù)。
- 利用率(Utilization):占用系統(tǒng)資源的百分比。例如,當(dāng)100個用戶同時在線時,消耗了多少網(wǎng)絡(luò)帶寬,以及在服務(wù)器上內(nèi)存、CPU、磁盤等使用情況。
性能標(biāo)準(zhǔn)
關(guān)于性能好壞的行業(yè)標(biāo)準(zhǔn),沒有這樣的指導(dǎo)標(biāo)準(zhǔn)存在。不過,業(yè)內(nèi)倒有一個約定俗成的標(biāo)準(zhǔn),即響應(yīng)時間的臨界點(diǎn)為2秒,尤其對于 B/S 應(yīng)用。
糟糕性能原因分析
性能問題通常會比較晚才發(fā)現(xiàn),而且越晚發(fā)現(xiàn),解決成本就越高。
性能測試成熟度級別
- 救火(Firefighting):應(yīng)用程序發(fā)布前很少或從來沒有進(jìn)行過性能測試的情況。所有性能缺陷(100%)都在生產(chǎn)環(huán)境上發(fā)現(xiàn)并解決。
- 性能驗(yàn)證(Performance Validation):公司為性能測試單獨(dú)安排了一段時間,而不是在產(chǎn)品的后期才開始進(jìn)行性能測試。因此,在研發(fā)過程中,仍然有相當(dāng)多的性能缺陷被發(fā)現(xiàn)( 30% )。這是當(dāng)前絕大多數(shù)公司的做法。
- 性能驅(qū)動(Performance Driven):在應(yīng)用程序生命周期中的每一階段都考慮了性能。因此,當(dāng)系統(tǒng)上線后,出現(xiàn)的性能缺陷就不會太多( 5% )。性能驅(qū)動(Performance Driven)級別是所有企業(yè)應(yīng)該追尋的目標(biāo)。
糟糕性能的原因
- 系統(tǒng)設(shè)計階段缺少性能方面的考慮(考慮整體系統(tǒng)集成后的性能);
- 直到最后一刻才進(jìn)行性能測試(性能測試越早越好);
- 對系統(tǒng)的容量或規(guī)模沒有足夠的考慮(最終用戶的規(guī)模和分布);
- 對性能峰值預(yù)期偏低(12306);
- 性能測試還不規(guī)范,沒有有效的方案參考或?qū)嵤?
- 沒有使用性能測試自動化工具。
根本原因:在應(yīng)用程序的整個生命周期中,性能測試未能得到應(yīng)有的重視。
性能測試的用戶概念
- 系統(tǒng)用戶數(shù):指所有可能訪問這套系統(tǒng)的用戶數(shù),也叫系統(tǒng)的全部用戶數(shù)。
- 在線用戶數(shù):指同時訪問這套系統(tǒng)的用戶數(shù)量。
- 并發(fā)用戶數(shù):在一個時間切面上同時向這套系統(tǒng)發(fā)起請求的用戶數(shù)。
參考文檔
- 《應(yīng)用程序性能測試的藝術(shù)》
微信公眾號:daodaotest