在 Visual Studio 2010 Ultimate 里,其实不用特別安装 Visual Studio Agent 2010  就能进行负载压力测试 (也只有 Visual Studio 2010 Ultimate 才能使用负载压力测试功能),不过若真要进行大流量的负载压力测试,一台主机可能过于单薄,这时我们就需要安装 Visual Studio Agent 2010 的 Test Controller 与多台 Test Agent 透过多台主机一起对 测试中系统 (System Under Tests) 进行负载压力测试,如此一来才能真正看出系统在高压之下是否还能符合效能需求以及是否能够稳定运行。Visual Studio Agent 2010 的安装设定有许多注意事项,在本篇文章里我将会搭配文章与录影的方式让第一次使用 Visual Studio Agent 2010 的人能够快速且正确的将环境建立起來。

 

第一步:了解运行架构与规划测试设备(test rig)

一般来说压力测试环境的配置会规划成类似如下图的架构,Machine 1 与 Machine 2 就是 开发人员主机,安装 Visual Studio 2010 Ultimate 这个版本才能使用 Visual Studio 2010 内建的负载压力测试功能。

在开发环境内会有一台 测试控制器主机 (Test Controller),也就是下图的 Machine 3 的地方,这台主机的目的是用来接收开发人员主机所要求的测试命令(透过 Visual Studio 2010 进行操作),然后指挥所有的 测试代理程式主机 (Test Agent) 进行压力负载测试。在 Test Controller 会收集 Test Agent 所收集到的所有测试数据并将最终的测试结果写入资料库 (LoadTest2010),最后将测试结果的报表显示在 开发人员主机 的 Visual Studio 2010 窗口里。

visual studio 添加python environment visual studio 添加什么工作负载_Visual

 

建议的主机规划:

  • 开发人员主机
  • 安裝 Visual Studio 2010 Ultimate 才能发起负载压力测试
  • 测试控制器主机 ( 安装一台即可 )
  • 安装 SQL Server 2008 Express 与 Visual Studio Test Controller 2010
  • 资料库與控制器主机可以安装在一起!且安装 SQLEXPRESS 版即可。
  • 测试代理程式主机 ( 可安装多台,以提供更大的压力测试能力 )
  • 安装 Visual Studio Test Agent 2010
  • 可以安装多台测试代理程式主机
  • 如果要进行较大规模的压力测试,只要新增测试代理程式主机即可!

visual studio 添加python environment visual studio 添加什么工作负载_Test_02

注意:若要从 MSDN 订阅下载,请下载 Visual Studio Agents 2010 (x86 and x64) - DVD (Chinese-Traditional) 这一项才找的到 Test Controller 与 Test Agent 进行安装。

 

第二步:安装 Visual Studio Agent 2010 到各主机

建议将安装的 Windows Server 2008 操作系统的 使用者帐戶控制设定(UAC) 给关闭,以免遇到许多非预期的错误。另外,安装时也有许多注意事项,我都录成影片了,各位要注意看:

1. 安装 SQL Server 2008 Express Edition

  • 设定让 SQL Browser 自动启动
  • 透过 SQL Server 組態管理员 开启 TCP/IP 通讯协定
  • 设定防火墙规则 ( SQL Server & SQL Browser )


2. 安裝 Visual Studio Test Controller 2010 ( 會連同安裝 .NET Framework 4.0 過程會重開機一次 )

  • 插入 Visual Studio Agents 2010 光碟
  • 安裝 Visual Studio Test Controller 2010
  • 安裝完成後,立即設定測試控制器
  • 勾選「設定以進行負載測試」會直接在指定的 SQL Server 建立資料庫與相關表格
  • 注意: 設定完成後的組態摘要會顯示一則警示訊息「如果您要使用測試控制器來進行負載測試,必須使用可以存取 測試中系統 (System Under Tests) 上的效能計數器的帳戶」,如果要這麼做的話,測試控制器的服務帳戶可以切換成有權限的帳戶。
  • 若在網域環境下,也可以在 測試中系統 (System Under Tests) 將 Load Controller 的電腦帳戶加入到 Performance Monitor Users


備註: 建立壓力測試測試結果的資料庫的 T-SQL 置於以下目錄,因此你也可以自己手動建立資料庫:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\loadtestresultsrepository.sql

