您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源性能測(cè)試工具 >
性能測(cè)試應(yīng)該做哪些準(zhǔn)備
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/1/6 15:04:59 ] 推薦標(biāo)簽:

  通過(guò)提供的一套全面的解決方案, 本文描述Quests Application Management Suite for Java and Portals是如何與該方法論相集成,從而在應(yīng)用開(kāi)發(fā)生命周期的每個(gè)階段保證您的成功。運(yùn)用這套方法論和Quest的應(yīng)用管理解決方案,您將充滿(mǎn)信心地把符合性能規(guī)范的應(yīng)用展現(xiàn)給您的用戶(hù)。

  本文同時(shí)強(qiáng)調(diào)自動(dòng)化的重要性,采用自動(dòng)化方式可以創(chuàng)建重復(fù)的測(cè)試過(guò)程并迅速報(bào)告應(yīng)用代碼的質(zhì)量。只有自動(dòng)化方式才能保證正確地遵循這些測(cè)試過(guò)程,并且保證準(zhǔn)確和一致地測(cè)試應(yīng)用組件。

  導(dǎo)言

  性能測(cè)試已經(jīng)成為軟件開(kāi)發(fā)界的一個(gè)事后總結(jié)出來(lái)的想法。IDG 的研究報(bào)告指出只有20%的上線(xiàn)的企業(yè)Java 應(yīng)用符合他們的性能要求。如果所有上線(xiàn)的企業(yè)Java應(yīng)用中有80%不滿(mǎn)足他們的服務(wù)標(biāo)準(zhǔn)協(xié)議(SLAs),那么需要花費(fèi)巨大努力去分析為什么會(huì)發(fā)生這種情況以及如何解決這種問(wèn)題。要想成功滿(mǎn)足SLA,其關(guān)鍵在于應(yīng)該采用正規(guī)的性能測(cè)試方法論。本文將詳細(xì)闡述該方法論并且指出在每個(gè)測(cè)試階段所需使用的工具集,以成功確保企業(yè)應(yīng)用的性能。

  測(cè)試主要分兩類(lèi): 功能測(cè)試和性能測(cè)試。 本文專(zhuān)注于性能測(cè)試,因此本文中的所有提及的測(cè)試除非有另外說(shuō)明,否則都指性能測(cè)試。

  性能測(cè)試的準(zhǔn)備

  一、量化性能需求

  為了量化性能要求,我們假設(shè)您已經(jīng)定義了SLA。在深入分析問(wèn)題之后,關(guān)鍵的負(fù)責(zé)人員應(yīng)該系統(tǒng)地定義SLA。SLA 的主要推動(dòng)者應(yīng)該是應(yīng)用業(yè)務(wù)負(fù)責(zé)人和應(yīng)用技術(shù)負(fù)責(zé)人。 應(yīng)用業(yè)務(wù)負(fù)責(zé)人,有時(shí)是應(yīng)用產(chǎn)品經(jīng)理,他負(fù)責(zé)分析商業(yè)案例并把客戶(hù)的需求轉(zhuǎn)化為SLA。其實(shí), 只要滿(mǎn)足SLA, 客戶(hù)的需求也會(huì)滿(mǎn)足。應(yīng)用技術(shù)負(fù)責(zé)人,有時(shí)是應(yīng)用構(gòu)架師,分析必要的技術(shù)需求,解釋用例并"真實(shí)地檢驗(yàn)"SLA。因此,技術(shù)業(yè)務(wù)負(fù)責(zé)人的責(zé)任是確保服務(wù)等級(jí)是可達(dá)到的。有效的SLA具有三個(gè)關(guān)鍵特性:

  1.具體的。

  2.靈活的。

  3.現(xiàn)實(shí)的。

  一個(gè)有效的SLA 必須是一個(gè)具體的值。一個(gè)用例必須在大約五秒內(nèi)完成是不準(zhǔn)確的,因此很難檢驗(yàn)--5.25秒鐘是否是大約的五秒。一個(gè)具體的值便于QA在應(yīng)用上線(xiàn)前進(jìn)行測(cè)試,當(dāng)應(yīng)用上線(xiàn)后,SLA將提供對(duì)主動(dòng)監(jiān)測(cè)和被動(dòng)監(jiān)測(cè)兩種警報(bào)(Alert)的規(guī)范。同時(shí),一個(gè)有效的SLA在分布式的變化環(huán)境中必須也是靈活的。考慮到一些未預(yù)料到的情況,我們需要對(duì)靈活性進(jìn)行測(cè)量,因此用例必須采用預(yù)先定義的時(shí)間百分比的方式滿(mǎn)足具體的SLA值。例如,您每天使用的常用搜索引擎。當(dāng)您執(zhí)行一次查尋,在95%的時(shí)間里可以在2秒內(nèi)完成;在每20次查詢(xún)中,有一次的響應(yīng)時(shí)間是7秒;通常這種變化的范圍是可以接受的。但是如果每20次查詢(xún)中,有10次超過(guò)7秒,你可能會(huì)考慮換個(gè)搜索引擎了。SLA不僅必須是具體的, 也要靈活,同時(shí)必須也是現(xiàn)實(shí)的。你可以通過(guò)要求應(yīng)用業(yè)務(wù)負(fù)責(zé)人和應(yīng)用技術(shù)負(fù)責(zé)人共同制定SLA的方式保證SLA是現(xiàn)實(shí)的。這是一個(gè)有效用例的特別關(guān)鍵的特性,這是因?yàn)樵诖蠖鄶?shù)情況下,SLA只由應(yīng)用業(yè)務(wù)負(fù)責(zé)人單方面確定,沒(méi)有考慮應(yīng)用技術(shù)負(fù)責(zé)人的意見(jiàn)。當(dāng)技術(shù)小組接到這些性能需求時(shí),他們往往會(huì)忽略,一個(gè)不現(xiàn)實(shí)的SLA比根本沒(méi)有還要糟糕。

  二、了解你的用戶(hù)

  為了保證調(diào)優(yōu)努力的成功你能做的重要的事是安排時(shí)間了解你的用戶(hù)和理解他們?cè)谑褂媚愕膽?yīng)用時(shí)的行為情況。很少會(huì)在生產(chǎn)環(huán)境中調(diào)優(yōu)應(yīng)用服務(wù)器,而更多的情況是,通過(guò)寫(xiě)測(cè)試腳本再現(xiàn)為虛擬用戶(hù),在上線(xiàn)前的環(huán)境中執(zhí)行負(fù)載并進(jìn)行調(diào)優(yōu)。當(dāng)在上線(xiàn)前環(huán)境中完成調(diào)優(yōu)后, 可以安全地把配置信息應(yīng)用到生產(chǎn)環(huán)境中。多數(shù)公司無(wú)法在上線(xiàn)前的環(huán)境中充分地再現(xiàn)生產(chǎn)負(fù)載。如果您在這些公司中工作,沒(méi)必要失望。多數(shù)大型的公司并沒(méi)有對(duì)他們的用戶(hù)行為有很好的理解并且在測(cè)試環(huán)境中不能產(chǎn)生有代表性的負(fù)載。

  有兩個(gè)共同的似是而非的理由:

  1. 生產(chǎn)負(fù)載太大,在上線(xiàn)前無(wú)法模擬。

  2. 我沒(méi)有任何辦法知道我的終用戶(hù)到底是如何操作的。

  針對(duì)第一點(diǎn),我們可以在上線(xiàn)前環(huán)境中建立一個(gè)按比例縮減的生產(chǎn)版本,當(dāng)在生產(chǎn)環(huán)境中部署時(shí),再按比例放大。雖然沒(méi)有做一個(gè)生產(chǎn)環(huán)境的鏡像有效,但是有時(shí)并值得那么做。針對(duì)第二點(diǎn),下面將說(shuō)明如何采集終用戶(hù)的操作行為。

  由于我們需要在投入生產(chǎn)之前設(shè)法在上線(xiàn)前的環(huán)境中調(diào)優(yōu)我們的應(yīng)用系統(tǒng),這樣才能驗(yàn)證配置,所以一個(gè)隨之而來(lái)的問(wèn)題是我們需要在這個(gè)環(huán)境中執(zhí)行的負(fù)載測(cè)試腳本。對(duì)一個(gè)企業(yè)應(yīng)用進(jìn)行調(diào)優(yōu)的步驟包括實(shí)施一些佳實(shí)踐設(shè)置,負(fù)載測(cè)試應(yīng)用,觀(guān)察應(yīng)用的行為,以及適當(dāng)調(diào)整配置參數(shù)等。這是一個(gè)疊代過(guò)程,我們需要不斷調(diào)整以達(dá)到優(yōu)的配置。一些調(diào)整可能會(huì)提高性能,而一些會(huì)降低性能。這也是為什么性能調(diào)優(yōu)不應(yīng)該放在開(kāi)發(fā)周期后期的一個(gè)原因。

  假設(shè)我們根據(jù)我們的負(fù)載腳本進(jìn)行調(diào)優(yōu),那對(duì)你又意味著什么呢?這意味著負(fù)載腳本應(yīng)該真實(shí)反映現(xiàn)實(shí)世界用戶(hù)的使用行為。假設(shè)我們?cè)趦?yōu)化一個(gè)Web搜索引擎,我們可以寫(xiě)一個(gè)測(cè)試腳本,該腳本總是在測(cè)試蘋(píng)果和香蕉,但是用戶(hù)是這樣使用嗎?我們可以為此調(diào)整出好的性能。但是當(dāng)查詢(xún)Bea和IBM時(shí),又會(huì)怎樣呢?在我的應(yīng)用中,我可以將技術(shù)公司的詞匯放在與水果和蔬菜不同的數(shù)據(jù)庫(kù)中,那么在測(cè)試環(huán)境中,永遠(yuǎn)不會(huì)執(zhí)行到那段代碼,我們的調(diào)優(yōu)努力也徒勞無(wú)益了。

  更好的解決辦法是確定名列前茅1000 或10,000 個(gè)查尋詞組和他們頻率。然后,計(jì)算每個(gè)被請(qǐng)求的時(shí)間百分比并且編寫(xiě)按照該百分比查詢(xún)這些詞匯的測(cè)試腳本。對(duì)于剩余的百分比,你可以把負(fù)載測(cè)試工具連到一個(gè)詞典,可以隨機(jī)生成查詢(xún)的詞匯。

  三、使用工具分析

  編寫(xiě)一個(gè)典型用戶(hù)負(fù)載腳本的困難之處是發(fā)現(xiàn)你的用戶(hù)是怎么使用的應(yīng)用的。 這不是一門(mén)精確的學(xué)問(wèn)。但是為得到一個(gè)合理的可靠的結(jié)果,第一步是看看您的訪(fǎng)問(wèn)日志,F(xiàn)在,我不會(huì)推薦手工做這件事,因?yàn)閷?duì)于一個(gè)中型的Web應(yīng)用,工作量也是巨大的。現(xiàn)在有大量商業(yè)或免費(fèi)工具可為您分析訪(fǎng)問(wèn)日志。

  這些工具將告訴你有關(guān)你的服務(wù)請(qǐng)求的一些情況:

  a) 將服務(wù)請(qǐng)求按時(shí)間的百分比排序,并顯示百分比。

  b) 放大或縮小分析時(shí)間間隔,便于以粗粒度或細(xì)粒度方式顯示結(jié)果。

  c) 識(shí)別每天,周,月,年的高峰使用時(shí)間。

  d) 跟蹤字節(jié)傳輸和請(qǐng)求的平均時(shí)間。

  e) 按照你的應(yīng)用的內(nèi)部,外部或地理位置,識(shí)別和分類(lèi)請(qǐng)求的用戶(hù)。

  f) 匯總成功請(qǐng)求的百分比。

  g) 匯總HTTP發(fā)生的錯(cuò)誤。

  h) 匯總顧客忠誠(chéng)度, 譬如回頭客和平均會(huì)話(huà)長(zhǎng)度。

  i) 跟蹤從其他站點(diǎn)的轉(zhuǎn)入情況。

  無(wú)論你選擇哪種軟件分析訪(fǎng)問(wèn)日志,重要的是你應(yīng)該做這些分析工作并且把這些信息作為編寫(xiě)測(cè)試腳本的基礎(chǔ)。有時(shí)訪(fǎng)問(wèn)日志的作用是有限的,在某些情況下不能提供足夠的信息。例如前端應(yīng)用只使用一個(gè)URL發(fā)出請(qǐng)求,而通過(guò)在請(qǐng)求中嵌入不同的參數(shù)區(qū)分業(yè)務(wù)功能。在這種情況下,需要高級(jí)一些的工具根據(jù)不同的請(qǐng)求參數(shù)監(jiān)測(cè)應(yīng)用的使用情況和劃分業(yè)務(wù)功能。

  訪(fǎng)問(wèn)日志只能提供部分解決辦法。接下來(lái)需要對(duì)應(yīng)用本身有更深入的理解。例如,當(dāng)發(fā)出一個(gè)特定的服務(wù)請(qǐng)求時(shí),你應(yīng)該知道其不同的選項(xiàng)所控制的相應(yīng)行為。這些信息的好來(lái)源是應(yīng)用的用例和負(fù)責(zé)該功能的架構(gòu)設(shè)計(jì)人員。這些工作的目標(biāo)是識(shí)別出真實(shí)世界中用戶(hù)的使用行為,所以應(yīng)該徹底和全面地完成此階段任務(wù)。這里發(fā)生的錯(cuò)誤將導(dǎo)致上文提到的"蘋(píng)果和香蕉"搜索引擎的問(wèn)題。

   為了全面獲得更可靠和更詳盡的終用戶(hù)行為信息,可以考慮Quest公司的User ExperienceMonitor(UEM)。UEM在終用戶(hù)和WebServer之間,實(shí)時(shí)捕獲向你應(yīng)用環(huán)境發(fā)出的每個(gè)請(qǐng)求,可提供有關(guān)真實(shí)用戶(hù)所做的詳盡數(shù)據(jù),包括連接速度,瀏覽器版本,按地理位置匯總等信息。由于采用了被動(dòng)的網(wǎng)絡(luò)Sniff技術(shù),所以對(duì)應(yīng)用的性能影響為零。

  四、用戶(hù)如何退出系統(tǒng)

  后,有一個(gè)值得重視的問(wèn)題,我們了解到目前客戶(hù)在編寫(xiě)負(fù)載測(cè)試腳本時(shí)大的錯(cuò)誤是:用戶(hù)不知道怎樣退出應(yīng)用系統(tǒng)。不管你把退出按扭作的多大,至多只有20%用戶(hù)會(huì)使用。這是由于現(xiàn)在將Web作為主要業(yè)務(wù)平臺(tái)的必然結(jié)果。商業(yè)Web站點(diǎn)正式基于此而得以快速發(fā)展并統(tǒng)治了Internet.

  因此,現(xiàn)在用戶(hù)習(xí)慣以下面方式退出網(wǎng)站:

  1. 離開(kāi)當(dāng)前網(wǎng)站,轉(zhuǎn)到其他網(wǎng)站

  2. 關(guān)上瀏覽器窗口。

  由于這已是根深蒂固的Web 使用模式,

  所以不能指望用戶(hù)正確地退出網(wǎng)站。當(dāng)編寫(xiě)測(cè)試腳本時(shí),應(yīng)用確定正確退出和非正確退出的用戶(hù)比例,然后根據(jù)這個(gè)比例編寫(xiě)腳本。我們遇到的一個(gè)大型汽車(chē)網(wǎng)站,已經(jīng)為此困擾了一年多,他們的應(yīng)用服務(wù)器每隔幾天會(huì)崩潰,他們已經(jīng)習(xí)慣于在晚上重起應(yīng)用服務(wù)器。仔細(xì)分析HTTP會(huì)話(huà)的使用模式,我們發(fā)現(xiàn)閑置的會(huì)話(huà)非常多。

  我們檢查了他們的測(cè)試腳本,發(fā)現(xiàn)每個(gè)測(cè)試場(chǎng)景都包含了正確的退出。他們是基于這個(gè)假設(shè)進(jìn)行優(yōu)化的,因此優(yōu)化工作并沒(méi)有觸及閑置的會(huì)話(huà)內(nèi)存問(wèn)題。在調(diào)整測(cè)試腳本,重新優(yōu)化系統(tǒng)環(huán)境后,由于"Outof memory"引發(fā)的強(qiáng)制重起問(wèn)題解決了。

軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd