2.1認(rèn)識(shí)性能測(cè)試
2.1.1認(rèn)識(shí)軟件性能
軟件性能:軟件的性能是軟件的一種非功能特性返十,它關(guān)注的不是軟件是否能夠完成特定的功能阴汇,而是在完成該功能時(shí)展示出來的及時(shí)性谱轨。
性能關(guān)注的是軟件的非功能性衷畦,所以一般來說性能測(cè)試介入的時(shí)機(jī)是在功能測(cè)試完成之后。
性能也是一種指標(biāo)植酥,可以用時(shí)間或其它指標(biāo)來衡量诬滩,通常我們會(huì)使用某些工具或手段來檢測(cè)軟件的某些指標(biāo)是否達(dá)到了要求鸯匹,這就是性能測(cè)試雾消。
2.1.2為什么要進(jìn)行性能測(cè)試
? ? ? ?多個(gè)客戶端同時(shí)訪問造成壓力灾搏。
Web應(yīng)用服務(wù)器、應(yīng)用服務(wù)器立润、數(shù)據(jù)庫狂窑、網(wǎng)絡(luò)
2.1.3性能測(cè)試的概念
定義:軟件系統(tǒng)的性能測(cè)試是一個(gè)很大的概念,覆蓋面非常廣泛桑腮。
①對(duì)軟件系統(tǒng)而言泉哈,包括執(zhí)行效率、資源占用破讨、系統(tǒng)穩(wěn)定性丛晦、安全性、兼容性提陶、可靠性烫沙、可擴(kuò)展性。
②性能測(cè)試是描述測(cè)試對(duì)象與性能相關(guān)的特征并對(duì)其進(jìn)行評(píng)價(jià)而實(shí)施和執(zhí)行的一類測(cè)試搁骑。
③主要通過自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件下來對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試又固。
2.1.4不同群體眼中的性能
①用戶眼中的性能
②開發(fā)眼中的性能
③系統(tǒng)管理員眼中的性能
2.1.5測(cè)試眼中的性能
①測(cè)試人員需要考慮全面的性能仲器,包括用戶、開發(fā)仰冠、管理員等各個(gè)視角的性能乏冀。
②測(cè)試人員在做性能測(cè)試時(shí)除了要關(guān)注表面的現(xiàn)象如響應(yīng)時(shí)間,也需要關(guān)注本質(zhì)洋只,比如用戶看不到的服務(wù)器資源利用率辆沦、架構(gòu)設(shè)計(jì)是否合理昼捍、代碼是否合理等方方面面。
2.2性能測(cè)試的重要性
2.2.1由性能引發(fā)的嚴(yán)重問題
eg1:2008年的奧運(yùn)會(huì)票務(wù)系統(tǒng)肢扯,由于歐昂大的訂票人數(shù)超出預(yù)期妒茬,奧運(yùn)會(huì)票務(wù)系統(tǒng)“開工”后不久便陷入“癱瘓”狀態(tài),當(dāng)時(shí)對(duì)外公布的是奧運(yùn)會(huì)票務(wù)系統(tǒng)每小時(shí)能處理15萬張門票的銷售蔚晨,以及承擔(dān)每小時(shí)100萬次以上的網(wǎng)上瀏覽量乍钻,但10月30日系統(tǒng)死機(jī)前每小時(shí)的網(wǎng)上瀏覽量達(dá)到800萬,1小時(shí)售出的票也達(dá)到了20萬張铭腕。由于預(yù)估工作的缺陷银择,導(dǎo)致很多人無法通過網(wǎng)絡(luò)訂到自己想要的票,影響了很多人的熱情累舷,也損壞了國家形象浩考。
eg2:作為電商的代表,2009年11月22日被盈,eBay網(wǎng)站出現(xiàn)死機(jī)析孽,導(dǎo)致賣家至少損失了當(dāng)日銷售額的80%,原因是那年圣誕臨近時(shí)害捕,eBay網(wǎng)站上有超過2億待售商品绿淋,這個(gè)數(shù)字比上一年同期多出33%,正式這激增的33%的待售商品導(dǎo)致eBay網(wǎng)站不堪重負(fù)而死機(jī)尝盼,80%的銷售額對(duì)于eBay來說不可謂不嚴(yán)重吞滞。
2.2.2性能測(cè)試的重要性
①隨著社會(huì)的發(fā)展,用戶對(duì)產(chǎn)品的要求也越來越高盾沫,以前可能看重功能方面裁赠,現(xiàn)在正在逐步轉(zhuǎn)變?yōu)樾阅芊矫妗?/p>
②同時(shí)各大公司也加強(qiáng)了產(chǎn)品的性能測(cè)試,因?yàn)閺脑?jīng)發(fā)生的種種事件來看赴精,性能帶來的嚴(yán)重問題以及損失不容忽視佩捞,而性能測(cè)試的重要性也不言而喻。
2.2.3性能測(cè)試的目的
①評(píng)估當(dāng)前系統(tǒng)蕾哟。
②尋找瓶頸一忱,優(yōu)化性能。
③預(yù)測(cè)未來性能谭确。
2.3性能測(cè)試分類詳解
2.3.1性能測(cè)試的種類
①負(fù)載測(cè)試帘营。
②壓力測(cè)試。
③容量測(cè)試逐哈。
④其他:配置測(cè)試芬迄、并發(fā)測(cè)試、可靠性測(cè)試昂秃、穩(wěn)定性測(cè)試禀梳。
定義:
? ? ? ? ?性能測(cè)試是確定或者有效驗(yàn)證了系統(tǒng)或者軟件在測(cè)試環(huán)境下的速度杜窄、可伸縮以及(或者)穩(wěn)定性等各種特性。
? ? ? ? 性能是指足以滿足項(xiàng)目或者產(chǎn)品的性能目標(biāo)的響應(yīng)時(shí)間算途、吞吐量以及資源利用率等塞耕。
? ? ? 性能測(cè)試是一個(gè)總體的概念,其他的性格相關(guān)的測(cè)試都是性能測(cè)試的子范疇郊艘。
2.3.1.1負(fù)載測(cè)試
?①側(cè)重于確定當(dāng)前測(cè)試中的系統(tǒng)或者應(yīng)用軟件在工作負(fù)載條件下荷科,或者在實(shí)際運(yùn)行階段加載預(yù)期的容量時(shí),系統(tǒng)或者應(yīng)用軟件所具備的相關(guān)性能特性纱注。
?②通過逐步證據(jù)系統(tǒng)負(fù)載畏浆,測(cè)試系統(tǒng)性能的變化,并最終確定在滿足性能指標(biāo)下狞贱,系統(tǒng)所能夠承受的最大負(fù)載量刻获。
③負(fù)載測(cè)試是通過逐步加壓的方式來確定系統(tǒng)的處理能力,確定系統(tǒng)能夠承受的各項(xiàng)閥值瞎嬉。
2.3.1.2壓力測(cè)試
①確定當(dāng)系統(tǒng)或者應(yīng)用軟件在某些超過實(shí)際運(yùn)行所預(yù)期的條件下時(shí)所具備的性能特性蝎毡。
②通過逐步增加系統(tǒng)負(fù)載,測(cè)試系統(tǒng)性能的變化氧枣,并最終確定在什么負(fù)載條件下系統(tǒng)性能處于失效狀態(tài)沐兵,并獲得系統(tǒng)能提供最大的服務(wù)基礎(chǔ)。
③壓力測(cè)試是逐步增加負(fù)載便监,是系統(tǒng)某些資源達(dá)到飽和甚至失效的測(cè)試扎谎。
2.3.3.1壓力測(cè)試的目的
目的是發(fā)現(xiàn)在什么條件下系統(tǒng)的性能變得不可接受,并通過對(duì)應(yīng)用程序施加越來越大的負(fù)載烧董,直到發(fā)現(xiàn)應(yīng)用程序性能下降的拐點(diǎn)毁靶。
2.3.1.3容量測(cè)試
①在滿足性能目標(biāo)的前提下,系統(tǒng)能夠最大處理的最大會(huì)話能力逊移,確定系統(tǒng)可處理同時(shí)在線的最大用戶數(shù)预吆。
②容量測(cè)試確定了服務(wù)器的極限失效點(diǎn),同時(shí)監(jiān)控在各種不同負(fù)載和流量模式水平下的性能結(jié)果胳泉。
2.3.1.4配置測(cè)試
? ? ? 通過對(duì)被測(cè)試軟件的軟硬件配置的測(cè)試拐叉,找到系統(tǒng)各項(xiàng)資源的最優(yōu)分配原則。
2.3.1.5并發(fā)測(cè)試
? ? ? ?測(cè)試多個(gè)用戶同時(shí)訪問同一個(gè)應(yīng)用扇商、同一個(gè)模塊或者數(shù)據(jù)記錄時(shí)是否存在死鎖或者其他性能問題凤瘦,幾乎所有的性能測(cè)試都會(huì)涉及到一些并發(fā)測(cè)試。
2.3..1.6可靠性測(cè)試
①通過給系統(tǒng)加載一定的業(yè)務(wù)壓力的情況下钳吟,運(yùn)行一段時(shí)間廷粒,檢查系統(tǒng)是否穩(wěn)定窘拯。
②通澈烨遥可以測(cè)試出系統(tǒng)是否有內(nèi)存泄露等問題坝茎。
2.3.1.7穩(wěn)定性測(cè)試
? ? ? ?在復(fù)雜多變的環(huán)境下系統(tǒng)所能提供的總可靠性、健壯性暇番、功能和數(shù)據(jù)完整性嗤放、有效性以及響應(yīng)的連續(xù)性。
2.4性能測(cè)試應(yīng)用場(chǎng)景
①能力驗(yàn)證壁酬。
②缺陷發(fā)現(xiàn)次酌。
③規(guī)劃能力。
④性能調(diào)優(yōu)舆乔。
⑤性能基準(zhǔn)比較岳服。
2.4.1應(yīng)用場(chǎng)景特點(diǎn)
2.5性能測(cè)試常用指標(biāo)
2.5.1并發(fā)數(shù)
①并發(fā)用戶數(shù):某一物理時(shí)刻同時(shí)向系統(tǒng)提交請(qǐng)求的用戶數(shù),提交的請(qǐng)求可能是同一場(chǎng)景或功能希俩,也可以是不同場(chǎng)景或功能吊宋。
②在線用戶數(shù):某段時(shí)間內(nèi)訪問系統(tǒng)的用戶數(shù),這些用戶并不一定同時(shí)向系統(tǒng)提交請(qǐng)求颜武。
③系統(tǒng)用戶數(shù):系統(tǒng)注冊(cè)的總用戶數(shù)據(jù)璃搜。
三者之間的關(guān)系:系統(tǒng)用戶數(shù)≥在線用戶數(shù)≥并發(fā)用戶數(shù)
2.5.2響應(yīng)時(shí)間
定義:
? ? ? 從用戶發(fā)送一個(gè)請(qǐng)求到用戶接受到服務(wù)器返回的響應(yīng)數(shù)據(jù)這段時(shí)間就是響應(yīng)時(shí)間。
響應(yīng)時(shí)間的計(jì)算:
? ? ? 經(jīng)典理論:響應(yīng)時(shí)間=網(wǎng)絡(luò)響應(yīng)時(shí)間+應(yīng)用程序響應(yīng)時(shí)間
在沒有緩存的情況下鳞上,一個(gè)請(qǐng)求發(fā)出去后这吻,需要經(jīng)過網(wǎng)絡(luò)傳輸、DNS解析等步驟才能到達(dá)服務(wù)器篙议,服務(wù)器處理完后唾糯,經(jīng)由網(wǎng)絡(luò)傳輸返回給客戶端,而客戶端接受到以后涡上,要進(jìn)行解析渲染展示給用戶趾断。
響應(yīng)時(shí)間=網(wǎng)絡(luò)傳輸(請(qǐng)求)時(shí)間+服務(wù)器處理(一層或多層)時(shí)間+網(wǎng)絡(luò)傳輸(響應(yīng))時(shí)間+頁面前端解析渲染時(shí)間
2.5.3吞吐量
定義:
? ? ? 單位時(shí)間內(nèi)系統(tǒng)處理的客戶端請(qǐng)求的數(shù)量。
計(jì)算單位:一般人請(qǐng)求數(shù)/秒作為吞吐量的單位吩愧。從業(yè)務(wù)角度來說也可使用? 訪問人數(shù)/天 或 頁面訪問量/天? ?作為單位(不常用)
計(jì)算方法:Throughput=(number of requests)/ (total time)
吞吐量-負(fù)載對(duì)應(yīng)關(guān)系:
①吞吐量逐漸達(dá)到飽和芋酌。
②意味著系統(tǒng)的一種或多種資源利用達(dá)到的極限。
③通逞慵眩可以利用拐點(diǎn)來進(jìn)行性能測(cè)試分析與定位脐帝。
2.5.4資源利用率
定義:
? ? ? ?指的是對(duì)不同系統(tǒng)資源的使用程度,通常以占用最大值的百分比來衡量糖权。
2.5.5常用服務(wù)器資源指標(biāo)
CPU:就像人的大腦堵腹,主要負(fù)責(zé)相關(guān)事情的判斷以及實(shí)際處理的機(jī)制。
內(nèi)存:大腦中的記憶塊區(qū)星澳,將眼睛疚顷,皮膚等收集到的信息記錄起來的地方,以供CPU進(jìn)行判斷,但是是臨時(shí)的腿堤,訪問速度快阀坏,如果關(guān)機(jī)或斷電,這里的數(shù)據(jù)會(huì)消失笆檀。
磁盤IO:大腦中的記憶區(qū)塊忌堂,將重要的數(shù)據(jù)保存起來(永久保存,關(guān)機(jī)或斷電不會(huì)丟失酗洒,速度慢)士修,以遍將來再次使用這些資源。
網(wǎng)絡(luò):
2.5.6其他常用指標(biāo)
TPS:每秒通過事務(wù)數(shù)樱衷,是直接反應(yīng)系統(tǒng)性能的指標(biāo)棋嘲,該值大時(shí),系統(tǒng)性能會(huì)比較好矩桂,當(dāng)然每個(gè)系統(tǒng)都有它的上限封字,不可能無線大。將它與平均事務(wù)響應(yīng)時(shí)間進(jìn)行對(duì)比耍鬓,可以分析事務(wù)數(shù)量對(duì)響應(yīng)時(shí)間的影響阔籽。
思考時(shí)間:用戶每個(gè)操作后的暫停時(shí)間,或者叫操作之間的間隔時(shí)間牲蜀,此時(shí)間內(nèi)是不對(duì)服務(wù)器產(chǎn)生壓力的笆制。
每秒點(diǎn)擊數(shù):每秒用戶向WEB服務(wù)器提交的HTTP請(qǐng)求數(shù)。需要注意的是涣达,這里的點(diǎn)擊并非指鼠標(biāo)的一次單擊操作在辆,因?yàn)樵谝淮螁螕舨僮髦校蛻舳丝赡芟蚍?wù)器發(fā)出多個(gè)HTTP請(qǐng)求度苔。
PV:訪問一個(gè)URL匆篓,產(chǎn)生一個(gè)PV(page view,頁面訪問量),每日每個(gè)網(wǎng)站的總PV量是形容一個(gè)網(wǎng)站規(guī)模的重要指標(biāo)寇窑。
UV:作為一個(gè)獨(dú)立的用戶鸦概,訪問站點(diǎn)的所有頁面均算作一個(gè)UV(Unique? Vsitor,用戶訪問)。
2.6性能測(cè)試模型
2.6.1地鐵模型分析
eg:場(chǎng)景:某地鐵站進(jìn)站只有3個(gè)刷卡機(jī)甩骏。人少的情況下窗市,每位乘客很快就可以刷卡進(jìn)站,假設(shè)進(jìn)站需要1s饮笛。乘客耐心有限咨察,如果等待超過30min,就會(huì)暴躁福青、嘮叨摄狱,甚至選擇放棄脓诡。
場(chǎng)景一:只有1名乘客進(jìn)站時(shí),這名乘客可以在1s的時(shí)間內(nèi)完成進(jìn)站媒役,且只利用一臺(tái)刷卡機(jī)誉券,剩余2臺(tái)等待著。
場(chǎng)景二:只有2名乘客進(jìn)站時(shí)刊愚,2名乘客仍都可以在1s的時(shí)間內(nèi)完成進(jìn)站,且利用了2臺(tái)刷卡機(jī)踩验,剩余1臺(tái)等待著鸥诽。
場(chǎng)景三:只有3名乘客進(jìn)站時(shí),3名乘客還能在1s的時(shí)間內(nèi)完成進(jìn)站箕憾,且利用了3臺(tái)刷卡機(jī)牡借,資源得到充分利用。
場(chǎng)景四:A袭异、B钠龙、C三名乘客進(jìn)站,同時(shí)D御铃、E碴里、F乘客也要進(jìn)站,因?yàn)锳上真、B咬腋、C先到,所以D睡互、E根竿、F乘客需要排隊(duì),等A就珠、B寇壳、C三名乘客進(jìn)站完成后才行。那么A妻怎、B壳炎、C乘客進(jìn)站時(shí)間為1s,而D逼侦、E冕广、F乘客必須等待1s,所以他們3位在進(jìn)站的時(shí)間是2s偿洁。
場(chǎng)景五:假設(shè)這次進(jìn)站一次來了9名乘客撒汉,根據(jù)上面的場(chǎng)景,不難推斷出涕滋,這9名乘客中有3名的“響應(yīng)時(shí)間”為1s睬辐,有三名的“響應(yīng)時(shí)間”為2s(等待1s+進(jìn)站1s),還有三名的“響應(yīng)時(shí)間”為3s(等待2s+進(jìn)站1s)。
場(chǎng)景六:假設(shè)這次進(jìn)站一次來了10名乘客溯饵,根據(jù)上面的推算侵俗,必然存在1名乘客的“響應(yīng)時(shí)間”為4s,如果隨著大量的人流涌入進(jìn)站丰刊,可想而知就會(huì)達(dá)到乘客的忍耐極限隘谣。
場(chǎng)景七:如果地鐵正好在火車站,每名乘客都拿著大小不同的包啄巧,有的乘客拿的包太大導(dǎo)致在刷卡機(jī)那(堵塞)寻歧,這樣每名乘客的進(jìn)站時(shí)間就會(huì)又不一樣。
場(chǎng)景八:進(jìn)站的乘客越來越多秩仆,3臺(tái)刷卡機(jī)已經(jīng)無法滿足需求码泛,于是為了減少人流的積壓,需要再多開幾個(gè)刷卡機(jī)澄耍,增加進(jìn)站的人流與速度(提升TPS噪珊、增大連接數(shù))。
場(chǎng)景九:終于到了上班高峰時(shí)間了齐莲,乘客數(shù)量上升太快痢站,現(xiàn)有的進(jìn)站措施已經(jīng)無法滿足,越來越多的人開始抱怨选酗、擁擠瑟押,情況越來越糟。單單增加刷卡機(jī)已經(jīng)不行了星掰,此時(shí)的乘客就相當(dāng)于“請(qǐng)求”多望,乘客不是在地鐵進(jìn)站排隊(duì),就是在站臺(tái)排隊(duì)等車氢烘,已經(jīng)造成嚴(yán)重“堵塞”怀偷,那么增加發(fā)車頻率(加快應(yīng)用、數(shù)據(jù)庫的處理速度)播玖、增加車廂數(shù)量(增加內(nèi)存椎工、增大吞吐量)、增加線路(增加服務(wù)的線程)蜀踏、限流维蒙、分流等多種措施便應(yīng)需而生。