請注意:當你安裝好 Visual Studio Test Controller 2010 之後會發現在 Microsoft Visual Studio Test Controller 2010 組態工具 裡所看到的「授權虛擬使用者總數」為 0,沒有任何虛擬使用者可用也代表著你將無法使用 Visual Studio Agent 2010 幫你進行任何負載壓力測試。

任何 Visual Studio Ultimate with MSDN 訂戶都能夠免費獲得「無限數量 (Unlimited)」個虛擬使用者授權,因此只要 MSDN Subscription 網站即可查到虛擬使用者授權的序號,請參考本文最後的「補充說明」部分有詳細解說。

注意! 在以前如果虛擬使用者人數不夠的話需要先購買 Visual Studio Load Test Virtual User Pack 2010 才能增加虛擬使用者授權的數量,但從 3/8 開始已經完全無此限制了!(完全無人數上限)

以下是「管理虛擬使用者授權」的操作步驟圖示:

安裝授權識別碼進去後,就會看到授權虛擬使用者人數增加了:

覺得 1,000 人不夠用嗎?修改「授權計數」就可以增加虛擬使用者數目的總數了,完全沒有上限!簡直就是佛心來著的,如下圖我將授權計數改成 10 就會有 10,000 個虛擬使用者授權了!

 

3. 安裝 Visual Studio Test Agent 2010 ( 會連同安裝 .NET Framework 4.0 過程會重開機一次 )

  • 插入 Visual Studio Agents 2010 光碟
  • 安裝 Visual Studio Test Agent 2010
  • 安裝完成後,立即設定測試代理程式
  • 測試代理程式的執行身份必須有本機管理者權限
  • 直接向測試控制器進行註冊


備註: 安裝過程中會安裝一個網路模擬驅動程式,這個網路驅動程式可讓這台 Test Agent 擁有動態切換 IP 位址的能力,這可以讓一台 Test Agent 就可以模擬許多不同的 IP 來進行負載壓力測試。因為像是 Microsoft NLB 這類負載平衡技術就會識別來源 IP 是否隸屬於同一網段,如果測試的來源 IP 都一樣的話,會導致所有負載都會導向到同一台伺服器,那這就無法測出該系統真實的壓力承受能力了。也因為如此,測試代理程式的執行身份必須有本機管理者權限才有辦法動態切換 IP 位址。

 

第三步:在 Visual Studio 2010 中指定 Test Controller 的位址 (以工作群組為例)

若要從 Visual Studio 2010 連接至 Test Controller,最先要考慮的問題就是 身份識別 (Identity) 的問題,假設我的開發人員主機登入的帳號為 will,那麼在沒有網域(工作群組)的情況下,你就要在 測試控制器主機 (Test Controller) 上也建立一個同名的帳號,而且密碼也要跟你 開發人員主機will 帳號的密碼一模一樣才行。如果是有網域的環境下,那麼設定上就真的會簡單許多。

接著你必須將這個新建立的 will 帳號加入到如下圖的三個群組裡,這三個 TeamTest 相關群組各有不同的用途,你可以看情況將帳號加入到這幾個群組中:

  • TeamTestControllerAdmins
  • 這個群組的成員可以執行測試、檢視/刪除結果、建立環境和管理測試控制器/代理程式。
  • TeamTestControllerUsers
  • 這個群組的成員可以執行測試及檢視結果。
  • TeamTestAgentService
  • 這個群組的成員可以連接到 Microsoft Visual Studio Test Controller 2010 服務。

在進行壓力測試之前,要先透過以下步驟進行設定,讓你的 Visual Studio 2010 先連上 Test Controller,請參考下圖進行設定:

在 Controller 的欄位輸入 Test Controller 的 IP 或電腦名稱,輸入完後按下 Enter 即可:

如果上述步驟都有正確安裝與設定的話,就會立即看到至少一個 Test Agents 已連線,而且會處於 Ready 的狀態,這就代表你的 Visual Studio 2010 已經正確與 Test Controller 連線了。如果沒有連線成功的話,通常都是因為 Windows 防火牆阻擋了 Port 6901 的關係,只要適當設定防火牆即可。

 

只要你的 Visual Studio 2010 已經能與 Test Controller 進行連線,那麼後續關於 網站效能測試 (Web Performance Testing)負載壓力測試 (Load and Stress Testing) 的操作可以參考 邊做邊學 Visual Studio 2010 軟體測試、除錯及品質管理 (Software Testing、Debugging and Quality Assurance) 裡的教學影片進一步學習與操作。

 

