熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

用VS.NET中的測試工具測試ASP.NET程序

2013-11-13 10:18:30  來源: .NET編程 

  在編寫ASPNET應用程序的時候你會花費多長的時間來考慮性能的問題?很不幸大多數開發者都對性能問題感到很後悔性能的規劃和設計真的需要放在前面和中心位置你需要考慮自己的目標並且確保把良好的性能作為目標之一接著你需要評估自己的程序評估的方面越多改善性能的機會就越大
  
  在本文中我將解釋微軟Visual Studio企業版中包含的一個重要工具微軟Application Center Test嚴肅的Web開發者都應該把這個工具放在自己的工具包中
  
  Application Center Test
  
  在離開微軟之前我參加了個城市的ASPNET說明會其中一個覆蓋了性能問題並且給很多開發者介紹了微軟Application Center Test這個工具總是生成大量的有趣的信息我對它有很多疑問
  
  你會發現Application Center Test是Application Center(可以在舊的MSDN CD或DVD中找到)的一部分或者安裝在Visual Studio NET企業版的Visual Studio NET \Visual Studio NET Enterprise Features目錄下面當你第一次打開Application Center Test的時候你可以看到一個用於導航可用的測試結果和用戶的樹視圖首先我希望顯示出很容易建立測試
  
  使用Application Center Test
  
  首先建立一個簡單的Web應用程序例如我將使用圖所示的頁面(請注意我使用了一些聯機編寫ASPNET頁面的小技巧你不需要編寫完整的Page_Load事件聲明)
  
  示例Web應用程序
  
  <%@ Page Language=C# %>
  <%@ Import Namespace=SystemData %>
  <%@ Import Namespace=SystemDataSqlClient %>
  <%@ Import Namespace= SystemConfiguration %>
  
  <script runat=server
  public void Page_Load() {
  using(SqlConnection connection =
  new SqlConnection(ConfigurationSettingsAppSettings[Northwind]))
  {
  SqlCommand command = new SqlCommand(SELECT * FROM Products connection);
  connectionOpen();
  
  DataGridDataSource = commandExecuteReader();
  DataGridDataBind();
  }
  }
  </script>
  
  <form runat=server
  <asp:DataGrid id=DataGrid runat=server />
  </form>
  
  上面的代碼雖然不是推薦的用於構造應用程序的方法但是它也足夠簡單我們能夠在它上面執行一些基本的測試在Web浏覽器中打開這個頁面會返回一個填充了的數據表格它顯示為HTML表格
  
  現在你知道這個頁面可以工作了把鏈接復制到剪貼板上你還需要使用它的在我的計算機上這個例子的鏈接是x
  
  下一步導航到Application Center Test右鍵點擊Tests(測試)並選擇New Test(新建測試)它會打開新建測試向導歡迎頁面點擊下一步選擇新測試的源代碼並選中記錄新測試再次點擊下一步以選擇測試類型提示選擇腳本語言(我們不修改默認值)的時候點擊下一步出現了圖所示的界面
   
  圖新建測試向導
  
  記錄測試使Application Center Test易於使用點擊開始記錄會打開一個新的浏覽器實例不要在地址欄中輸入URL(應該為about:blank)我們的操作是在這個新的浏覽器實例中選擇Tools | Internet選擇並浏覽連接屬性頁接著點擊局域網設置按鈕會看到圖所示的界面
   
  圖連接設置
  
  你會發現代理服務器(proxy)設置信息被填充了並且與正常值不同這是因為Application Center Test打開了一個新的浏覽器實例並指示它使用Application Center Test運行的專用代理服務器經過浏覽器的任何請求都會被Application Center Test代理捕捉到
  
  為了完成測試請關閉浏覽器對話框並把用於測試的ASPNET頁面的鏈接粘貼到地址欄中點擊浏覽器的轉到按鈕或直接按下回車鍵再次出現了數據表格下一步關閉浏覽器你可能看到與圖類似的信息
   
  圖捕捉到的請求
  
  上面的對話框中的請求的詳細信息部分現在被Application Center Test代理捕捉到的請求所填充了這也是浏覽器發送的HTTP請求現在點擊停止記錄接著點擊下一步你會得到一個提示需要給該測試輸入一個名稱(我用的是My Test接著你可以點擊完成關閉向導
  
  恭喜你!你現在是一個性能測試工程師了很容易對嗎?
  
  你還可以選擇很多其它的設置信息和配置選項你右鍵點擊測試列表中的My Test節點並選擇屬性 可以看到這些設置在這些選項中你可以模擬多個浏覽器多個用戶熱身時間的參數(不會被報告其結果)以及測試的持續時間你可以以後研究這些設置並閱讀一些討論測試原理和測試策略的文章我們不在細節上花費太多時間直接運行測試吧
  
  運行測試並建立基線
  
  要運行剛才建立的測試只需要簡單地右鍵點擊該測試並選擇開始測試測試開始以後點擊顯示詳細信息按鈕細節框中將顯示正在運行的測試的一個圖表同時顯示在運行測試過程中可能出現的任何錯誤(圖所示)第一次運行這個測試建立了基線我們可以把它與當前的和未來的性能進行對比顯示的基線是每秒大約個請求
   
  圖基線圖表
  
  現在你擁有了一個確定的基線了你可以對應用程序作一些修改以測量修改所引起的性能提升或降低的確我使用的測試示例極其簡單但是我會顯示出對這一小段代碼進行少量的修改可能對應用程序的性能產生很大的影響
  
  了解改善的部分
  
  評估的方面越多改善的機會就越大在例子中我將對應用程序作一些小的修改並在每個修改之後進行評估盡管在現實情況下你不可能每步修改都進行這樣的測試但是你應該有周期性檢查性能的習慣對於我們公司的Community Server產品我們擁有一套用於評估總體應用程序開銷的基線如果進行了重大的修改開發者就可以使用前面的測試數據來研究性能的提升或降低
  
  我對示例應用程序的第一處修改是改變返回數據量的限制我把SQL查詢SELECT * FROM Products改變為SELECT TOP * FROM Products這好像只是對代碼進行了微小的修改畢竟我只是限制屏幕中輸出的數據量但是其結果卻是驚人的其性能從每秒個請求上升到以上性能提高了%以上由於你擁有基線你知道了限制綁定到數據表格的數據量一定會影響性能我還要修改其它一些東西
  
  下一步修改<asp:DataGrid/>服務器控件添加EnableViewState=false
  
  <asp:DataGrid EnableViewState=false id=DataGrid runat=server />
  
  ViewState是ASPNET的一個重要的特性但是並非總是需要的實際上大多數使用了ViewState的數據表格都是不需要它的在例子中通過禁止ViewState我可以提高%的性能我們繼續!
  
  下一步添加下面的代碼以激活輸出緩沖(OutputCaching)
  
  <%@ OutputCache Duration= VaryByParam=none %>
  
  圖輸出緩沖
  
  現在重新運行該測試太驚人了!性能提高了如圖所示你可以調整OutputCache的持續數值例如把OutputCache的持續值設置為你可以看到性能再次有很大的變化
  
  建立測試環境
  
  測試操作是CPU密集型的事務因此在運行測試的時候你可能看到CPU的占用率接近它在與測試部件分享CPU時間的時候會拿走正在測試的應用程序的資源所有的配置選項都會影響測試結果其中一部分模擬現實世界要真實一些例如如果SQL Server和ASPNET在同一台計算機上就無法模擬網絡I/O的開銷大多數應用程序使用的數據庫都不在Web服務器上
  
  為了建立真實的測試環境把大量的舊的用於開發的計算機作為客戶端使用不要使用虛擬機在這些計算機上運行Application Center Test下一步盡可能地模擬現實世界在一個沒有運行其它任何應用程序的服務器操作系統上運行該Web應用程序並且連接到另一台服務器的數據庫
  
  需要說明的是在開發環境中運行煙幕測試也沒有什麼錯誤煙幕測試不能模擬現實世界但是仍然可以提供大量的有價值的數據並且可以用於預計在現實世界中同樣的測試產生的結果
  
  後續的步驟和測試覆蓋
  
  現在你對如何測試和評估有了一些了解了我推薦你在自己的應用程序上使用Application Center Test了解你的用戶在典型情況下如何使用應用程序是有好處的哪些頁面執行得更好哪些頁面沒有改善?
  
  例如在Community Server中我們運行了多種類型的性能測試主線(Mainline)測試包含了匿名和驗證的情況在大量個性化的應用程序中這一點可能顯著的改變性能情況
  
  主線測試還包含了貫穿系統的通用路徑例如網絡日志圖表論壇的主視圖以及每個屏幕的不同視圖很明顯這些主線情形良好的執行情況是非常重要的最好在這兒花費大量的時間以確保其正確性
  
  如果你管理或運行那些必須支持兩個或多個並發用戶
From:http://tw.wingwit.com/Article/program/net/201311/13214.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.