WEB性能測試:你應該帶上Visual Studio 2010
原創【51CTO獨家特稿】在Web性能測試方面,增加了循環(Loops)和條件(Conditions),讓開發人員可以為他們的應用程序寫出更復雜,更智能的測試;在負載測試方面,增加了64位代理和控制器,讓測試人員可以更高效地利用可用的硬件資源產生負載。此外,改變了負載測試代理和控制器的許可,提供了更多的靈活性,間接地更節省成本。
Web測試允許你在你的ASP.NET Web應用程序上模擬一個用戶執行一組操作 – 通常是一個定義好的用例,然后確認程序的響應結果是否與預期結果一致,當你定義好Web測試后,可以將它們組織在一起就構成了負載測試,通過負載測試可以查看你的應用程序在壓力下的表現。本文將重點介紹如何使用Visual Studio 2010執行Web測試,負載測試將在另外一篇文章中介紹。
創建Web測試
Web測試通常是使用IE Web測試工具條創建的,它從頭到尾詳細記錄了測試人員在Web應用程序上的點擊動作,本文使用的示例代碼中,我們的Visual Studio測試項目叫做Com.Benday.WebTesting.WebTests,當然你可以在這個項目上點擊右鍵,選擇“新建Web測試”創建一個新的Web測試。
在項目上添加好新的Web測試后,Visual Studio將會打開IE瀏覽器,你將會在瀏覽器中看到Web測試記錄器面板,然后你可以轉到任意一個網站,就象平常瀏覽一樣進行操作,你的每一個操作都將被Web測試記錄器記錄下來,如圖1所示。
圖 1 Web測試記錄器記錄下的操作
當你想要記錄的操作執行完畢后,點擊“停止”按鈕,返回Visual Studio 2010,你將會在一個*.webtest文件中看到你的操作,如圖2所示。
圖 2 在.webtest文件中的操作記錄
#p#
更復雜的Web測試
前面錄制的Web測試并沒有太大的實用價值,它僅僅回放了你的原始操作,并沒有檢查返回的值,也不知道你的應用程序工作得怎樣,但它是創建更復雜,更全面Web測試的基礎。
可以使用校驗規則,提取規則和Web測試請求中的測試上下文創建更智能的測試,校驗規則檢查從服務器返回的HTML,驗證應用程序是否如你預期那樣工作的,提取規則檢查HTML,提出值,保存在所謂的測試上下文字典結構中,這些值可用于響應后面的測試請求,創建動態的行為和動態的驗證。
本文所使用的示例代碼中,我提供了一個管理個人信息的Web應用程序,每個人的記錄都有姓名,電話號碼,Email地址,加上主鍵ID,其類圖如圖3所示,數據庫表結構如圖4所示,在我們的Web應用程序中將會使用這個ID值確定顯示和編輯哪個人的記錄。
圖 3 Person類圖
圖 4 Person數據庫表結構
假設你想模擬一群人通過你的Web應用程序在數據庫中創建個人信息,下面是創建一個新用戶的具體步驟:
1、在瀏覽器中訪問應用程序。
2、點擊“創建一個新用戶”。
2.1驗證是否顯示了“創建新用戶”界面。
2.2驗證所有文本輸入框是否都是空白的,以及ID值是否等于-1,如果是-1就表明你是在創建新用戶,如圖5所示。
圖 5 創建新用戶
3、輸入新用戶的信息,如圖6所示。
圖 6 輸入新用戶信息
4、點擊“保存”。驗證ID值是否不再是-1,如果不是-1表明新用戶已經創建成功,如圖7所示。
圖 7 用戶創建成功后ID值不再是-1
5、返回人員名單界面,驗證新創建的用戶是否位于列表中,如圖8所示。
圖 8 新創建的用戶位于列表中
6、打開新建用戶的記錄,驗證內容與你輸入的是否一致。
#p#
如果使用Web測試記錄器,可以很容易記錄下最基本的操作,但每次新增用戶時,ID值由于是主鍵,因此每次都會發生變化,這就使得回放操作更復雜了。
我們首先從第2步開始,增加一個驗證規則檢查ID值是否等于-1,要做到這一點,你需要知道兩件事:1)哪個Web請求啟動“創建新用戶”頁面,2)顯示ID值的ASP.NET Label控件的名字。
解決這兩個問題最好的辦法是運行Web測試,然后分析其結果,結果記錄清晰地記錄了你發送給Web應用程序的請求以及從Web應用程序返回的結果,通過查看HTML內容,可以確定每個請求都發生了什么,使用了哪些Web控件,它們的名字是什么都一清二楚,如圖9所示。
圖 9 點擊響應標簽,查看HTML,找出顯示ID信息Label控件的名字
當你知道這個控件的名字 - 在這個例子叫做m_labelId – 也弄清楚了你需要哪個Web請求后,在這個請求上點擊右鍵,選擇“添加驗證規則”,打開添加驗證規則對話框,如圖10所示。
圖 10 給請求添加驗證規則
#p#
在Visual Studio 2010中,你可以使用標簽內文本(Tag Inner Text)驗證規則讀取m_labelId控件的值,如果你使用的是Visual Studio 2008,你需自己編寫驗證規則獲取它的值。
接下來我們創建一個規則,確保保存成功后,人員ID值不等于-1,這一次可以使用查找文本(Find Text)規則,將發現文本則通過(Pass If Text Found)屬性設為否(False),如圖11所示,如果你發現標簽控件的文本和值是-1,規則驗證就失敗,表明未保存成功。
圖 11 給保存按鈕增加文本發現驗證規則
你可能也想給這個請求增加一個提取規則,提取出m_labelId的值,便于后面的測試使用,對于這個要求,可以使用標簽內文本提取規則(Tag Inner Text Extraction Rule)提取m_labelId的值,然后將它放入名叫PersonId的上下文參數中,如圖12所示。
圖 12 給人員PersonId值添加提取規則
#p#
Web測試參數
當你提取到你想要的值,保存在測試上下文后,可以利用Web測試參數將測試上下文中的值插入到Web測試請求中,在我們的Web應用程序示例中,EditPerson.aspx頁面使用了一個名叫ID的查詢字符串參數載入人員信息。
當你記錄Web測試時,它會保存你使用到的值,因此當你重新載入這個人的信息時,你會發現在查詢字符串參數的值是一個硬編碼的值,如圖13所示。
圖 13 查詢字符串參數的值被硬編碼了
如果你點擊Id參數,你會看到它的屬性對話框,在“值”屬性上,你可以點擊下拉列表看到所有的數據上下文值,你需要做的是選擇其中的PersonId上下文值,如圖14所示,之后查詢字符串參數的值就是動態填充的了。
圖 14 將PersonId 上下文值綁定給Id查詢字符串參數
參數化有一個最佳實踐應該在所有Web測試中使用 – 參數化Web服務器地址,特別是你打算在最后的負載測試中使用這些Web測試時,幸運的是,在Web測試編輯器中有一個按鈕提供了這個功能,如圖15所示,參數化Web服務器地址后,所有Web測試請求都會轉移到參數化后的Web服務器地址。
圖 15 參數化Web服務器按鈕
在Web測試的底部你應該看到有一個上下文參數(Context Parameters)節點,展開它就能看到測試期間引用的所有Web服務器,如圖16所示,這個功能非常有用,因為你運行Web測試的環境與運行負載測試的環境可能不同,另外,你可能將Web測試和負載測試與每日構建關聯起來了,服務器的變化取決于你的構建類型,即使你現在不需要它,你也會喜歡它的靈活性。
圖 16 在測試上下文中的參數化Web服務器
#p#
數據源和數據綁定
用數據上下文值實現參數化僅僅是構建復雜的Web測試和負載測試的開始,你也可以給Web測試附加一個包含測試數據的數據源,對于數據源也可以運用參數化思想,每執行一次Web測試換一行數據。
獲得一個數據源最簡單的方法是創建一個用逗號分隔的值組成的CSV文件,并將它導入到你的Visual Studio測試項目,如圖17所示。
圖 17 逗號分隔的數據源文件
導入這個CSV文件后,在Web測試上點擊右鍵,選擇“添加數據源”,如圖18所示,啟動添加數據源向導,如圖19所示。
圖 18 給Web測試添加一個數據源
圖 19 新建測試數據源向導對話框
#p#
當你配置好數據源后,就可以使用參數綁定將數據行值附加給你的Web測試請求,例如,如果你想使用數據源的值填充“創建新用戶”Web頁面中的字段,你可以將每個textbox控件的表單POST參數綁定到數據源中的字段,如圖20,21所示。
圖 20 將m_textFirstName POST參數綁定到數據源的FirstName列
圖 21 數據綁定表單POST參數
當你運行數據驅動的Web測試時,你會看到測試每執行一次就使用數據源中的一行數據,如圖22所示,這樣不僅可以創建一個動態的測試,也可以在大數據集上運行測試。
圖 22 使用數據源執行多次迭代Web測試
小結
Web性能測試是構成負載測試的基礎,是測試你的Web應用程序確保質量和性能的有效方法,由數據驅動的Web性能測試使負載測試更接近真實環境,數據源的每一行數據由負載測試代理用來模擬用戶執行類似的用例,但每次用到的數據都不同,如果每次發給服務器的數據都是相同,這樣的測試不算真正意義上的測試。
Visual Studio 2010旗艦版中增強的Web測試和負載測試功能為減少QA周期提供了一個極好的方法,可以快速地確定你的應用程序是否如預期那樣工作,如果你從Team Foundation Server 2010自動構建執行測試,那么每次構建時都可以執行這些高質量的測試。
本文引用的示例程序全部源代碼可從http://visualstudiomagazine.com/~/media/ECG/visualstudiomagazine/Code%20Download/2010/06/BenDay_WebTesting_vs2010.ashx下載。
原文名:Web Performance Testing with Visual Studio 2010
【編輯推薦】
- Visual Studio 2010中Xaml開發格式設置技巧
- Visual Studio 2010中手動添加圖片文件
- 使用Visual Studio 2010統一管理數據庫對象
- Visual Studio 2010 TFS探索之旅
- Visual Studio 2010更改顏色背景的方法