1. 程式人生 > >Visual Studio進行Web效能測試- Part II

Visual Studio進行Web效能測試- Part II

對於一個多使用者的應用程式,效能是非常重要的。效能不僅是執行的速度,它包括負載和併發方面。Visual Studio是可以用於效能測試的工具之一。Visual Studio Test版或Visual Studio 2010旗艦版為自動化測試提供了支援。

介紹

對於一個多使用者的應用程式,效能是非常重要的。效能不僅是執行的速度,它包括負載和併發方面。效能測試是對以下問題的回答

  • 我們如何確保我們的新的應用程式將支援預期的使用者負載?
  • 如何避免在實際負載條件下會出現的問題?
  • 如何確定響應時間?
  • 如何規劃伺服器的容量?

Visual Studio是可以用於效能測試的工具之一。Visual Studio Test版或Visual Studio 2010旗艦版為自動化測試提供了支援。

這將是一系列文章的第二部分。

  • Part I: Web測試和配置

  • Part II:負載測試,RIG和負載測試術語。

  • Part III:效能計數器,負載測試結果分析。

負載測試(Load Test)

Load test 用於執行程式的負載測試。它可以模擬多個虛擬使用者並執行測試指令碼,以模擬真實使用者在不同的伺服器,如應用伺服器,資料庫伺服器和Web伺服器的負載。Load test可以使用任何的測試指令碼。

術語說明
Think Time

Think Time是兩個請求之間的時間。這可能是使用者填寫表單,瀏覽頁面,或閱讀一些文字等時花費的時間。Think Time用於模擬在真實使用者的場景下,系統如何和一個真實使用者的互動。

Constant Load (恆定負載)

Constant Load是指從測試開始到結束,有恆定數量的使用者不間斷地操作該網站。比如在1個小時的時間內,有25個使用者正在使用該系統。所有25個使用者不斷地訪問該系統。這種測試型別主要用於壓力測試。

Step Load(階躍負載)

在Step Load中,使用者將階梯式地加入。就是說在不同時期有不同的使用者作業系統,並且使用者的數量也不是恆定不變的。在Step Load模式下需要指定如下引數:

    • Start user count: -  測試開始時,有多少使用者操作該系統
    • Step duration:- 每隔多少秒後下一批使用者將加入該系統
    • Step user count
      :- 一個階梯時間段後,多少個使用者將加入系統
    • Maximum user count:- 最大的使用者數是多少。

測試組合(Test Mix)

測試組合指定不同的場景在系統中如何被執行或使用。不同的測試組合的設定是通過對系統使用情況的研究來形成的。

例如,如果我們在做某網路營銷網站的負載測試,約60%的人會進行產品搜尋,30%會買一些產品和10%會把產品儲存為書籤。根據這種使用情況的資訊,就可以形成一個測試組合:60%的模擬使用者將執行搜尋指令碼,30%將執行購買產品的指令碼,其餘的10%將執行把產品儲存為書籤的指令碼。

負載測試的建立

在專案上點選滑鼠右鍵,選擇Add- >New Test - >Load test模板。這將開啟新的負載測試嚮導
Ambily.raj_634152917086831719_1 

接下來,指定場景的名稱,如"booking the ticket","searching a book"等。接下來指定Think Time profile。我們可以使用Web測試中記錄的錄製的的Think Time,也可以使用時間正態分佈的Think Time。我們還可以使用第三個選項來避免使用Think Time。
Ambily.raj_634152917088931328_2 

接下來,指定負載模式。指定我們是否要使用constant load還是step load模式。在constant load模式中指定使用者數。在step load的情況下,指定start user count,step duration,step user count和maximum user count。 
Ambily.raj_634152917089321953_3
接下來,指定測試組合模式。提供的不同的選項有:

[下面的定義來自Visual Studio]

基於總測試數(Base on the total number of tests)

確定虛擬使用者啟動測試迭代時執行哪個 Web 效能或單元測試。 在負載測試結束時,執行特定測試的次數與分配的測試分佈相匹配。 使測試組合基於 IIS 日誌或生產資料中的事務百分比時,可使用此測試組合模型。

基於虛擬使用者數(Based on the number of virual users)

確定將執行特定 Web 效能或單元測試的虛擬使用者的百分比。 在負載測試中的任何時候,執行特定測試的使用者數都與分配的分佈情況相符。 使測試組合基於執行特定測試的使用者的百分比時,可使用此測試組合模型。

基於使用者節奏(Based on user pace)

在負載測試過程中,每個使用者每小時執行每個 Web 效能測試或單元測試指定的次數。 如果希望虛擬使用者在負載測試過程中以特定節奏執行測試,則可使用此測試組合模型。

基於順序測試順序(Based on sequential test order)

每個虛擬使用者按照在方案中定義測試的順序執行 Web 效能測試或單元測試。 虛擬使用者以此順序持續迴圈進行測試,直到負載測試完成為止。

(譯者:簡單來說,第一種配置每個虛擬使用者每次執行的指令碼都是隨機的,所有使用者執行的指令碼總數的比例是確定的;第二種配置每個使用者都執行固定的一個指令碼,所有使用者執行的指令碼的總數的比例是確定的;第三種指定每個指令碼在一個小時內需要執行的次數,客戶端只需要完成這些工作量;第四種每個使用者都迴圈地順序地執行每個指令碼)

Ambily.raj_634152917089644219_4

接下來,指定測試組合。在測試組合中,我們將新增多個Web測試指令碼到負載測試中。如果我們只有一個指令碼,所有使用者都將執行相同的任務。如果我們有2個或更多的指令碼,我們可以指定有多少使用者需要執行特定的任務。

