性能测试之性能测试的基础理论
?轉(zhuǎn)載于http://www.cnblogs.com/Sweettesting/?,感謝分享!
隨著軟件行業(yè)的快速發(fā)展,現(xiàn)代的軟件系統(tǒng)越來(lái)越復(fù)雜,功能越來(lái)越多,測(cè)試人員除了需要保證基本的功能測(cè)試質(zhì)量,性能也隨越來(lái)越受到人們的關(guān)注。但是一提到性能測(cè)試,很多人就直接連想到Loadrunner。認(rèn)為L(zhǎng)R就等于性能測(cè)試,其實(shí)這是不對(duì)的。LR只是性能測(cè)試的一個(gè)工具,但性能測(cè)試不僅僅是LR。本文會(huì)從以下幾個(gè)方面介紹基礎(chǔ)的性能測(cè)試?yán)碚?#xff0c;盡量理論結(jié)合實(shí)踐,讓性能測(cè)試學(xué)習(xí)不在是工具的學(xué)習(xí)。
目錄:
一、什么是軟件性能
二、不同群體眼中的性能
三、性能測(cè)試類(lèi)型
四、性能測(cè)試應(yīng)用場(chǎng)景
五、性能測(cè)試基本概念
六、理發(fā)店模型和曲線拐點(diǎn)模型
七、做好性能測(cè)試需要掌握的知識(shí)
一、 什么是軟件性能
定義:軟件的性能是軟件的一種非功能特性,它關(guān)注的不是軟件是否能夠完成特定的功能,而是在完成該功能時(shí)展示出來(lái)的及時(shí)性。
由定義可知性能關(guān)注的是軟件的非功能特性,所以一般來(lái)說(shuō)性能測(cè)試介入的時(shí)機(jī)是在功能測(cè)試完成之后。另外,由定義中的及時(shí)性可知性能也是一種指標(biāo),可以用時(shí)間或其它指標(biāo)來(lái)衡量,通常我們會(huì)使用某些工具或手段來(lái)檢測(cè)軟件的某些指標(biāo)是否達(dá)到了要求,這就是性能測(cè)試。?
性能測(cè)試定義:指通過(guò)自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件來(lái)對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。
二、不同群體眼中的性能
不同的人由于人生觀、世界觀、價(jià)值觀以及教育背景、知識(shí)體系、人生閱歷的不同,對(duì)于同一事物或問(wèn)題的看法可能不同。對(duì)于軟件性能也是如此,不同的人由于視角的不同,所關(guān)注的點(diǎn)也可能不同。下面來(lái)看看在不同的人群眼中性能分別是什么樣的。
- 用戶眼中的性能
- 開(kāi)發(fā)眼中的性能
- 系統(tǒng)管理員眼中的性能
- 測(cè)試眼中的性能是什么樣的呢?
測(cè)試人員通常是做為軟件質(zhì)量控制的一個(gè)角色,不僅僅是找bug,需要對(duì)整個(gè)軟件的質(zhì)量負(fù)責(zé),性能也屬于質(zhì)量的一部分,因此測(cè)試人員眼中的性能應(yīng)該是全面的,考慮的東西也需要全面:
1、測(cè)試人員需要考慮全面的性能,包括用戶、開(kāi)發(fā)、管理員等各個(gè)視角的性能。
2、測(cè)試人員在做性能測(cè)試時(shí)除開(kāi)要關(guān)注表面的現(xiàn)象如響應(yīng)時(shí)間,也需要關(guān)注本質(zhì),比如用戶看不到的服務(wù)器利用率,架構(gòu)設(shè)計(jì)是否合理?代碼是否合理等言方方面面。
三、性能測(cè)試類(lèi)型
基準(zhǔn)測(cè)試:在給系統(tǒng)施加較低壓力時(shí),查看系統(tǒng)的運(yùn)行狀況并記錄相關(guān)數(shù)做為基礎(chǔ)參考
負(fù)載測(cè)試:是指對(duì)系統(tǒng)不斷地增加壓力或增加一定壓力下的持續(xù)時(shí)間,直到系統(tǒng)的某項(xiàng)或多項(xiàng)性能指標(biāo)達(dá)到安全臨界值,例如某種資源已經(jīng)達(dá)到飽和狀態(tài)等 。
壓力測(cè)試:壓力測(cè)試是評(píng)估系統(tǒng)處于或超過(guò)預(yù)期負(fù)載時(shí)系統(tǒng)的運(yùn)行情況,關(guān)注點(diǎn)在于系統(tǒng)在峰值負(fù)載或超出最大載荷情況下的處理能力。
穩(wěn)定性測(cè)試:在給系統(tǒng)加載一定業(yè)務(wù)壓力的情況下,使系統(tǒng)運(yùn)行一段時(shí)間,以此檢測(cè)系統(tǒng)是否穩(wěn)定。
并發(fā)測(cè)試:測(cè)試多個(gè)用戶同時(shí)訪問(wèn)同一個(gè)應(yīng)用、同一個(gè)模塊或者數(shù)據(jù)時(shí)是否存在死鎖或者其他性能問(wèn)題,
四、性能測(cè)試應(yīng)用場(chǎng)景(領(lǐng)域)
1、性能測(cè)試應(yīng)用場(chǎng)景(領(lǐng)域)主要有:能力驗(yàn)證、規(guī)劃能力、性能調(diào)優(yōu)、缺陷發(fā)現(xiàn)、性能基準(zhǔn)比較,下表簡(jiǎn)單介紹和對(duì)比了這幾個(gè)場(chǎng)景的各自用途和特點(diǎn):?
| 主要用途 | 典型場(chǎng)景 | 特點(diǎn) | 常用性能 測(cè)試方法 | |
| 能力驗(yàn)證 | 關(guān)注在給定的軟硬件條件下,系統(tǒng)能否具有預(yù)期的能力表現(xiàn) | 在要求平均響應(yīng)時(shí)間小于2秒的前提下,如何判斷系統(tǒng)是否能夠支持50萬(wàn)用戶/天的訪問(wèn)量? | a)要求在已確定的環(huán)境下運(yùn)行 b)需要根據(jù)典型場(chǎng)景設(shè)計(jì)測(cè)試方案和用例,包括操作序列和并發(fā)用戶量,需要明確的性能目標(biāo)。 | a)負(fù)載測(cè)試 b)壓力測(cè)試 c)穩(wěn)定性能測(cè)試 |
| 規(guī)劃能力 | 關(guān)注如何使系統(tǒng)具有我們要求的性能能力 ? | 某某系統(tǒng)計(jì)劃在一年內(nèi)獲客量在到xxx萬(wàn),系統(tǒng)到時(shí)候是否能支持這么多用戶量?如果不能需要如何調(diào)整系統(tǒng)的配置? | a) 它是一種探索性的測(cè)試 b) 常用于了解系統(tǒng)性能和獲得擴(kuò)展性能的方法 | a) 負(fù)載測(cè)試 b) 壓力測(cè)試 c) 配置測(cè)試 |
| 性能調(diào)優(yōu) | 主要用于對(duì)系統(tǒng)性能進(jìn)行調(diào)優(yōu) | 某某系統(tǒng)上線運(yùn)行一段時(shí)間后響應(yīng)速度越來(lái)越慢,此時(shí)應(yīng)該如何辦? | 每次只改變一個(gè)配置,切忌無(wú) 休止的調(diào)優(yōu) | a) 并發(fā)測(cè)試 b) 壓力測(cè)試 c) 配置測(cè)試 |
| 缺陷發(fā)現(xiàn) | 發(fā)現(xiàn)缺陷或問(wèn)題重現(xiàn)、定位手段 | 某些缺陷只有在高負(fù)載的情況下才能暴露出來(lái),如線程鎖、資源競(jìng)爭(zhēng)或內(nèi)存泄露。 | 做為系統(tǒng)測(cè)試的補(bǔ)充,用來(lái)發(fā)現(xiàn)并發(fā)問(wèn)題,或是對(duì)系統(tǒng)已經(jīng)出現(xiàn)的問(wèn)題進(jìn)行重現(xiàn)和定位 | a) 并發(fā)測(cè)試 b) 壓力測(cè)試 ? |
| 性能基準(zhǔn)比較 | 常用于敏捷開(kāi)發(fā)過(guò)程中,敏捷開(kāi)發(fā)流程的特點(diǎn)是小步快走,快速試錯(cuò),迭代周期短,需求變化頻繁。很難定義完善的性能測(cè)試目標(biāo),也沒(méi)有時(shí)間在每個(gè)迭代開(kāi)展詳細(xì)的性能測(cè)試,可以通過(guò)建立性能基線,通過(guò)比較每次迭代中的性能表現(xiàn)變化,判斷迭代是否達(dá)到了目標(biāo)。 | |||
2、通常在某個(gè)性能場(chǎng)景(領(lǐng)域)中需要聯(lián)合使用多種性能測(cè)試方法一起進(jìn)行性能測(cè)試,下表為性能測(cè)試應(yīng)用領(lǐng)域與測(cè)試方法關(guān)聯(lián):
| ? | 能力驗(yàn)證 | 規(guī)劃能力 | 性能調(diào)優(yōu) | 缺陷發(fā)現(xiàn) | 性能基準(zhǔn)比較 |
| 基準(zhǔn)測(cè)試 | √ | ? | ?√ | ? | ? |
| 負(fù)載測(cè)試 | ?√ | √ | √ | ? | ? |
| 壓力測(cè)試 | √ | √ | √ | √ | √ |
| 并發(fā)測(cè)試 | ? | ? | ? | √ | √ |
| 穩(wěn)定性測(cè)試 | √ | ? | ? | ? | ? |
五、性能測(cè)試基本概念
1、響應(yīng)時(shí)間(Response Time)
a)定義:從用戶發(fā)送一個(gè)請(qǐng)求到用戶接收到服務(wù)器返回的響應(yīng)數(shù)據(jù)這段時(shí)間就是響應(yīng)時(shí)間
b) 關(guān)鍵路徑:下圖為一次http請(qǐng)求經(jīng)過(guò)的路徑,請(qǐng)求會(huì)經(jīng)過(guò)網(wǎng)絡(luò)發(fā)送到web服務(wù)器進(jìn)行處理,如果需要操作DB,再由網(wǎng)絡(luò)轉(zhuǎn)發(fā)到數(shù)據(jù)庫(kù)進(jìn)行處理,然后返回值給web服務(wù)器,web服務(wù)器最后把結(jié)果數(shù)據(jù)通過(guò)網(wǎng)絡(luò)返回給客戶端。
c) 計(jì)算方法:Response time = (N1+N2+N3+N4)+ (A1+A2+a3),即:(網(wǎng)絡(luò)時(shí)間 + 應(yīng)用程序處理時(shí)間)
d) 響應(yīng)時(shí)間-負(fù)載對(duì)應(yīng)關(guān)系:
圖中拐點(diǎn)說(shuō)明:
? ? ? 1、響應(yīng)時(shí)間突然增加
? ? ? 2、意味著系統(tǒng)的一種或多種資源利用達(dá)到的極限
? ? ? 3、通常可以利用拐點(diǎn)來(lái)進(jìn)行性能測(cè)試分析與定位
2、吞吐量(Throughput)
a)定義:單位時(shí)間內(nèi)系統(tǒng)處理的客戶端請(qǐng)求的數(shù)量
b)計(jì)算單位:一般使用請(qǐng)求數(shù)/秒做為吞吐量的單位,出可以使用 頁(yè)面數(shù)/秒表表示。
? ?另外,從業(yè)務(wù)角度來(lái)說(shuō)也可以使用 訪問(wèn)人數(shù) /天 或 頁(yè)面訪問(wèn)量/天 做為單位。
c)計(jì)算方法:Throughput = (number of requests) / (total time).
d)吞吐量-負(fù)載對(duì)應(yīng)關(guān)系:
圖中拐點(diǎn)說(shuō)明:
? ? ? 1、吞吐量逐漸達(dá)到飽和
? ? ? 2、意味著系統(tǒng)的一種或多種資源利用達(dá)到的極限
? ? ? 3、通常可以利用拐點(diǎn)來(lái)進(jìn)行性能測(cè)試分析與定位?
3、并發(fā)數(shù):
并發(fā)用戶數(shù):某一物理時(shí)刻同時(shí)向系統(tǒng)提交請(qǐng)求的用戶數(shù),提交的請(qǐng)求可能是同一個(gè)場(chǎng)景或功能,也可以是不同場(chǎng)景或功能。
在線用戶數(shù):某段時(shí)間內(nèi)訪問(wèn)系統(tǒng)的用戶數(shù),這些用戶并不一定同時(shí)向系統(tǒng)提交請(qǐng)求
系統(tǒng)用戶數(shù):系統(tǒng)注冊(cè)的總用戶數(shù)據(jù)
三者之間的關(guān)系:系統(tǒng)用戶數(shù) >= 在線用戶數(shù) >= 并發(fā)用戶數(shù)
4、資源利用率
a) 定義:指的是對(duì)不同系統(tǒng)資源的使用程度,通常以占用最大值的百分比來(lái)衡量
b) 通常需要關(guān)注的服務(wù)器資源如下:
? ? 1、CPU:就像人的大腦,主要負(fù)責(zé)相關(guān)事情的判斷以及實(shí)際處理的機(jī)制
? ? 2、內(nèi)存:大腦中的記憶塊區(qū),將眼睛,皮膚等收集到的信息記錄起來(lái)的地方,以供cpu進(jìn)行判斷,但是是臨時(shí)的,訪問(wèn)速度快,如果關(guān)機(jī)或斷電這里的數(shù)據(jù)會(huì)消失。
? ? 3、磁盤(pán)IO:大腦中的記憶區(qū)塊,將重要的數(shù)據(jù)保存起來(lái)(永久保存,關(guān)機(jī)或斷電不會(huì)丟失,速度慢),以便將來(lái)再次使用這些數(shù)據(jù)。
? ? 4、網(wǎng)絡(luò):
c)資源利用-負(fù)載對(duì)應(yīng)關(guān)系:
圖中拐點(diǎn)說(shuō)明:
? ? ?1、服務(wù)器某資源使用逐漸達(dá)到飽和
? ? ?2、通常可以利用拐點(diǎn)來(lái)進(jìn)行性能測(cè)試分析與定位
5、其它常用概念:
a)?TPS:Transactions Per Second,每秒事務(wù)數(shù)
b)?思考時(shí)間:Think Time,用戶每個(gè)操作后的暫停時(shí)間,或者叫操作之間的間隔時(shí)間,此時(shí)間內(nèi)是不對(duì)服務(wù)器產(chǎn)生壓力的
c)?點(diǎn)擊數(shù):Hit Per Second,每秒鐘用戶向WEB服務(wù)器提交的HTTP請(qǐng)求數(shù)。這個(gè)指標(biāo)是WEB應(yīng)用特有的一個(gè)指標(biāo):WEB應(yīng)用是"請(qǐng)求-響應(yīng)"模式,用戶發(fā)出一次申請(qǐng),服務(wù)器就要處理一次,所以點(diǎn)擊是WEB應(yīng)用能夠處理的交易的最小單位。如果把每次點(diǎn)擊定義為一個(gè)交易,點(diǎn)擊率和TPS就是一個(gè)概念。容易看出,點(diǎn)擊率越大,對(duì)服務(wù)器的壓力越大。點(diǎn)擊率只是一個(gè)性能參考指標(biāo),重要的是分析點(diǎn)擊時(shí)產(chǎn)生的影響。需要注意的是,這里的點(diǎn)擊并非指鼠標(biāo)的一次單擊操作,因?yàn)樵谝淮螁螕舨僮髦?#xff0c;客戶端可能向服務(wù)器發(fā)出多個(gè)HTTP請(qǐng)求.
d)PV:訪問(wèn)一個(gè)URL,產(chǎn)生一個(gè)PV(Page View,頁(yè)面訪問(wèn)量),每日每個(gè)網(wǎng)站的總PV量是形容一個(gè) 網(wǎng)站規(guī)模的重要指標(biāo)。
? ? ?UV:作為一個(gè)獨(dú)立的用戶,訪問(wèn)站點(diǎn)的所有頁(yè)面均算作一個(gè)UV(Unique Visitor,用戶訪問(wèn))
六、理發(fā)店模型和曲線拐點(diǎn)模型
上面介紹了很多性能測(cè)試中的基本概念,比較抽象,可以通過(guò)性能測(cè)試?yán)戆l(fā)店模型或地鐵進(jìn)站模型來(lái)幫忙我們更好的理解這些概念。這里不做詳細(xì)介紹了,需要的可直接查看原文。
七、做好性能測(cè)試需要掌握的知識(shí):
掌握一門(mén)編程語(yǔ)言
掌握計(jì)算機(jī)原理和操作系統(tǒng)知識(shí)
良好的網(wǎng)絡(luò)基礎(chǔ)
掌握數(shù)據(jù)庫(kù)知識(shí)
中間件(apache,tomcat)
常用抓包工具等
?轉(zhuǎn)載于http://www.cnblogs.com/Sweettesting/?,感謝分享!
轉(zhuǎn)載于:https://www.cnblogs.com/lycun-0426/p/11082849.html
總結(jié)
以上是生活随笔為你收集整理的性能测试之性能测试的基础理论的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: win10怎么设置虚拟内存 Win10如
- 下一篇: 为什么win7电脑运行很慢怎么办啊 Wi