從軟件過程來看凡恍,軟件性能需求應(yīng)該是軟件項目啟動之前润脸,需求分析人員和客戶共同討論并確定下來的,這個需求對于性能測試人員來說倔矾,應(yīng)該是明確的妄均,無二義性,是一些列可操作的性能指標(biāo)
注意的是破讨,采取何種算法丛晦,何種方法細(xì)化性能需求并不是最重要的奕纫,最重要的是軟件方和客戶能夠達(dá)成理解一致
一份詳細(xì)的軟件性能需求說明是一個成功的性能測試的基礎(chǔ)提陶,否則可能辛辛苦苦得出的性能測試報告卻被客戶認(rèn)為說明不了系統(tǒng)的性能情況,在確定需求標(biāo)準(zhǔn)的時候匹层,有以下技巧
1隙笆、積極參與性能需求的指定和細(xì)化工作
性能測試工程師應(yīng)該比需求人員和客戶更明白軟件系統(tǒng)性能為何物,怎樣度量升筏,而且性能測試工程師還是性能測試的執(zhí)行者
2撑柔、抓大放小設(shè)計測試場景
大多常見的性能測試屬于負(fù)載測試,是模擬真實用戶的集體行為您访。實際上铅忿,在真實環(huán)境下,用戶的集體行為并不是十分明確的灵汪,甚至是混沌的檀训,帶有一定的隨機性。因此負(fù)載測試與基準(zhǔn)測試相比享言,在設(shè)計上并不是要求十分嚴(yán)格峻凫,與真實業(yè)務(wù)一絲不差,抓住用戶業(yè)務(wù)行為模型的主要特征览露,設(shè)置場景
設(shè)計性能測試場景
Controller有兩個視圖:設(shè)計視圖和運行視圖
1荧琼、設(shè)計視圖
設(shè)計視圖顯示場景中的所有Vuser組/腳本的列表、負(fù)載生成器計算機以及分配給每個組/腳本的Vuser數(shù),該視圖顯示有關(guān)場景計劃(手動場景)或目標(biāo)(面向目標(biāo)的場景)的基本信息
2命锄、運行視圖
場景一旦開始運行堰乔,Controller自動切換到運行視圖,運行視圖顯示有關(guān)運行的Vuser的Vuser組的信息以及聯(lián)機監(jiān)視器
設(shè)計性能測試場景主要是在設(shè)計視圖中完成的,性能測試中,場景的設(shè)計是十分重要的欠窒,它整個性能測試的成敗
在設(shè)計視圖中素征,場景有兩種:手工場景和面向目標(biāo)場景,其中手工場景還有百分比模式
1穆役、手工場景:創(chuàng)建虛擬用戶組,設(shè)置虛擬用戶數(shù)目以及其他Run-time信息。手工場景是常用的設(shè)計模式袜瞬,負(fù)載測試就常用它。手工場景符合性能測試常規(guī)思路身堡,第一步邓尤,設(shè)置虛擬用戶的數(shù)目、腳本以及它們運行的方式贴谎,第二步汞扎,運行,得出服務(wù)器的響應(yīng)時間等指標(biāo)
手工場景有一個百分比模式:在百分比模式里擅这,只需要設(shè)定總用戶數(shù)澈魄,Controller將總用戶數(shù)以百分比的方式分派去執(zhí)行不同的腳本
2、面向目標(biāo)場景:如果說手工場景是一板一眼的因果關(guān)系(先有條件仲翎,再得結(jié)果)痹扇,面向目標(biāo)場景就是一個稍微復(fù)雜一些的閉環(huán)回饋關(guān)系。在面向目標(biāo)場景中溯香,先定義測試要達(dá)到的目標(biāo)鲫构,然后LoadRunner自動基于這些目標(biāo)創(chuàng)建場景,運行過程中玫坛,會不斷地把結(jié)果和目標(biāo)相比較结笨,以決定下一步怎么走。
創(chuàng)建手工場景
創(chuàng)建虛擬用戶組是執(zhí)行同一腳本的虛擬用戶的集合湿镀。因此在Controller中炕吸,添加了一個腳本,就是添加了一個虛擬用戶組
設(shè)置集合點
如果在VU腳本中設(shè)置了集合點肠骆,Controller默認(rèn)的集合點策略:在所有Running狀態(tài)的Vuser達(dá)到集合點后才釋放算途。
百分比模擬創(chuàng)建手工場景
百分比模式場景是設(shè)定總虛擬用戶數(shù),然后以百分比的形式把虛擬用戶分配到各個腳本中蚀腿。這種場景設(shè)置非常適合業(yè)務(wù)模型明確的性能測試
創(chuàng)建面向目標(biāo)場景
面向目標(biāo)場景的特點是閉關(guān)回饋關(guān)系嘴瓤,在面向目標(biāo)場景中扫外,先定義測試達(dá)到的目標(biāo),然后LoadRunner自動基于這些目標(biāo)創(chuàng)建場景
Virtual Users
如果需要測試服務(wù)器的并發(fā)處理能力廓脆,即多少人可以同時運行Web應(yīng)用筛谚,那么推薦定義Virtual Users目標(biāo)類型。運行定義該目標(biāo)類型的場景和運行Manual類型的場景類似
Hits per Second
如果系那個測試Web Server的真正實力停忿,推薦定義目標(biāo)類型為:Hits per Second驾讲、Pagers per Minute 或者 Transactions per Second,這些類型都需要指定一個虛擬用戶的最小值和最大值的范圍
Controller試圖使用最少的虛擬用戶來達(dá)到定義的最大值席赂。如果使用了最多的虛擬用戶數(shù)吮铭,定義的目標(biāo)還沒有實現(xiàn),那么需要增加最大用戶數(shù)颅停,重新執(zhí)行場景
Transactions per Second
Transaction Name中應(yīng)該選定目標(biāo)Transaction谓晌,當(dāng)然這有一個前提,在腳本里應(yīng)該有設(shè)置Transaction癞揉,否則這里就顯示為空白
Transaction Response Time
如果想知道在多少用戶并發(fā)訪問網(wǎng)站時纸肉,事務(wù)的響應(yīng)時間達(dá)到性能指標(biāo)說明書中規(guī)定時間的最大值,推薦使用“Transaction Response Time”類型
Pages per Minute
理解加載機制
如果定義的類型是Pages per Minute喊熟、Hits/Transactions per Second柏肪,Controller首先用最小用戶數(shù)除以定義的目標(biāo),得到一個值芥牌,然后確定每個用戶應(yīng)該達(dá)到的Hits/Transactions 或者 Pages per Minute烦味,然后Controller開始按照策略加載用戶
多IP的實現(xiàn)原理以及模擬
當(dāng)運行場景時,虛擬用戶使用它們所在的Load Generator的固定的IP地址胳泉。同時每個Load Generator上運行大量的虛擬用戶拐叉,這樣就造成了大量的用戶使用同一IP同時訪問一個網(wǎng)站的情況岩遗,這種情況和實際運行的情況不符扇商,并且有一些網(wǎng)站會根據(jù)用戶IP來分配資源,這些網(wǎng)站會限制同一IP的登錄宿礁、使用等案铺。
查看虛擬IP是否實現(xiàn)
可以在VU腳本中使用lr_get_vuser_ip函數(shù)來得到當(dāng)前虛擬用戶的IP地址
運行場景
性能測試場景的運行和監(jiān)控都是在運行視圖中進行的
兩條線索是場景的控制和場景的查看,三個對象是場景梆靖、Vuser組和Vuser
場景控制
場景組:顯示每個虛擬用戶組及其當(dāng)前運行狀態(tài)
在場景組的左邊區(qū)域顯示虛擬用戶組的狀態(tài)控汉,右邊區(qū)域則是場景的控制,比如:開始返吻、停止姑子、復(fù)位、虛擬用戶控制等
停止方式在場景運行之前就需要在“Tools”菜單下的“Options”選項中設(shè)置好
控制整個虛擬用戶組
重新編號:重新對組中的Vuser編號测僵,從而更改它們的ID號街佑。ID號是場景運行時分配給虛擬用戶組的各個Vuser的谢翎。一般的,Vuser執(zhí)行的結(jié)果和其ID沒有聯(lián)系沐旨。如果在某個場景下森逮,30號的Vuser總是執(zhí)行出錯,那么就考慮重新編號試試
初始化組:將組中的Vuser分配給其指定的負(fù)載生成器磁携,這樣它們就可以執(zhí)行它們的腳本了褒侧。Vuser組的狀態(tài)將從“關(guān)閉”變?yōu)椤皰炱稹薄ⅰ罢诔跏蓟币昶ⅰ熬途w”闷供。如果Vuser組初始化失敗,該Vuser組的狀態(tài)將變?yōu)椤板e誤”
1统诺、高級——從同步點中手動釋放Vuser
在運行方案時这吻,在Controller釋放Vuser之前可以從集合中手動釋放它們
2、高級——向正在運行的場景中手動添加Vuser
在運行場景期間篙议,使用“運行/停止 Vuser”對話框可以手動控制新Vuser的添加
監(jiān)視場景
查看場景狀態(tài)信息可以知道哪個虛擬用戶執(zhí)行腳本的哪條語句出了錯唾糯,這遠(yuǎn)遠(yuǎn)是不夠的,做性能測試的目的是要找到軟件系統(tǒng)的瓶頸鬼贱,光憑客戶端的錯誤顯然還不夠移怯,必須監(jiān)控軟件系統(tǒng)各個節(jié)點的服務(wù)器的性能表現(xiàn),以判斷瓶頸到底出現(xiàn)在哪里
1这难、聯(lián)機監(jiān)視器
LoadRunner提供下列聯(lián)機監(jiān)視器
1)“運行時”監(jiān)視器顯示參與方案的Vuser的數(shù)目和狀態(tài)舟误,以及Vuser所生成的錯誤數(shù)量和類型
2)“事務(wù)”監(jiān)視器顯示方案執(zhí)行期間的事務(wù)速率和響應(yīng)時間
3)“Web資源”監(jiān)視器用于度量方案運行期間Web服務(wù)器上的統(tǒng)計信息。它提供關(guān)于方案運行期間的Web連接姻乓、吞吐量嵌溢、HTTP響應(yīng)、服務(wù)器重試和下載頁的數(shù)據(jù)
4)“系統(tǒng)資源”監(jiān)視器測量方案運行期間使用的Windows蹋岩、UNIX赖草、TUXEDO、SNMP和Antare FlameThrower資源剪个。要激活系統(tǒng)資源監(jiān)視器秧骑,必須在運行方案之前設(shè)置監(jiān)視器選項
5)“網(wǎng)絡(luò)延遲”監(jiān)視器顯示關(guān)于系統(tǒng)上的網(wǎng)絡(luò)延遲的信息。要激活網(wǎng)絡(luò)延遲監(jiān)視器扣囊,必須在運行安放之前設(shè)置要監(jiān)視的網(wǎng)絡(luò)路徑
6)“防火墻”監(jiān)視器用于度量方案運行期間防火墻服務(wù)器上的統(tǒng)計信息乎折。要激活防火墻監(jiān)視器,必須在運行方案之前設(shè)置要監(jiān)視的資源列表
7)“Web服務(wù)器資源”監(jiān)視器用于度量方案運行期間Apache侵歇、Microsoft IIS骂澄、iPlanet(SNMP)和iPlanet/Netscape Web服務(wù)器上的統(tǒng)計信息。要激活Web服務(wù)器資源監(jiān)視器惕虑,必須在運行方案之前設(shè)置要監(jiān)視的資源列表
等等...
2坟冲、在Controller中啟動監(jiān)控器
在運行過程中士修,可以監(jiān)視各個服務(wù)器的運行情況(DataBase Server、Web Server等)樱衷,監(jiān)視場景通過添加性能計數(shù)器來實現(xiàn)
3棋嘲、配置監(jiān)視器
創(chuàng)建監(jiān)視器后,可以配置監(jiān)視器矩桂,使之“個性化”沸移。通過LoadRunner可以配置聯(lián)機監(jiān)視器的設(shè)置≈读瘢可以設(shè)置圖的度量和屬性雹锣,例如采樣時間、線條顏色及圖的比例
1癞蚕、監(jiān)視器選項
在“Tools”>“Options”中的“Monitors”選項卡中進行全局采樣速率蕊爵、錯誤處理、調(diào)試和頻率設(shè)置
2攒射、圖屬性
選擇“監(jiān)視器”>“聯(lián)機圖”>“配置”,或者右鍵單擊某個圖并選擇“配置”恒水,將打開“圖配置”對話框会放,其中顯示刷新率、顯示類型钉凌、X軸(圖的時間)以及Y軸比例
高級——用戶自定義數(shù)據(jù)采集點
如果想采集的數(shù)據(jù)不在LoadRunner監(jiān)視器之列的話咧最,那就需要用戶自定義數(shù)據(jù)點。通過在腳本適當(dāng)位置插入自定義數(shù)據(jù)采集函數(shù)御雕,這樣每當(dāng)腳本運行到此處矢沿,就采集數(shù)據(jù)一次,在測試場景結(jié)束后酸纲,LoadRunner會生成圖表捣鲸,和其他監(jiān)視器數(shù)據(jù)一樣,反映被采集數(shù)據(jù)隨時間變化的趨勢福青。
主要的計數(shù)器
內(nèi)存是第一個監(jiān)視對象摄狱,確定系統(tǒng)瓶頸的第一個步驟就是排除內(nèi)存問題。內(nèi)存短缺可能會引起各種各樣的問題
內(nèi)存問題主要檢查應(yīng)用程序是否存在內(nèi)存泄漏无午。如果發(fā)生內(nèi)存泄漏,Process/private Bytes計數(shù)器和Process/Working Set 計數(shù)器的值往往會升高祝谚,同時Available Bytes 的值會降低
內(nèi)存泄漏應(yīng)該通過一個長時間的宪迟,用來研究分析當(dāng)所有內(nèi)存都耗盡時,應(yīng)用程序反應(yīng)情況的測試來檢驗
場景運行后
場景成功運行后交惯,可手工或自動設(shè)置開啟Analysis對結(jié)果數(shù)據(jù)進行分析