例如,我們有兩個指令碼,一個用於搜尋一本書,另一個用於購買一本書。在我的負載測試中,我可以指定70%的使用者做搜尋,剩下的30%做另一個操作。

測試組合是模擬真實的使用者體驗。有些功能被很多使用者用到而另一些則沒有那麼頻繁第被使用。取決於功能的使用情況,來測試系統,這將提供一個真正的效能結果。

Ambily.raj_634152917090073906_5

在下面的例子中,我們選擇了兩個Web測試指令碼,並指定測試組合為65%的使用者將執行Webtest1,35%將執行Webtest2。



接下來,指定網路組合(Network Mix)。在這裡,我們可以模擬網路如區域網,廣域網或網際網路,並且對系統在不同網路中的效能進行比較。

Ambily.raj_634152917090698906_7 

接下來,指定瀏覽器的組合(Browser Mix)。這對於確定系統是如何在不同的瀏覽器中執行是非常有用的。

Ambily.raj_634152917091196953_8

接下來,增加作為web伺服器、應用程式伺服器和資料伺服器的計算機系統,用於收集效能計數。為每個系統新增所需的效能計數器。

(譯者:確保你的帳號被新增到各個伺服器的Performance Monitor Users組中,這樣控制器才有許可權訪問各個伺服器)

Ambily.raj_634152917655181328_9

接下來,指定測試的持續時間或迭代次數。如果設定了一個預熱期,負載測試會在預熱期逐漸地自動增加負荷。

Ambily.raj_634152917655532891_10 

一旦您完成建立負載測試,它會建立一個象下面這樣的.loadtest檔案。從下面的介面中,我們可以直接編輯和新增的所有設定。
Ambily.raj_634152917655943047_11

選擇constant Load模式,並選擇相應的屬性。從屬性面板中,我們可以改變負載模式為Constant, Step或者 Goal based。

Goal based load test(基於目標的負載測試)用於找到滿足條件的最大使用者負載。例如,在這裡,我們設定的目標為平均響應時間應為8分鐘,一旦系統達到的目標,將停止執行。同樣的方法,我們可以通過使用基於目標的測試,以找到處理器利用率70%的最大負荷。 

從Run Settings屬性,我們可以改變的執行時間(Run Duration),網路測試連線池的大小(WebTest Connection Pool Size),網路測試連線模式(WebTest Connection Model),預熱持續時間(Warm-up Duration)等。

Ambily.raj_634152918027339531_13

我們可以指定計數器的閾值。一旦達到警戒水平時,它會顯示警告。當它達到臨界閾值時,請求將啟動失敗。 
Ambily.raj_634152918027945000_14

您可以新增自定義計數器和計數器集到計數器集合。

Ambily.raj_634152918028530938_15

從Scenario的屬性中,我們可以改變的思考時間配置和對應的思考時間。
Ambily.raj_634152918028960625_16

執行負載測試

選擇“Run Test”來執行負載測試。


Ambily.raj_634152918029282891_17

一旦測試開始,你可以在下面的螢幕中觀察到不同的效能計數器和測試狀態。您可以拖動左側的計數器把它放置到圖形區域,這將為相應的計數器顯示圖形。請求彙總和測試彙總下可以在概覽部分中觀察到。
Ambily.raj_634152918029751641_18

我們可以從表格項中觀察到的請求,錯誤,頁面,事務和其他的細節,比如失敗的次數,響應時間,內容長度。

Ambily.raj_634152918030093438_19

您可以更改圖形顯示選項,如只顯示一個圖形,或兩個垂直圖,四縱板等
Ambily.raj_634152918030552422_20

結果

一旦執行負載測試完成後,顯示如下的彙總報告。

Ambily.raj_634152918338853203_21

我們可以可以使用”Create Excel Report”來將報表匯出到Excel。它建立了一個Excel報表的多個工作表來描述平均響應時間,測試執行,頁面時間等,
我們可以建立兩種型別的報告:

    • 趨勢 - 建立一個Excel報表為選定的執行結果建立趨勢圖。
    • 比較 - 建立一個Excel報表來比較兩個或更多執行結果。
      Ambily.raj_634152918339136406_22 
    • Detail選項將允許我們在點狀圖中研究的測試結果。我們可以在底部區域選擇一段時間,研究在特定的時期的趨勢。

Ambily.raj_634152918339585625_23

Rig(遠端測試機組)

有時,在效能測試中,我們需要對系統進行非常高負載的測試。每臺機器能夠產生的負載時有限的。在一個電腦系統中,我們可以產生最多500至800個使用者的負載。如果你需要更多的負載,我們需要新增多個電腦系統來執行負載測試。如果我們從多個系統中執行它,那麼測試結果的分析和綜合報告的建立將是困難的。

Rig是在多個客戶端系統執行負載測試的解決方案。我們需要在一個系統上安裝負載控制器(Load Controller)並在其他系統上安裝負載代理(Load agent)。VSTS的Rig的是一組系統,它包括一個控制器和一個或多個代理。控制器將工作分配給代理,並且收集所有代理的資料,並建立一個單一的報告。

總結

Load test可用於在系統上執行不同的效能測試。我們可以通過設定不同的測試組合,使用者負載,壓力條件,網路組合,瀏覽器和負載模式來測試系統。通過查詢下SQLEXPRESS中的LoadTest或者LoadTest2010資料庫,Load test會生成一個詳細的報告,此外,從結果中,我們可以建立一個Excel的趨勢報告或比較報告。總結報告可以儲存為HTML檔案。

在PartIII中,我們將研究的重要效能計數器和效能測試結果分析。

知平軟體致力於移動平臺自動化測試技術的研究,我們希望通過向社群貢獻知識和開源專案,來促進行業和自身的發展。