第四步:設定測試專案的測試設定檔,指定使用 Test Controller 進行測試

預設的測試專案要做負載壓力測試時都會用本機來進行壓力測試,而且同時測試的虛擬使用者人數上限為 250 人 (也就是同時最多只能有 250 條連線的意思),若要改用遠端的 Test Controller 與 Test Agents 幫你進行負載壓力測試,必須參考以下步驟進行調整。

開啟測試專案的 Local.testsettings 檔案:

切換到 角色 (Roles) 頁籤,並且把 測試執行方法 (Test execution method) 切換到 遠端執行 (Remote execution) 選項:

這時你就可以從右側的 控制器 (Controller) 欄位透過下拉選單的方式選取你在第三步所建立的控制器

最後點選 套用 (Apply) 即可儲存設定:

這時只要執行負載壓力測試,就會開始改用 Test Controller 幫你控制 Test Agent 進行負載壓力測試:

以下就是我在進行負載壓力測試時利用 TCPView 工具在 Test Agent 主機看到的網路連線狀況,這代表這台 Test Agent 已經在對我們的測試目標進行壓力測試中:

 

補充說明

任何 Visual Studio Ultimate with MSDN 訂戶都能夠免費獲得 1,000 個虛擬使用者授權,如果你是微軟最有價值專家或企業的 Visual Studio Ultimate with MSDN 的訂戶,可以參考以下步驟取得授權識別碼:

1. 先登入 MSDN 訂閱 網站

2. 點選 下載和產品金鑰

3. 點選我的產品金鑰

4. 找到 Visual Studio 2010 類別下有個 Visual Studio Load Test Virtual User Pack 2010 項目,這個序號就能透過 Test Controller 上的 Microsoft Visual Studio Test Controller 2010 組態工具 安裝進去。



後記

說實在的,負載壓力測試是門非常專業的領域,像我們以前有個案子,客戶請專業的壓力測試公司對我們開發的系統進行壓力測試,光是壓力測試與驗證這部分竟然就要花費上百萬,當時我還特別前去接受教育訓練學習他們的壓測軟體操作,當時他們用的是國外的專業壓測軟體並非 Visual Studio,況且當時的 Visual Studio 2005 的壓測工具並不完整,沒辦法非常精細的測試出系統各環節的效能瓶頸,不過我覺得現在的 Visual Studio 2010 壓測工具已經跟其他市場上現有的專業壓測工具不相上下,值得一試!


常見問題解答

請問無法連接到 測試控制器主機 (Test Controller) 應該怎樣處理?

回答:常見的狀況是有以下幾種:

1. 防火牆 ( Port 6901 ) 阻擋了 開發人員主機測試控制器主機 之間的連線

  • 預設的情況下,防火牆會被自動開啟連接限制(如下圖示),如果沒開啟的話,你可以設定允許 Port 6901 進行連接即可。

2. 開發人員主機測試控制器主機 兩端的權限沒有設定正確,以致於無法成功登入

  • 請參閱本文章 第三步 的說明

 

請問一台 PC 或是 Notebook 可以模擬出幾位虛擬使用者 (virtual user)?

回答:這要看你壓力測試主機 (Test Agent) 的硬體規格如何,一般來說一台電腦平均大約能模擬出 250 個虛擬使用者同時對測試中系統進行負載壓力測試,如果再多的話很可能會變成 Test Agent 自己本身的效能達到瓶頸(可能是 CPU、記憶體、或網路頻寬等限制造成的),如果 Test Agent 本身就已經無法施加壓力,那當然最後的負載壓力測試數據也就會失真!這也是為什麼我門在進行負載壓力測試時需要分析Test Controller 與 Test Agent 主機效能計數器的原因,如果負載過重,你就要嘗試增加 Test Agent 或降低虛擬使用者人數。

 

請問 Visual Studio 2010 Ultimate 是否能提供試用?試用 Visual Studio 2010 Ultimate 搭配 Visual Studio Agent 2010 有什麼限制嗎?

回答:有的,你可以到以下網址下載 Visual Studio 2010 Ultimate 試用版:

另外,如果要使用 Visual Studio Agent 2010 進行負載壓力測試的話,你只能透過 Visual Studio 2010 Ultimate 試用版發動 25 次的負載壓力測試,當你執行超過 25 次負載壓力測試之後就無法再使用了。