效能測試之場景設計
Load runner Controller來管理和維護場景,可以在一臺工作站控制一個場景中的所有虛擬使用者(Vuser)。執行場景時,Controller會將該場景中的每個Vuser分配給一個負載生成器。負載生成器執行Vuser指令碼,從而使Vuser可以模擬真實使用者操作的計算機。
場景的分類
1. 人工場景(手動場景)
所謂人工場景,實際就是自定義模式,各因素完全由我們來設定的建立場景的方法。相比面向目標場景,人工場景在實際工作中應用的更為廣泛。用賽車遊戲來比喻,這種方法類似常規比賽,不同的汽車從同一起點出發,到同一終點結束,最終按照時間排出名次。
2. 面向目標場景
面向目標場景則與人工場景有所不同,它預先定義了一個測試目標,Load Runner將根據這個目標自動構建場景,有點類似嚮導模式。這種方法對於驗證在專案效能說明書中列出、需要達到的效能目標很方便。還是用賽車遊戲來比喻,面向目標場景有點類似計時賽或者追逐賽,不同的汽車從同一起點出發,在規定的時間內,走的最遠者獲勝。
在面向目標場景的“嚮導模式”中,設定了一個或者多個測試目標,比如要求系統達到每秒處理5個事務,Load Runner再根據這些目標自動建立場景。目前,Load Runner支援的測試目標有如下幾種:
Ø 虛擬使用者數量。
Ø 每秒點選次數(只對Web Vuser有效)
Ø 每秒事務數量
Ø 每分鐘訪問頁面數量(也僅對Web Vuser有效)
Ø 事務響應時間
場景設定描述
㈠ .新場景設定對話方塊
欄位解釋:
Ø Select Scenario Type(選擇場景型別):此選項區域列出了場景的兩種型別:
① Manual Scenario(手動場景或人工場景):
手動場景設定我們可以設定不同的業務組使用者數量,同時編輯計劃指定相關的執行時刻,虛擬使用者載入策略等完成場景設計工作。在建立指令碼的過程中若選擇了“Use the Percentage Mode to distribute the Vusers among the scripts”選項,則可以指定虛擬使用者總體數量,而後針對每個業務組設定使用者數百分比的形式完成場景設定。
勾選Use the Percentage Mode to distribute the Vusers among the scripts:
②Goal-Oriented Scenario(面向目標場景):
允許Load Runner控制器根據具體的目標建立一個場景
Ø 指令碼選擇
由於Web應用比較複雜,在實際工作中需要建立一系列的指令碼,比如登陸指令碼、訂票指令碼、回覆帖子指令碼等。因此,可以通過選擇不同的指令碼組合來模擬不同虛擬使用者的不同操作。
Ø Available Script(可用指令碼):首先可以從此處選擇可用的指令碼。
Ø Scripts in Scenario(場景中的指令碼):選擇一個可用指令碼後通過【Add】按鈕將其新增到此處。
Ø Remove(移除):在Scripts in Scenario中選中一個在場景中的指令碼,然後單擊【Remove】按鈕從Scripts in Scenario列表中移除。
Ø Browse(瀏覽):單擊【Browse】按鈕可以選擇指令碼。
Ø Record(錄製):單擊【Record】按鈕可以錄製指令碼,彈出指令碼錄製介面:
Ø QualityCenter…:連線伺服器
㈡ .手動設定場景
Ø 圖的最下方,有兩個選項卡,分別是Design(設計)和Run(執行)。它們清楚地描述了手動場景的設定步驟就是:先設計,再執行。在此我們只討論場景的設計。
Ø 左上方介面顯示Scenario Groups為場景使用者組設定介面
. :開始執行場景
. :場景中的虛擬使用者設定
. :增加使用者組
. :刪除使用者組
. 執行時設定
. 詳細資訊設定
. 檢視指令碼
Ø 左下方介面顯示Scenario Schedule為場景計劃介面
①首先看此介面的主選單設定:
. New Scenario可以新建一個場景
. Delete Scenario刪除一個場景
. Save new name儲存更改的場景名
. Start Time場景開始時間
包括:Without delay(立刻執行)、With a delay of(延時執行)可以設定具體時間之後再執行場景、At(定時執行)可以設定在何時(具體日期、小時)執行場景。
②場景計劃主體包括:
Ø 更改場景名
Ø 計劃按場景或使用者組
1. 場景方式中所有使用者組虛擬使用者增長方式一致,用學校活動來比喻,類似全校所有班級參加團體體操比賽。
2. 使用者組方式中各使用者組中的虛擬使用者增長方式可以不同,類似全校各班級自報節目的匯演。
Ø 執行方式選擇
1. 真實情況計劃這種方式可以修改持續執行(Duration)與停止虛擬使用者(Stop Vuser)這兩種在啟動虛擬使用者之後發生的場景操作屬性,它相對第二種執行方式更接近真實情況。
2. 按指令碼設定執行直到結束,這種方式則無法設定使用者組啟動後的各操作屬性數值,指令碼執行開始後,使用者組的屬性就維持不變了。
以上三個為設定執行場景的總體規則
以下為設定執行場景過程中各個分步操作的屬性
Ø 主選單分別為“新增”、“編輯”、“刪除”、“上移”、“下移”Action
Ø 編輯Initialize初始化操作屬性:
包括:
. Initialize all Vusers simultaneously(同時初始化所有的虛擬使用者)
. Initialize –Vusers every---(每隔一段時間初始化一定數目的虛擬使用者)
. Initialize each Vuser just before it runs(在執行之前初始化每一個虛擬使用者)
Ø 編輯Start Vusers啟動虛擬使用者操作屬性:
包括:Start—Vusers:總共啟動多少個虛擬使用者
然後選擇這些需要啟動的虛擬使用者的啟動方式:
. Simultaneously:同時啟動
. --Vusers every HH:MM:SS:每隔一段時間載入一定數目的虛擬使用者
Ø 編輯Duration持續時間操作屬性
包括:
. Run until completion:場景持續執行直到完成
. Run for –day and HH:MM:SS:場景執行指定的時間
Ø 編輯Stop Vusers停止虛擬使用者操作屬性
包括:Stop—Vusers:總共停止多少個虛擬使用者
然後選擇這些需要停止的虛擬使用者的停止方式:
. Simultaneously:同時停止
. --Vusers every HH:MM:SS:每隔一段時間停止指定數目的虛擬使用者
Ø 右下方介面顯示Interactive Schedule Graph為運行當前場景,達到場景目標所歷經的過程趨勢圖
㈢ .面向目標的場景設定
Ø 左上方介面顯示Scenario Scripts為當前場景中的指令碼列表
Ø 右上方介面顯示Service Level Agreement為服務協議介面
Ø 右下方介面顯示圖片區域為運行當前場景,達到場景目標所經歷的過程趨勢圖
Ø 左下方介面顯示Scenario Goal為場景目標資訊顯示和編輯(Edit Scenario Goal)區域
由圖可知:系統預設選擇了場景目標為-----每秒點選次數100
其他屬性為:
. Min Number of Vusers:50
最小虛擬使用者50
. Max Number of Vusers:150
最大虛擬使用者150
. Scenario Duration:30min after the target has been achieved
場景持續時間:目標完成後30min
. Load Behavior: Reach target hits per second using automatic ramp up
效能負載:目標每秒點選自動增加
Ø Edit Scenario Goal編輯場景目標
……
Ø Goal Profile Name選擇不同的目標:
Ø Define Scenario Goal修改場景目標具體數值:
包括:
Goal Type:目標型別
Reach goal of …hitsper second:目標每秒點選數
Using a minimum of… and a maximum of … Vuser:虛擬使用者的最小值和最大值
Ø Scenario Setting場景設定
.
此為達到目標後系統繼續執行時間
.
此為【如果目標無法達到,系統的處理方式:(If target cannot be reached)】
Stop scenario andsave results停止場景並儲存結果
Continue scenariowithout reaching goal繼續執行場景、無須達到目標
另外,還可以選中接受通知(Receive notification)使得測試人員瞭解測試目標無法達到這一情況
Ø Load Behavior負載行為設定為達到當前目標而增加負載
負載增加的行為方式有3種:
. Automatic 自動:預設方式,無須設定
. Reach target number of hits per second after ..時間間隔:這種方式可以設定當前場景在達到目標之前需要執行多長時間,以小時:分鐘:秒為單位。
. Step up by…hits per second every …:漸進式:這種方式可以採取一種漸進增加的策略執行場景,比如上圖為每隔2分鐘增加20個虛擬使用者。其他的目標具體設定內容和數值有所不同。
Ø Do not change recordedthink time不修改錄製的思考時間
思考時間是使用者在Web應用各操作之間的時間。因此,在與事務相關的場景目標設定中,若維持每秒事務數量不變,如果選中了此項,則虛擬使用者數量要相應的增加。
Ø 面向目標的場景設定,同樣可以設定場景的啟動時間:
與手動場景設定一樣同樣包括:Without delay(立刻執行)、With a delay of(延時執行)可以設定具體時間之後再執行場景、At(定時執行)可以設定在何時(具體日期、小時)執行場景。
㈣.控制器的全域性設定
前面瞭解的是建立手動場景和麵向目標的場景的各種設定,這些設定都是針對具體的特定測試場景的,如果場景不同或者測試型別不同,數值一般不同。此處描述的控制器的全域性設定則有些特殊,其中的數值對於該控制器下管理和實現的所有場景都有效。
Ø 開啟控制器全域性設定的方法:
Tools -----Options開啟如圖
Ø Timeout超時設定
當網路狀況不好、場景中機器較多時,可以修改窗體中各個微調框的數值(單位均為秒)以免Load Runner返回錯誤。
此為控制器與虛擬使用者初始化等活動的超時設定
① 可選框Enabletimeout checks為允許超時設定,如果禁用超時限制,Load Runner將無限長地等待負載生成器進行連線和斷開連線,並等待其執行“初始化”、“執行”、“暫停”和“停止”命令。
②Load Generator負載產生器:可以設定連線(Connect)和斷開連線(Disconnect)超時時間。連線超時可以輸入等待其他連線到任何負載生成器的時間限制。如果在指定的時間內連線不成功,負載生成器的狀態將變為“失敗”。斷開連線超時可以輸入等待從其他任何負載生成器斷開連線的時間限制。如果在指定的時間內斷開連線不成功,負載生成器的狀態將變為“失敗”。
③還可以輸入Init、Run、Pause、Stop命令的最長時間限制
每4重新整理虛擬使用者狀態一次。
Ø Run-Time Settings執行時設定
虛擬使用者配額(Vuser Quote):要防止系統過載,可以為Vuser活動設定配額,用來設定負載生成器一次可以初始化的最大Vuser數。
停止執行時虛擬使用者執行策略(When stopping Vusers):
1. 等待當前指令碼迭代結束
2. 等待當前指令碼操作結束
3. 立即結束
允許使用種子值來產生隨機順序。
每個種子值代表一個用於測試執行的隨機值順序。只要使用同一個種子值,就會為場景中的Vuser分配相同順序的值。該設定將應用於使用Random方法從資料檔案分配值的引數化Vuser指令碼。
Ø Run-Time File Storage執行時檔案儲存位置
可以設定指令碼和結果儲存的位置:
1. 儲存在本機
2. 儲存在共享網路驅動盤(利於別人檢視和分析)
Ø Path Translation Table路徑轉換表
路徑轉換表是一種對映,將控制器上的檔案路徑轉換為遠端主機上的檔案路徑。這樣的設定對於網路中包含異類系統(比如既有Windows,也有Unix)是很有用的。
選擇“Convert to UNC”複選框,指示Load Runner忽略路徑轉換表並將所有路徑都轉換為通用命名約定格式。
路徑翻譯表中的每一條記錄應該類似如下的語句:
<Controller host> <controllerpath> <remote path> [<remote host>]
Ø Monitors監視器
監視器好像公路上的電子眼,用於隨時報告場景的各項資訊,他可以按照規定的時間(也叫做資料取樣率,單位為秒)獲得伺服器資源資訊,並反映到控制器介面當中。
事務資料(Transaction Data)
啟用事務監視器(Enable Transaction monitor):指在場景開始時開始監控事務。
頻率(Frequency):用來選擇聯機監視器為生成“事務”、“資料點”、“Web資源”聯機圖而採集資料的頻率(以秒為單位)。
預設值為5秒。對於小型場景,建議使用頻率1;對於大型場景,建議使用頻率3-5。頻率越高,網路流量越低。
伺服器資源取樣率(Server Resource Sampling):取樣速率是連續取樣之間的時間間隔(以秒為單位)。用來輸入Load Runner在場景中採集監控資料的速率。如果增大采樣速率,則資料的監控頻率就會降低。
錯誤處理:可以將錯誤傳送到輸出視窗或者以提示資訊框的形式顯示出來(可能打斷執行過程,對希望效能測試自動執行不利)。
除錯資訊與除錯級別0-9:把與除錯有關的訊息傳送至輸出日誌。
Ø Execution執行頁
預設的場景計劃:
1. 真實情況計劃這種方式可以修改持續執行(Duration)與停止虛擬使用者(Stop Vuser)這兩種在啟動虛擬使用者之後發生的場景操作屬性,它相對第二種執行方式更接近真實情況。
2. 按指令碼設定執行直到結束,這種方式則無法設定使用者組啟動後的各操作屬性數值,指令碼執行開始後,使用者組的屬性就維持不變了。
Ø WAN Emulation 網路競爭頁
排除來自於網路的主機(Exclude hosts from WANemulation)
接下來是新增主機名和IP地址。