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


原文作者:Ambily.raj

對於一個多用戶的應用程序,性能是非常重要的。性能不僅是執行的速度,它包括負載和並發方面。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的是一組系統,它包括一個控制器和一個或多個代理。控制器將工作分配給代理,並且收集所有代理的數據,並建立一個單一的報告。

負載控制器,負載代理的安裝和配置,請參考http://blogs.msdn.com/b/edglas/archive/2007/02/17/load-agent-and-load-controller-installation-and-configuration-guide.aspx

總結

Load test可用於在系統上執行不同的性能測試。我們可以通過設置不同的測試組合,用戶負載,壓力條件,網絡組合,瀏覽器和負載模式來測試系統。通過查詢下SQLEXPRESS中的LoadTest或者LoadTest2010數據庫,Load test會生成一個詳細的報告,此外,從結果中,我們可以創建一個Excel的趨勢報告或比較報告。總結報告可以保存為HTML文件。

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

 

本文由知平軟件劉斌華翻譯,轉載請注明出處。原文地址:http://www.dotnetfunda.com/articles/article951-web-performance-test-using-visual-studio-part-ii.aspx

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM