qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          捉蟲記--大容量Web應用性能測試與LoadRunner實戰(連載七)

          第14章  通用性能測試結果分析

            截至第13章,小白已經完成了LoadRunner測試腳本的編寫、場景的建立,并成功地執行測試及分析了整個測試結果、產生了測試報告。本書對于LoadRunner這一強大的工具也已經基本介紹完畢了。但是,在實際工作中,性能測試工程師可能并不一定采用LoadRunner,而是使用其他的工具甚至自行編程來取得相關的性能測試數據。那么,有沒有通用的一些分析性能測試數據的經驗呢?

            本章的內容就能夠回答上述這個問題。如果說第12章中LoadRunner所提供的性能圖表與測試報告是汽車中的自動擋,那么本章就是汽車中的手動擋。作為一名性能測試工程師,必須能夠脫離工具軟件的束縛,直接從原始的數據中得到正確的結論,才稱得上合格。

             初學者都知道,性能測試得到的數據,如果不進行分析,得到的結果是沒有多大價值的。而在分析性能測試結果的過程中,往往需要用到簡單的數學知識來進行評 估、敏銳的觀察能力來發現隱藏在數據中的性能問題;另外,出色的文檔編寫能力和圖表制作能力則有利于將測試工程師了解到的事實有效地傳遞到相關人員的印象 當中。其中,工作中最重要、也可能是最耗費時間與精力、同時又是收獲最大的部分就是發現性能問題。

            本章將依據以上這幾種能力分為3節來 介紹:第1節介紹判別測試數據是否可靠的要點,其中包含了一些簡單的統計學知識。第2節通過幾個范例來講解發現性能的技巧與經驗。第3節將列出編寫性能測 試報告的注意事項與要點,同時,對Office Excel軟件中的畫圖功能也進行了較詳細的說明。

            14.1  性能測試結果的可靠性

             性能測試的結果往往由大量數據組成,在我們拿到這些數據之后,首先要判斷這些數據是否可靠。一些簡單的統計學指標可以使我們很快地從數據中獲得對于性能 的基本印象。因此,本節先借助一些數學知識,讓我們能夠使用統計學上的簡單指標對結果進行簡單歸納;之后,再介紹判斷性能測試結果可靠性的幾條經驗規則。

            本節中將要介紹、同時也是測試結果分析中較為常用的數學指標有如下幾種:

            平均值(Mean Value);

            中值(Median Value);

            正常值(Normal Value);

            標準偏差(Standard Deviation);

            正態分布(Normal Distribution);

            一致分布(Uniform Distribution);

            置信區間(Confidence Intervals)。

            為了理解方便,我們就使用小白獲得的一手響應時間作為例子,學習如上數學指標的具體含義,從而獲得總體性能的更直觀印象。

            14.1.1  原始數據

            小白手中有關公司網站響應時間的數據一共分為4組,分別代表了客戶端不同操作端系統、不同瀏覽器下訪問首頁的數據,分別如表14-1、表14-2、表14-3、表14-4所示。

            表14-1  Windows XP下通過IE 6訪問公司網站的響應時間數據(秒)

          5

          6

          4

          8

          13

          10

          4

          4

          5

          7

          8

          10

            表14-2  Windows XP下通過Firefox 3訪問公司網站的響應時間數據(秒)

          1

          12

          5

          7

          8

          2

          2

          4

          12

          13

          1

          1

            表14-3  Windows Vista下通過IE 7訪問公司網站的響應時間數據(秒)

          6

          6

          6

          8

          12

          12

          14

          4

          8

          6

          6

          6

            表14-4  Windows Vista下通過Firefox 3訪問公司網站的響應時間數據(秒)

          6

          6

          7

          8

          8

          7

          6

          6

          9

          6

          11

          9

            從以上數據來初步觀察,響應時間長短參差不齊,表面上看分布也沒有什么規律。

           14.1.2  平均值

            所謂平均值(Mean Value),就是把所有數值都相加,然后除以這些數值的個數。平均值也叫做算術平均數。平均值對于某類數據是非常有用的,比如考試成績,年齡數據等。但是,在14.1.1所舉出的數據來說,平均值并不能說明問題,甚至會隱藏可能的性能問題。

            【實戰演練:平均值的計算】

            比如,在14.1.1的4個表格當中,就平均值來看,表現最好的應該是表14-2。這是因為,表14-1、表14-2、表14-3、表14-4的平均值依次為:

            (5+6+4+8+13+10+4+4+5+7+8+10)/12 = 7;

            (1+12+5+7+8+2+2+4+12+13+1+1)/12 = 5.67;

            (6+6+6+8+12+12+14+4+8+6+6+6+6)/12 = 8.33;

            (6+6+7+8+8+7+6+6+9+6+11+9)/12 = 7.41。

            以上數值的單位均為秒。從結果中可以發現,表14-2響應時間的平均值確實是最短的。但是,需要注意的是,表14-2中的數據"兩極分化"比較 嚴重,既有很短的1秒,也有很長的13秒,而在平均值5.67秒附近的數值卻很少。這樣的情況就可能暴露出網站性能的某些問題,或者是數據采集中的不科學 性。

            讀者在實際工作中得到測試結果的時候,不能單單記錄數值,同時還要思考如下等問題:

            響應時間很短是否由于緩存的緣故?

            響應時間很長是否是Web應用代碼的問題?

            不同瀏覽器的響應時間有什么規律?

            在測試過程中,對得到的數據多問幾個為什么,有助于提高測試的準確性。

            14.1.3  中值

            中值的引入能夠發現部分14.1.2節中表14-2中的數據問題。

            【中值是什么】

            所謂中值(Median Value),就是將數據從小到大排列起來,中間那個數的數值。

            將中值的定義應用于實際,比如對于表14-1來說,其數據從小到大的排列依次為:

          4 4 4 5 5 6 7 8 8 10 10 13

            如果這一系列數據的個數為單數,中值就是中間那個數的值。如果類似表14-1的情況,數據個數是12,為偶數,則中值一般認為是最中間兩個數值(這里是第6個和第7個)的平均值,即(6+7)/2=6.5。

            經過計算,表14-1、表14-2、表14-3、表14-4的中值分別為6.5、4.5、6和7。

            【中值與平均值的關系】

            中值雖然不等同于平均值,但若中值與平均值越接近,則說明數據分布的越均勻。

            14.1.4  正常值

            正常值(Normal Value)并不一定意味著它的值是正常的。所謂正常值,是指在數據結果中出現頻率最多的那個值,通俗地說,就是在它們中間最容易碰到的數值。表 14-1、表14-2、表14-3和表14-4中的正常值分別為1、4、6、6秒,可見,正常值與平均值、中值可能會有很大差別。

            【實戰演練:正常值的判斷】

            設想這樣一個場景:小白所測試的Web應用有某部分代碼出現了問題,導致數據庫連接經常超時,測得的響應時間序列為20、25、30、26、 26、27、26等,在這樣的數值當中,26是正常值,但它絕不是網站正常時應該具備的響應時間,因此,它又是"不正常"的。實際工作中這樣的情況并不鮮 見,讀者在處理數據時一定要首先保證數據的有效性。

            性能測試中正常值的意義在于發現當前配置下,多數情況采集到的數值是什么。

            14.1.5  標準偏差

            標準偏差提供了比中值更準確的方法,來確定數值是否"聚集"在平均值附近。標準偏差(Standard Deviation)是一種度量數據分布分散程度的標準,它可以用來衡量具體數據值偏離平均值(算術平均值)的程度。標準偏差越小,這些值偏離平均值就越 少,數據就越可信。反之,數值偏離平均值越大,數據就越不可信。

            【實戰演練:Excel計算標準偏差】

            標準偏差的計算不是本書講解的內容,我們只需理解它的含義會用工具計算就可以了。常見的計算標準偏差的工具軟件就是微軟的Excel。如圖14-1中新建了一個工作表,其中有4列,每一列分別包含表14-1到表14-4的測試數據。

            下面舉例計算前面表14-1中數據(已經錄入在圖14-1工作表的A列之中)的標準偏差。首先,單擊工作表中的A列,然后選擇"插入"|"函 數"命令,如圖14-2所示。之后Excel將彈出函數選擇對話框,在其中找到計算標準偏差的STDEV函數即可,如圖14-3所示。

            計算標準偏差需要輸入一系列的數值,這也是在圖14-2中要首先選中A列或其他列的原因。在圖14-3中單擊"確 定"按鈕之后,Excel將彈出函數參數對話框。如果其中的Number1文本框內沒有數值,讀者可以填入文字A1:A12,以表示A列的所有12個數值 作為計算的輸入,依次類推。確認輸入數據無誤后,單擊"確定"按鈕,計算結果將立即顯示在當前的對話框內,如圖14-4所示。

            通過前文這樣的方法,依次可以得到從表14-1到表14-4所包含測試數據的標準偏差,分別為:2.8919、4.6384、3.1285和1.6213。根據前面所介紹的"標準偏差數值越小數據越值得信賴"原則,很顯然,表14-4所包含的數據更具有可信度。

            對測試結果進行標準偏差的計算,有利于從中發現更具可信度的度量數值。

           14.1.6  正態分布

            正態分布(Normal Distribution)也叫做鐘形分布,這個名字是因為正態分布的數值在圖形上類似一口鐘而得來。它的含義就是一系列的數值當中,靠近中值附近的數值 數量最多,而偏離中值的數值數量則不斷減少。人類社會的很多行為都符合正態分布的特點,我們常說的"隨大流"也可以說是一個體現吧:大多數人的行為都是非 常類似的。

            一個典型的正態分布圖如圖14-5所示。在性能測試產生的數據中,足夠大量的響應時間具有正態分布的特點。

          圖14-5  正態分布(鐘形分布)示意圖

            【正態分布與標準偏差的關系】

            正態分布與標準偏差有很大的關系,一般來說,標準偏差越小,數值越接近正態分布。因為正態分布存在非常普遍,所以才擁有了Normal這樣的名字。

            14.1.7  一致分布

            一致分布(Uniform Distribution)顧名思義是指測試所取得的數據值相差很小,簡單粗略地看,在圖中會表現為波動很小的近似直線,如下面的情況。

            【實戰演練】

            小白所在的公司每周要發送一個郵件列表給注冊用戶,該列表的內容實際上是一個由市場、銷售部門HTML頁面。由于發 送程序運行在數據庫服務器上(因為每周一次,也是周日晚間發送,所以暫時沒有必要使用專門的服務器來完成),為了不顯著影響整體性能,需要對HTML頁面 的大小進行限制。為此,小白記錄了若干次的文件大小,如表14-5所示。

            表14-5  每周郵件列表文件大小

             

          200896

          47KB

          2008913

          48KB

          2008920

          47KB

          2008927

          48KB

            如果在Excel中對表14-5所列出的數據畫成圖,就可以看成是一致分布,如圖14-6所示。

          圖14-6  郵件列表內容文件大小呈一致分布

            每次郵件列表大小基本一致,是因為市場、銷售部充分利用了文件大小的上限,盡量爭取在有限的大小之內,放入更多的宣傳內容。當然,在實際工作情形中,不一定每次都會出現這樣的情況。

            如果在性能測試中出現了一致分布的數據,測試工程師需要找出原因,一般來說,這樣的數據反而是值得懷疑的。比如響應時間,如果用戶的響應時間驚人的一致,則要考慮是否有部分用戶因為某些原因根本無法訪問網站等原因。

            14.1.8  置信度與置信區間

            在性能測試領域,置信度指的是測試結果與真實結果之間的差別。由于具體的測試結果是由用戶使用Web應用方式的估計模型和性能測試方法決定的,因此也可以認為置信度反映了網站人員與最終用戶在使用該Web應用上的相似度。

            【置信度舉例】

            舉例來說,小白所在公司的人都認為用戶將更喜歡網站的A欄目,因此在資源有限的情況下,測試部對該欄目的功能進行了重點性能測試,并進行了優 化,獲得了不錯的結果;但實際網站上線后,用戶卻更喜歡另外某個欄目,經常使用的功能也與事先預想的不同。這就會導致性能測試結果與實際性能測量值有所誤 差。這種誤差大小的程度就是置信度。當然,這樣的理解在數理統計方面并不嚴格,但對于性能測試工程師在工作中的使用已經可以了。

            置信度越高,置信區間(Confidence Interval)也就越接近真實值的范圍。置信區間是指在某一置信度水平下,性能測試結果與Web應用上線后實際運行結果間的誤差范圍。要知道在Web 應用上線前,沒有誰能準確地預計用戶行為,因此有必要在進行性能測試時預估一個置信度,再根據結果得到置信區間。

            【置信區間的實際使用】

            假設公司對網站響應時間設置的合理值為10秒以下,置信度估計為80%。小白在對網站使用LoadRunner進行并發測試后,發現:由于使用 頁面功能不同,最差的情況一次并發50個用戶就可能令第51個用戶響應時間超標;而最好的情況則是一次并發300個用戶才能令響應時間超標。那么,在測試 結果報告中,小白應當這樣進行陳述:根據80%置信度,在一般工作負荷下,并發數為50×80%到300×80%,即40~240個用戶,都不會引起響應 時間超標。這里的40~240就是置信區間。

            綜上所述,置信度也可以理解為一種形式的安全系數。

            14.1.9  數據可靠性判斷的規則

            前面講述了一些統計學的知識,實際目的都是為了使得我們的性能測試報告能夠更接近于真實,這樣才能發揮最大的作用。因此,在測試結果出來之后,并不要立刻發送測試報告,而是要先判斷取得的測試數據是否可靠,這樣的能力對于性能測試工程師來說是非常必要的。

            數據可靠性有如下幾條經驗規則:

            (1)如果有超過20%的測試數據明顯與其他數據有很大差別,則應該先檢查測試過程中是否出現問題。這樣的情況是經常發生的:小白使用很多臺測 試機器在下班后運行自動訪問公司網站的腳本程序,從而記錄響應時間等數據。但由于其中某些機器設置了Windows系統默認凌晨3點發生的自動更新,可能 會強迫重啟電腦,從而導致測試中斷,在重啟過程中取得的響應時間數據當然是不可靠的。

            (2)如果進行了多次相同目的的性能測試,如果某一次測試絕大多數結果比其他幾次測試中最大的結果都要大,或者比它們當中最小的結果都要小,那 么應該考慮這次測試結果的有效性問題。這一點是很好理解的。至于絕大多數的比例設定為多少,可以根據實際情況來定,一般至少在75%以上。

            根據以上這兩條基本原則,再結合具體被測試軟件的實際情況,就可以判斷出哪些數據是可靠的,哪些數據是不可靠的。有了可靠的數據,才能編寫出可靠的測試報告,這是最重要的一點。

            在14.2節,本書將簡要介紹性能測試結果的分析方法,這是性能測試報告的關鍵。

            (未完待續)

          相關鏈接:

          捉蟲記--大容量Web應用性能測試與LoadRunner實戰(連載一)

          捉蟲記--大容量Web應用性能測試與LoadRunner實戰(連載二)

          捉蟲記--大容量Web應用性能測試與LoadRunner實戰(連載三)

          捉蟲記--大容量Web應用性能測試與LoadRunner實戰(連載四)

          捉蟲記--大容量Web應用性能測試與LoadRunner實戰(連載五)

          捉蟲記--大容量Web應用性能測試與LoadRunner實戰(連載六)

          posted on 2013-06-03 13:35 順其自然EVO 閱讀(433) 評論(0)  編輯  收藏 所屬分類: loadrunner性能測試web 前端性能測試

          <2013年6月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 沙田区| 突泉县| 华亭县| 江安县| 永德县| 枞阳县| 阳西县| 龙山县| 建水县| 扎囊县| 娱乐| 芮城县| 徐水县| 法库县| 昌图县| 博湖县| 黄平县| 子洲县| 措美县| 肥城市| 临安市| 巴林右旗| 日土县| 德安县| 麟游县| 霍邱县| 米易县| 潜山县| 喀什市| 梨树县| 舞钢市| 遵化市| 滕州市| 龙里县| 静宁县| 涞源县| 南开区| 张北县| 油尖旺区| 东丽区| 玛曲县|