產(chǎn)品的性能測(cè)試
項(xiàng)目的情況簡(jiǎn)介:
項(xiàng)目屬于客戶端/服務(wù)端模式產(chǎn)品,要求每個(gè)服務(wù)端能支持連接500個(gè)客戶端
測(cè)試環(huán)境簡(jiǎn)介:
服務(wù)端支持三級(jí)連接模式,每個(gè)服務(wù)端能支持連接500個(gè)客戶端,總要求支持大約5000個(gè)客戶端。
測(cè)試的過(guò)程描述:
在測(cè)試實(shí)驗(yàn)室中,只能搭建10個(gè)客戶端的環(huán)境以及三級(jí)連接的環(huán)境。服務(wù)端初次連接客戶端后,客戶端會(huì)保留服務(wù)端的IP地址。下次客戶端機(jī)器啟動(dòng)時(shí),會(huì)自己連接服務(wù)端。每次連接屬于短連接。在產(chǎn)生事件時(shí),客戶端會(huì)自己上報(bào)給服務(wù)端。
測(cè)試過(guò)程遇到的問(wèn)題:
在實(shí)驗(yàn)室中測(cè)試系統(tǒng)穩(wěn)定可用,但在用戶那里遇到服務(wù)端異常退出。
問(wèn)題分析:
客戶端同時(shí)大量上報(bào)事件時(shí),服務(wù)端處理出問(wèn)題,導(dǎo)致系統(tǒng)異常退出。
希望尋求的幫助:
如何模擬多客戶端問(wèn)題?如何進(jìn)行產(chǎn)品的性能測(cè)試?如何保證產(chǎn)品的穩(wěn)定性?
分析一:
作者:多瑙河
分析內(nèi)容:
很簡(jiǎn)單,這種情況,用loadrunner最合適了,用loadrunner這種壓力測(cè)試工具,模擬多用戶環(huán)境,不知道你們是用什么語(yǔ)言開(kāi)發(fā),如果是java的甚至可以利用loadrunner的Tunning組件,達(dá)到代碼級(jí)的調(diào)優(yōu)。如果是C#.net,那很要等啦,Mercury同意支持C#.net,但支持版本還沒(méi)有出來(lái)。我在給你個(gè)建議,找個(gè)系統(tǒng)整合專家,看看是不是他們的網(wǎng)絡(luò)有問(wèn)題,或者是服務(wù)器沒(méi)有調(diào)試好。有時(shí)候,機(jī)子CPU多,沒(méi)有調(diào)試好,可能大量的CPU資源用于頻繁的調(diào)度,而造成系統(tǒng)異常。有時(shí)候,還要改進(jìn)算法。這種系統(tǒng)調(diào)試最麻煩了!
分析二:
作者:關(guān)河
分析內(nèi)容:
個(gè)人意見(jiàn):對(duì)這個(gè)問(wèn)題的分析應(yīng)該考慮兩個(gè)層次:
1、解決現(xiàn)有問(wèn)題的層次;
2、探討測(cè)試不充分問(wèn)題產(chǎn)生的根源并從根源上避免此類問(wèn)題的發(fā)生。 這個(gè)問(wèn)題本身是比較好解決的,在現(xiàn)場(chǎng)出現(xiàn)問(wèn)題后,我們要做的是利用實(shí)驗(yàn)室的環(huán)境(或者現(xiàn)場(chǎng)的環(huán)境)確定問(wèn)題產(chǎn)生的原因,從例子的描述來(lái)看,應(yīng)該是在客戶端大量建立連接時(shí)服務(wù)端無(wú)法支持,產(chǎn)生異常退出。對(duì)該問(wèn)題的定位可以用LR等性能測(cè)試工具(或是自己編寫(xiě)的工具)模擬進(jìn)行大并發(fā)量的突發(fā)連接測(cè)試,并據(jù)此給出改進(jìn)的方法。
其次我們還應(yīng)該探討測(cè)試不充分問(wèn)題產(chǎn)生的根源。在這個(gè)例子中,由于設(shè)備不足夠,可能根本就沒(méi)有進(jìn)行壓力和負(fù)載測(cè)試,這本身就留下了隱患。其次,作為測(cè)試負(fù)責(zé)人,對(duì)這種項(xiàng)目的經(jīng)驗(yàn)不足,一般來(lái)說(shuō),基于短連接方式的C/S結(jié)構(gòu)應(yīng)用最大的可能出問(wèn)題的地方就是大量用戶同時(shí)進(jìn)行連接操作,即使沒(méi)有環(huán)境在實(shí)驗(yàn)室中進(jìn)行測(cè)試,也必須把這個(gè)作為一個(gè)大的項(xiàng)目風(fēng)險(xiǎn)列出,要求在交付最終用戶使用前進(jìn)行這類測(cè)試。
分析三:
本案中,作者的描述有些歧義:
1、“三級(jí)連接模式”,不知道是不是有服務(wù)器,有端站,有客戶端的模式,還是采用了服務(wù)器集群,多臺(tái)服務(wù)器分三級(jí)級(jí)連
2、“每個(gè)服務(wù)端能支持連接500個(gè)客戶端,總要求支持大約5000個(gè)客戶端。”
3、“服務(wù)端初次連接客戶端,”這個(gè)不知道是不是應(yīng)該是“客戶端初次連接服務(wù)端”,而書(shū)寫(xiě)的當(dāng)時(shí),思維太快了,手沒(méi)跟上,請(qǐng)教開(kāi)發(fā)工程師都說(shuō)“一般都是客戶端去連接服務(wù)端的“拉”模式,而極少服務(wù)端向客戶端“推”的模式。”
4、“在產(chǎn)生事件時(shí),客戶端會(huì)自己上報(bào)給服務(wù)端”,不知道是不是以發(fā)送日志文件的形式上報(bào)。
5、“在實(shí)驗(yàn)室中測(cè)試系統(tǒng)穩(wěn)定可用”,實(shí)驗(yàn)室中測(cè)試是不是只有10個(gè)端站的情況下,而并沒(méi)有采用任何的測(cè)試工具來(lái)做模擬端站和用戶,已達(dá)到實(shí)際需要的量級(jí)。
6、“下次客戶端機(jī)器啟動(dòng)時(shí),會(huì)自己連接服務(wù)端。”這個(gè)連接,是指自動(dòng)登錄還是會(huì)同步數(shù)據(jù)或者僅是網(wǎng)絡(luò)連接?
所以,對(duì)于本案編者只能按照性能測(cè)試的一般做法做一個(gè)介紹,不能詳細(xì)的分析本案為什么會(huì)出現(xiàn)了不穩(wěn)定運(yùn)行的狀況了,希望能對(duì)本案作者及遇到相同問(wèn)題,或者準(zhǔn)備做性能測(cè)試的同行們有所啟發(fā)。
首先,我們?yōu)槭裁醋鲂阅軠y(cè)試呢?
性能測(cè)試的目的:
一、評(píng)估系統(tǒng)的能力,測(cè)試中得到的負(fù)荷和響應(yīng)時(shí)間數(shù)據(jù)可以被用于驗(yàn)證所計(jì)劃的模型的數(shù)據(jù)處理能力,并幫助作出決策。
二、識(shí)別體系中的弱點(diǎn):受控的負(fù)荷可以被增加到一個(gè)極端的水平,并突破它,從而修復(fù)體系的瓶頸或薄弱的地方。
三、系統(tǒng)調(diào)優(yōu):重復(fù)運(yùn)行測(cè)試,驗(yàn)證調(diào)整系統(tǒng)的活動(dòng)得到了預(yù)期的結(jié)果,從而改進(jìn)性能。檢測(cè)軟件中的問(wèn)題:長(zhǎng)時(shí)間的測(cè)試執(zhí)行可導(dǎo)致程序發(fā)生由于內(nèi)存泄露引起的失敗,揭示程序中的隱含的問(wèn)題或沖突。
四、驗(yàn)證穩(wěn)定性(resilience)可靠性(reliability):在一個(gè)生產(chǎn)負(fù)荷下執(zhí)行測(cè)試一定的時(shí)間是評(píng)估系統(tǒng)穩(wěn)定性和可靠性是否滿足要求的唯一方法。
性能測(cè)試類型包括:
負(fù)載測(cè)試:負(fù)載測(cè)試是一種性能測(cè)試指數(shù)據(jù)在超負(fù)荷環(huán)境中運(yùn)行,程序是否能夠承擔(dān)。
強(qiáng)度測(cè)試: 強(qiáng)度測(cè)試是一種性能測(cè)試,他在系統(tǒng)資源特別低的情況下軟件系統(tǒng)運(yùn)行情況。
容量測(cè)試:確定系統(tǒng)可處理同時(shí)在線的最大用戶數(shù)
性能測(cè)試觀察指標(biāo):
性能測(cè)試主要是通過(guò)自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件來(lái)對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。負(fù)載測(cè)試和壓力測(cè)試都屬于性能測(cè)試,兩者可以結(jié)合進(jìn)行。通過(guò)負(fù)載測(cè)試,確定在各種工作負(fù)載下系統(tǒng)的性能,目標(biāo)是測(cè)試當(dāng)負(fù)載逐漸增加時(shí),系統(tǒng)各項(xiàng)性能指標(biāo)的變化情況。壓力測(cè)試是通過(guò)確定一個(gè)系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),來(lái)獲得系統(tǒng)能提供的最大服務(wù)級(jí)別的測(cè)試。
在實(shí)際中作中我們經(jīng)常會(huì)對(duì)兩種類型軟件進(jìn)行測(cè)試:bs和cs,這兩方面的性能指標(biāo)一般需要哪些內(nèi)容呢?Bs結(jié)構(gòu)程序一般會(huì)關(guān)注的通用指標(biāo)如下(簡(jiǎn)):
Web服務(wù)器指標(biāo)指標(biāo):
1、Avg Rps: 平均每秒鐘響應(yīng)次數(shù)=總請(qǐng)求時(shí)間 / 秒數(shù);
2、Avg time to last byte per terstion (mstes):平均每秒業(yè)務(wù)角本的迭代次數(shù) ,有人會(huì)把這兩者混淆;
3、Successful Rounds:成功的請(qǐng)求;
4、Failed Rounds:失敗的請(qǐng)求;
5、Successful Hits:成功的點(diǎn)擊次數(shù);
6、Failed Hits:失敗的點(diǎn)擊次數(shù);
7、Hits Per Second:每秒點(diǎn)擊次數(shù);
8、Successful Hits Per Second:每秒成功的點(diǎn)擊次數(shù);
9、Failed Hits Per Second:每秒失敗的點(diǎn)擊次數(shù);
10、Attempted Connections:嘗試鏈接數(shù);
11、CS結(jié)構(gòu)程序,由于一般軟件后臺(tái)通常為數(shù)據(jù)庫(kù),所以我們更注重?cái)?shù)據(jù)庫(kù)的測(cè)試指標(biāo):
12、User 0 Connections:用戶連接數(shù),也就是數(shù)據(jù)庫(kù)的連接數(shù)量;
13、Number of deadlocks:數(shù)據(jù)庫(kù)死鎖;
14、Butter Cache hit:數(shù)據(jù)庫(kù)Cache的命中情況
當(dāng)然,在實(shí)際中我們還會(huì)察看多用戶測(cè)試情況下的內(nèi)存,CPU,系統(tǒng)資源調(diào)用情況。這些指標(biāo)其實(shí)是引申出來(lái)性能測(cè)試中的一種:競(jìng)爭(zhēng)測(cè)試。什么是競(jìng)爭(zhēng)測(cè)試,軟件競(jìng)爭(zhēng)使用各種資源(數(shù)據(jù)紀(jì)錄,內(nèi)存等),看他與其他相關(guān)系統(tǒng)對(duì)資源的爭(zhēng)奪能力。性能測(cè)試的流程步驟和做其他的測(cè)試沒(méi)有什么區(qū)別,做性能測(cè)試也要如下步驟來(lái)做:
1、測(cè)試需求分析
2、測(cè)試設(shè)計(jì)
3、測(cè)試腳本開(kāi)發(fā)
4、測(cè)試實(shí)施
5、測(cè)試結(jié)果分析
測(cè)試需求分析,性能測(cè)試(或者其他的測(cè)試)做的好與壞完全取決于測(cè)試分析做得好不好。軟件最終始要被應(yīng)用的,要在應(yīng)用的實(shí)踐中考驗(yàn),所以,任何類型的測(cè)試分析都要以實(shí)際業(yè)務(wù)的要求為依據(jù)。那么,性能測(cè)試的測(cè)試需求分析都需要分析哪些內(nèi)容呢?
1、性能測(cè)試的需求來(lái)源??蛻粜枨蠛推谕?,實(shí)際業(yè)務(wù)需求,系統(tǒng)需求。
2、業(yè)務(wù)數(shù)據(jù)量級(jí),要根據(jù)實(shí)際業(yè)務(wù)分析可能出現(xiàn)數(shù)據(jù)吞吐瓶頸的地方,比如本案中作者提到的要求每個(gè)服務(wù)端連接500個(gè)客戶端,總要求連接5000個(gè)客戶端。分析到這個(gè)程度還不夠,還要進(jìn)一步分析業(yè)務(wù)操作集中的點(diǎn),時(shí)間段和量。如,本案中客戶端開(kāi)啟會(huì)自動(dòng)連接服務(wù)端,那么在每天開(kāi)始上班的時(shí)候客戶端的開(kāi)啟就會(huì)出現(xiàn)峰值,可能會(huì)持續(xù)20分鐘,服務(wù)端需要響應(yīng)客戶端的連接請(qǐng)求,請(qǐng)求還可能并發(fā)至少 5000/120次每秒,同時(shí)短時(shí)間內(nèi)集中請(qǐng)求的頻率也是有閾值限制的。
3、系統(tǒng)架構(gòu),在每種不同的系統(tǒng)架構(gòu)的實(shí)施中,開(kāi)發(fā)人員可能選擇不同的實(shí)現(xiàn)方式,造成實(shí)際情況紛繁復(fù)雜。我們不可能對(duì)每種技術(shù)都詳細(xì)解說(shuō),這里只是介紹一種方法提供給你如何選擇測(cè)試策略,從而幫助分析軟件不同部分的性能指標(biāo),進(jìn)而分析出整體架構(gòu)的性能指標(biāo)和性能瓶頸。
4、測(cè)試策略和評(píng)估標(biāo)準(zhǔn),任何測(cè)試的目的都是確保軟件符合預(yù)先規(guī)定的目標(biāo)和要求。性能測(cè)試也不例外。所以必須制定一套標(biāo)準(zhǔn)。通常性能測(cè)試有四種模型技術(shù)可用于評(píng)估:
* 線性投射:用大量的過(guò)去的,擴(kuò)展的或者將來(lái)可能發(fā)生的數(shù)據(jù)組成散布圖,利用這個(gè)圖表不斷和系統(tǒng)的當(dāng)前狀況對(duì)比。
* 分析模型:用排隊(duì)論公式和算法預(yù)測(cè)響應(yīng)時(shí)間,利用描述工作量的數(shù)據(jù)和系統(tǒng)本質(zhì)關(guān)聯(lián)起來(lái)
* 模仿:模仿實(shí)際用戶的使用方法測(cè)試你的系統(tǒng)
* 基準(zhǔn):定義測(cè)試和你最初的測(cè)試作為標(biāo)準(zhǔn),利用它和所有后來(lái)進(jìn)行的測(cè)試結(jié)果進(jìn)行對(duì)比
測(cè)試設(shè)計(jì),測(cè)試設(shè)計(jì)是在了解軟件業(yè)務(wù)流程的基礎(chǔ)上。設(shè)計(jì)測(cè)試用例的原則是受最小的影響提供最多的測(cè)試信息,設(shè)計(jì)測(cè)試用例的目標(biāo)是一次盡可能的包含多個(gè)測(cè)試要素。這些測(cè)試用例必須是測(cè)試工具可以實(shí)現(xiàn)的,不同的測(cè)試場(chǎng)景將測(cè)試不同的功能。因?yàn)樾阅軠y(cè)試不同于平時(shí)的測(cè)試用例,盡可能把性能測(cè)試用例設(shè)計(jì)的復(fù)雜,才有可能發(fā)現(xiàn)軟件的性能瓶頸。
測(cè)試腳本開(kāi)發(fā),性能測(cè)試是通過(guò)工具,模擬大量用戶操作,對(duì)系統(tǒng)增加負(fù)載。所以需要掌握一定的工具知識(shí)才能進(jìn)行性能測(cè)試。大家都知道性能測(cè)試工具一般通過(guò)winsock,http等協(xié)議紀(jì)錄用戶操作。而協(xié)議選擇是基于軟件的系統(tǒng)架構(gòu)實(shí)現(xiàn)(web一般選擇http協(xié)議,cs選擇winsock協(xié)議),不同的性能測(cè)試工具,腳本語(yǔ)言也不同,比如rational robot中vu腳本用類c語(yǔ)言實(shí)現(xiàn)。
開(kāi)展性能測(cè)試需要對(duì)各種性能測(cè)試工具進(jìn)行評(píng)估,因?yàn)槊恳环N性能測(cè)試工具都有自身的特點(diǎn),只有經(jīng)過(guò)工具評(píng)估,才能選擇符合現(xiàn)有軟件架構(gòu)的性能測(cè)試工具。
測(cè)試結(jié)果分析,運(yùn)行測(cè)試用例后,收集相關(guān)信息,進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析,找到性能瓶頸。通過(guò)排除誤差和其他因素,讓測(cè)試結(jié)果體現(xiàn)接近真實(shí)情況。不同的體系結(jié)構(gòu)分析測(cè)試結(jié)果的方法也不同,bs結(jié)構(gòu)我們會(huì)分析網(wǎng)絡(luò)帶寬,流量對(duì)用戶操作響應(yīng)的影響,而cs結(jié)構(gòu)我們可能更關(guān)心會(huì)系統(tǒng)整體配置對(duì)用戶操作的影響。
posted on 2013-05-31 11:41 順其自然EVO 閱讀(379) 評(píng)論(0) 編輯 收藏 所屬分類: 性能測(cè)試