LoadRunner關于事務相關性能指標信息分析及證明部分內容
6.15 關于事務相關信息部分內容
事務的響應時間是我們平時經常關注的一項性能指標,除此之外,在結果概要信息圖表中,您還會經常看到事務的最小值(Minimum)、平均值(Average)、最大值(Maximum)、標準偏差(Std. Deviation)和90%事務(90 Percent)等相關信息內容,這些數值代表什么?又是怎樣得來的呢?
6.15.1 關于分析概要事務相關信息問題提出
盡管我們都是性能測試的從業人員,可是作為測試人員通常都有一個對事物“懷疑”的心理,在這里就表現為LoadRunner給出的這個結果信息是否可信?以及相應的結果信息是如何得到的?
這確實是一個很好的問題,但是,如何去證明LoadRunner 11.0的結果信息是正確的呢?大家在平時做功能測試的時候,是如何證明被測試的功能模塊是正確的呢?相信作為測試從業者,我們都會異口同聲地說:“我們都會設計很多測試用例,用例包括兩部分:輸入和預期的輸出,如果根據測試用例在被測試的功能模塊輸入相應的數據,實際執行結果和預期結果一致,那么就認為此功能模塊是正確的,否則就是失敗的。”回答得非常好,那么性能測試是不是可以效仿功能測試呢?回答是肯定的,為了驗證性能測試的執行結果的正確性和各個結果信息的數據來源,我們也需要事先組織一些數據,然后根據這些數據的內容算出預期的結果,再通過LoadRunner 11.0去實現我們的想法,觀察最后執行的結果是否和我們預期的一致,當然,如果一致就是正確的了,不一致,當然就證明兩者之間有一個是錯誤的,結合我們預期的設定來講,當然是LoadRunner 11.0是錯誤的。
6.15.2 關于結果概要事務相關信息問題分析
這里我有一個想法就是,我們事先準備10個數字,即:1、2、3、4、5、6、7、8、9、10,從這組數字當中不難發現,最小的數值應該是1,最大的數值應該是10,這些數值的平均值為(1+2+3+4+5+6+7+8+9+10)/10=55/10=6.5,在這組數值里邊90%的數值都會小于或等于9,只有1個數值大于9,即:數值10。
也許,聰明的讀者朋友們已經想到了,我們是否可以借助LoadRunner 11.0的事務和思考時間來將我們的想法實現。“嗯,確實如此,我們的想法不謀而合”。
6.15.3 關于結果概要事務腳本設計及其相關設置
首先,我們可以在Virtual User Generator中編寫一個腳本,即:
Action()
{
lr_start_transaction("思考時間測試事務");
lr_think_time(atoi(lr_eval_string("{thinktime}")));
lr_end_transaction("思考時間測試事務", LR_AUTO);
return 0;
}
其中,“thinktime.dat”參數化文件內容包括數值1到10,共計10個整數值,如圖6-178所示。
圖6-178 “thinktime.dat”參數化文件內容
然后,設置“thinktime”參數的“Select next row:”為“Unique”,“Update value on:”為“Once”。
接下來,啟動“Controller”讓我們來設定一個場景,我們在參數化的時候一共參數化了10條數據記錄,在場景設計的時候,也取10個虛擬用戶,如圖6-179所示。
圖6-179 “Controller”場景設計對話框
當然,如果您關心在負載的時候,每個虛擬用戶分別取到了哪些值,可以將測試執行日志打開,根據需要,這里我們單擊圖6-180紅色區域所示按鈕,則出現“Run-Time Settings”對話框,如圖6-181所示。然后,選擇“Log”頁,請您根據自己的情況,選中日志的擴展情況,這里我們選中“Parameter substitution”選項。
圖6-180 場景設計對話框 圖6-181 “Run-Time Settings”對話框
而后,單擊“Run”頁,如圖6-182所示,再單擊圖6-183的“Start Scenario”按鈕,則開始執行場景。
圖6-182 場景設計對話框
圖6-183 場景執行對話框
您可以單擊“Results>Analyze Results”菜單項或者單擊工具條對應的功能按鈕,如圖6-184所示,就可以將執行完成后的結果調出來。
圖6-184 場景執行對話框
6.15.4 如何解決結果概要信息不計入思考時間問題
測試結果出來后,首先,映入眼簾的是“Analysis Summary”圖表信息,但是您是不是被“Transaction Summary”的數據驚呆了呢?參見圖6-185所示,為什么圖中所有的數值均為“0”呢?相信有很多朋友對這個結果也感到莫名其妙,再回頭看看我們的腳本,腳本中使用了思考時間,即“lr_think_time()”函數,而在“Analysis”應用中在默認的情況下,是忽略思考時間的,所以就出現了這樣的一個結果。那么如何使響應時間中包括思考時間呢?非常簡單,您可以單擊屬性“Filter”,默認情況下該屬性值為“do not Include Think Time”,單擊該屬性值后面的按鈕,如圖6-186所示。
圖6-185 結果分析應用界面
圖6-186 結果分析應用界面
單擊
按鈕后,則出現圖6-187所示界面,單擊“Think Time”過濾條件,在“Values”列選中“Include Think Time”復選框。
設定好過濾條件后,單擊“Analysis Summary Filter”對話框的“OK”按鈕,此時您會發現結果信息的內容發生了改變,先前為“0”的數值項現在已經有了數值,如圖6-188所示方框部分內容。
圖6-188 事務概要信息內容
6.15.5 如何知道每個虛擬用戶負載時的取值
有很多朋友,可能非常關心每一個虛擬用戶的取值問題。可能還有很多用戶仍有這樣的疑問,根據我們參數化的數據(即:1到10,共10個整型數值)正常來講的話,平均值應該為6.5,最小值應該為1.0,而最大值應該為10.0,但是從圖6-188我們可以看到,相應的數值都是有一定的偏差,那這又是為什么呢?下面,我就逐一給您來解答這兩個問題。
關于每個虛擬用戶取值問題,您可以有兩種手段獲得。第一種方法,查看虛擬用戶執行日志,這里我是將執行結果存放到了本書配套光盤的“腳本\思考時間樣例\Res_10VU_ Thinktime0”目錄,在這個目錄如果根據前面我們設定的執行時,啟用日志,則會有一個名叫“log”的目錄,這個目錄就存放每個虛擬用戶執行的日志信息,如圖6-189所示。
圖6-189 執行日志目錄及文件信息
讓我們任意打開一個日志文件來看一下文件的內容,比如在這里我們打開名稱為“thinktime_1.log”的日志文件,文件內容請參見圖6-190。細心的同志也許已經發現的一個問題,就是從圖6-190和圖6-188的“思考時間測試事務”,我們可以看到日志文件的思考時間是1.0129秒,而結果概要信息最小的事務時間顯示為1.013秒。那么為什么不正好是1秒呢?這是因為LoadRunner模擬思考時間使用的是近似模擬,從數值上我們可以看到,而且在統計數據的時候是精確到毫秒級,所以您就在日志文件中看到了1.0129,而統計數據的時候發現將數據進行了四舍五入變成了1.013了。
圖6-190 “thinktime_1.log”日志文件內容
您可以單擊圖6-191中方框區域,即“思考時間測試事務”鏈接,查看執行過程中我們設置的事務情況。
圖6-192就是平均響應時間在測試執行過程中變化的趨勢圖表。
您可以單擊圖6-193的“Raw Data”頁,而后再單擊圖6-194的“Click to retrieve raw data”鏈接,在出現圖6-195后,請您選擇要查看詳細的數據信息時間段信息,默認是整個執行過程時間,在這里我們要查看整個過程的相關數據信息,所以直接單擊“OK”按鈕。
圖6-191 結果分析概要事務相關信息
圖6-192 “Average Transaction Response Time”圖表
圖6-193 “Average Transaction Response Time”圖表的“Raw Data”頁
圖6-194 “Average Transaction Response Time”圖表的“Click to retrieve raw data”鏈接
圖6-195 “Raw Data”時間段選擇對話框
這時所有虛擬用戶執行過程中事務相關信息展現在我們面前,如圖6-196所示,您可以從這些數據中看到每個虛擬用戶在什么時間執行了那些事務以及執行事務所耗費的時間等相關信息。這里,結合腳本事務主要包括4個:vuser_init_Transaction、Action_Transaction、vuser_end_Transaction和思考時間測試事務。
圖6-196 “Raw Data”表格關于事務的相關信息
您可以對事務進行過濾,單擊事務名稱下拉框進行選擇,如圖6-197所示。
圖6-197 “Raw Data”事務過濾下拉列表
這里我們僅針對“思考時間測試事務”這個事務進行過濾,如圖6-198所示。
圖6-198 “Raw Data”中“思考時間測試事務”相關數據信息
為了讓大家更清晰地看到相關的數據,這里我們將這部分數據單獨截取出來,如圖6-199所示。
圖6-199 “思考時間測試事務”相關數據信息
6.15.6 如何將數據導出到Excel文件中
為了便于對數據進行分析,您可以將數據輸出到Excel文件中,參見圖6-200。
單擊“輸出到Excel文件”的工具條按鈕,將彈出“文件保存路徑選擇”對話框,默認保存的文件名稱為“Raw Data - Average Transaction Response Time.xls”,選擇要存儲的路徑后,單擊“保存”按鈕,如圖6-201所示。
圖6-200 “Raw Data”工具條信息 圖6-201 “Select Raw Data Filename and path”對話框
文件保存完成后,您可以打開該Excel文件,如圖6-202所示。
圖6-202 “Raw Data - Average Transaction Response Time.xls”文件內容信息
6.15.7 如何對導出的數據進行篩選
您可以對事務的相關數據進行篩選,選中文件的第一行,然后單擊“篩選”按鈕,如圖6-203所示。
圖6-203 “Raw Data - Average Transaction Response Time.xls”文件內容信息
單擊“Transaction_Name”列,選擇“思考時間測試事務”,單擊“確定”按鈕,如圖6-204所示,則可以將所有“思考時間測試事務”的相關數據信息過濾出來,如圖6-205所示。
圖6-204 過濾對話框
圖6-205 “思考時間測試事務”數據信息
6.15.8 如何對結果數據進行有效的分析
為了將原始數據和分析數據進行比較,這里我們新建一個sheet頁,名稱叫做“數據分析”,并將這些數據復制到新的sheet頁,如圖6-206所示,而后將最小值、最大值和平均值記錄在該sheet頁。
圖6-206 “思考時間測試事務”數據分析
以上是我們用Excel計算出來的,接下來,將這些數據和結果概要信息進行比對,即:比對圖6-206和圖6-207關于“思考時間測試事務”的最小值、平均值和最大值,您也許已經發現了最小值和最大值是完全一致的,而平均時間是有差異的,由于Excel文件中的平均值沒有進行四舍五入,所以比結果概要信息中的數據是多的,經過四舍五入后它們就完全一致了。
圖6-207 “Analysis Summary”信息
也許有的讀者還非常關心“Std.Deviation”和“90 Percent”是怎么來的呢?首先,我先解釋一下“Std.Deviation”和“90 Percent”代表什么意思:“Std.Deviation”是標準偏差,它代表著事務數據間差異大小程度,這個數值越小越好。
這里我們用標準偏差S來表示、平均值用
表示、每個具體的數據值用X1表示,用N來表示數據的個數。
接下來,我們把具體的數值放入公式中,為了方便我們計算,這里分步來計算。
第一步:[(1.013-6.511)2+(2.016-6.511)2+(3.013-6.511)2+(4.016-6.511)2+(6.016-6.511)2+ (6.014-6.511)2+(6.999-6.511)2+(7.999-6.511)2+(9.016-6.511)2+(10.016-6.511)2]/10=8.2399385,這里我們保留小數點后4為,則為8.2399。
第二步:將8.2399開平方后,得到S為2.8705,保留小數點3位,S=2.871。
接下來我們同圖6-207中的“思考時間測試事務”的標準偏差進行對比,發現兩者是一致的,當然我們手工進行計算似乎有點過于繁瑣,有沒有什么簡易的方法就可以計算出標準偏差呢?這里我非常興奮地告訴您:“有”!Excel提供了非常豐富的函數,我們可以利用“STDEVP”函數,如圖6-208所示。該函數給出的整個樣本總體的標準偏差,標準偏差反映相對于平均值的離散程度,該值越小越好。
接下來,讓我們看一下“90 Percent”是怎么得來的,它是指90%“思考時間測試事務”中最大的值,這里因為一共有10條記錄,排序后則9.015是這90%里邊最大值,所以“90 Percent”即為該值,如圖6-209所示。
圖6-208 Excel標準偏差函數的應用 圖6-209 “思考時間測試事務”的數據信息
當然,您也可以通過添加“Transaction Response Time (Percentile)”圖表來查看,如圖6-210所示。
因為這里我們的事務需要包含思考時間,所以,需要單擊圖6-210中的“Filter & Open”按鈕,將彈出圖6-211所示對話框,您需要選擇“Include Think Time”,即包含思考時間,然后再單擊“OK”按鈕,則會出現圖6-212所示界面,您如果想了解90%“思考時間測試事務”,可以順著橫坐標90位置往上找和圖表曲線的交點,該點即為“90 Percent”的值。
圖6-210 添加圖表信息對話框信息 圖6-211 “Graph Settings”對話框
圖6-212 “Transaction Response Time (Percentile)”信息



































浙公網安備 33010602011771號