HOW TO:建立 Web 效能測試結果檢視器的 Visual Studio 增益集
這個主題適用於:
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual Studio Express |
---|---|---|---|
您可以使用下列命名空間來擴充 [Web 效能測試結果檢視器] 的 UI:
此外,您必須加入 LoadTestPackage.dll 的參考,這個檔案位於 %ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies 資料夾中。
- 若要擴充 [Web 效能測試結果檢視器] 的 UI,您必須建立 Visual Studio 增益集和使用者控制項。 下列程序將說明如何建立增益集、使用者控制項,以及如何實作必要的類別,以便擴充 [Web 效能測試結果檢視器] 的 UI。
建立或開啟包含 ASP.NET Web 應用程式和測試專案的方案
若要準備擴充 Web 效能測試結果檢視器
請建立或開啟您可以用來實驗的非實際執行方案,其中包含 ASP.NET Web 應用程式以及具有 ASP.NET Web 應用程式之一個或多個 Web 效能測試的測試專案。
注意事項 您可以遵循逐步解說:建立簡單 Web 應用程式和逐步解說:記錄和執行 Web 效能測試中的程序進行,藉以建立 ASP.NET Web 應用程式以及包含 Web 效能測試的測試專案。
建立 Visual Studio 增益集
增益集是編譯過的 DLL,可以在 Visual Studio 整合式開發環境 (IDE) 中執行。 編譯有助於保護您的智慧財產並且改進效能。 雖然您可以用手動方式建立增益集,但是使用 [增益集精靈] 要簡單許多。 這個精靈會建立基本但實用的增益集,建立完成之後便可立即執行。 當 [增益集精靈] 產生基本程式之後,您就可以加入程式碼並且進行自訂。
[增益集精靈] 可讓您提供增益集的顯示名稱和描述, 這兩項資訊都會顯示在 [增益集管理員] 中。 您可以選擇由精靈產生程式碼,將開啟增益集的命令加入至 [工具] 功能表, 也可以選擇顯示增益集的自訂 [關於] 對話方塊。 當精靈完成時,您就會擁有一個新專案,其中僅包含一個實作增益集的類別。 該類別名為 Connect。
您將在本主題的結尾使用 [增益集管理員]。
如需詳細資訊,請參閱建立增益集和精靈。
若要使用增益集精靈建立增益集
在 [方案總管] 中,以滑鼠右鍵按一下方案、按一下 [加入],然後選取 [新增專案]。
[新增專案] 對話方塊隨即出現。
展開 [已安裝的範本] 底下的 [其他專案類型],然後選取 [擴充性]。
在範本的清單中,選取 [Visual Studio 增益集]。
在 [名稱] 底下,輸入增益集的名稱。 例如 WebPerfTestResultsViewerAddin。
按一下 [確定]。
[Visual Studio 增益集精靈] 隨即啟動。
按 [下一步]。
在 [選取程式語言] 頁面上,選取您要用來撰寫增益集的程式語言。
注意事項 本主題將針對範例程式碼使用 Visual C#。
在 [選擇主應用程式] 頁面上,選取 [Microsoft Visual Studio 2010] 並清除 [Microsoft Visual Studio 2010 巨集]。
按 [下一步]。
在 [輸入名稱和描述] 頁中,輸入增益集的名稱和描述。
建立增益集之後,其名稱和描述會顯示在 [增益集管理員] 的 [可用的增益集] 清單中。 您可以為增益集加入詳細的描述資料,讓使用者了解增益集的功能、運作方式等。
按 [下一步]。
在 [選擇增益集選項] 頁面上,選取 [當主應用程式啟動時載入增益集]。
清除其餘核取方塊。
在 [[關於] 對話方塊資訊選擇] 頁面上,您可以指定是否要將增益集的相關資訊顯示在 [關於] 對話方塊中。 如果您想要顯示這項資訊,請選取 [是,我希望增益集可以提供 [關於] 對話方塊資訊] 核取方塊。
可加入至 Visual Studio [關於] 對話方塊的資訊包括版本號碼、支援詳細資料、授權資料等等。
按 [下一步]。
您所選取的選項就會顯示在 [摘要] 頁面上,供您檢閱。 如果您對設定覺得滿意,請按一下 [完成] 建立增益集。 如果您想要變更某些設定,請按一下 [上一頁] 按鈕。
此時,系統已建立新的方案和專案,而且新增益集的 Connect.cs 檔案會顯示在 [程式碼編輯器] 中。
完成下列程序之後,您會將程式碼加入至 Connect.cs 檔案,以便建立這個 WebPerfTestResultsViewerAddin 專案所參考的使用者控制項。
建立增益集之後,您必須先將它登錄至 Visual Studio 中,才能在 [增益集管理員] 中啟動該增益集。 使用具有 .addin 副檔名的 XML 檔,即可完成這項作業。
.addin 檔案會描述 Visual Studio 將增益集顯示在 [增益集管理員] 中所需的資訊。 當 Visual Studio 啟動時,它會查看 .addin 檔案位置,以尋找可用的 .addin 檔案。 如果找到檔案,就會讀取 XML 檔案,並將按一下以啟動增益集時所需的資訊提供給 [增益集管理員]。
使用 [增益集精靈] 建立增益集時,會自動建立 .addin 檔案。
如需詳細資訊,請參閱增益集登錄。
增益集檔案位置
[增益集精靈] 會自動建立兩個 .addin 檔案的複本,如下所述:
.Addin 檔案位置 |
.DLL 檔案位置 |
描述 |
---|---|---|
根專案資料夾 \Documents\Visual Studio 2010\Projects\MyAddin1\MyAddin1\ |
本機路徑 (MyAddin1.dll) |
用來部署增益集專案。 包含在專案中以便輕鬆編輯,而且具有 XCopy 部署方式的本機路徑。 |
增益集資料夾 \Documents\Visual Studio 2010\Addins\ -或- Shared Documents Location\Addins\ |
專案偵錯資料夾 (例如 \Documents\Visual Studio 2010 Projects\MyAddin1\MyAddin1\bin\) |
用來在偵錯環境中執行增益集。 必須指向目前組建組態的輸出路徑。 |
建立 Windows Form 控制項程式庫專案
在上一個程序中建立的 Visual Studio 增益集會參考 Windows Form 控制項程式庫專案,以便建立 UserControl 類別的執行個體。
如需詳細資訊,請參閱 Windows Form 控制項。
若要建立要用於 Web 測試結果檢視器的控制項
在 [方案總管] 中,以滑鼠右鍵按一下方案、按一下 [加入],然後選取 [新增專案]。
[新增專案] 對話方塊隨即出現。
在 [已安裝的範本] 底下,展開 [Visual Basic] 或 [Visual C#],然後選取 [Windows]。
注意事項 本主題將針對範例程式碼使用 Visual C#。
在範本的清單中,選取 [Windows Form 控制項程式庫]。
在 [名稱] 底下,輸入增益集的名稱。 例如 WebPerfTestResultsViewerControl。
按一下 [確定]。
Windows Form 控制項程式庫專案 WebPerfTestResultsViewerControl 就會加入至 [方案總管],而且 UserControl1.cs 會以設計模式顯示。
從 [工具箱] 中,將 DataGridView 拖曳至 userControl1 的介面上。
按一下 DataGridView 右上角的動作標籤圖像 () 並遵循下列步驟進行:
按一下 [停駐於父容器中]。
清除下列核取方塊:[啟用加入]、[啟用編輯]、[啟用刪除] 和 [啟用資料行重新調整順序]。
按一下 [加入資料行]。
[加入資料行] 對話方塊隨即顯示。
在 [類型] 下拉式清單中,選取 [DataGridViewTextBoxColumn]。
清除 [上標題文字] 中的文字 "Column1"。
按一下 [加入]。
按一下 [關閉]。
在 [屬性] 視窗中,將 DataGridView 的 [(名稱)] 屬性變更為 resultControlDataGridView。
以滑鼠右鍵按一下設計介面,然後選取 [檢視程式碼]。
UserControl1.cs 檔案就會顯示在 [程式碼編輯器] 中。
將具現化 UserControl 類別的名稱從 UserContro1 變更為 resultControl:
namespace WebPerfTestResultsViewerControl { public partial class resultControl : UserControl { public resultControl() { InitializeComponent(); }
在下一個程序中,您會將程式碼加入至 WebPerfTestResultsViewerAddin 專案的 Connect.cs 檔案,而這個檔案將會參考 resultControl 類別。
您稍後會將其他程式碼加入至 Connect.cs 檔案。
將程式碼加入至 WebPerfTestResultsViewerAddin
若要將程式碼加入至 Visual Studio 增益集以擴充 Web 測試結果檢視器
在 [方案總管] 中,以滑鼠右鍵按一下 WebPerfTestResultsViewerAddin 專案中的 [參考] 節點,然後選取 [加入參考]。
在 [加入參考] 對話方塊中,按一下 [.NET] 索引標籤。
向下捲動並選取 [Microsoft.VisualStudio.QualityTools.WebTestFramework] 和 [System.Windows.Forms]。
按一下 [確定]。
再次以滑鼠右鍵按一下 [參考] 節點,然後選取 [加入參考]。
在 [加入參考] 對話方塊中,按一下 [瀏覽] 索引標籤。
按一下 [查詢] 下拉式清單並巡覽至 %ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies,然後選取 Microsoft.VisualStudio.QualityTools.LoadTestPackage.dll 檔案。
按一下 [確定]。
以滑鼠右鍵按一下 WebPerfTestResultsViewerAddin 專案節點,然後選取 [加入參考]。
在 [加入參考] 對話方塊中按一下 [專案] 索引標籤。
在 [專案名稱] 底下,選取 [WebPerfTestResultsViewerControl] 專案,然後按一下 [確定]。
如果 Connect.cs 檔案仍未開啟,請在 [方案總管] 中,以滑鼠右鍵按一下 WebPerfTestResultsViewerAddin 專案中的 Connect.cs 檔案,然後選取 [檢視程式碼]。
在 Connect.cs 檔案中,加入下列 Using 陳述式:
using System.IO; using System.Windows.Forms; using System.Collections.Generic; using Microsoft.VisualStudio.TestTools.LoadTesting; using Microsoft.VisualStudio.TestTools.WebTesting; using WebPerfTestResultsViewerControl;
向下捲動至 Connect.cs 檔案的底部。 您必須針對 UserControl 加入 GUID 清單,以防開啟多個 [Web 效能測試結果檢視器] 執行個體。 您稍後將會加入使用這份清單的程式碼。
第二份字串清單會用於您稍後編寫程式碼的 OnDiscconection 方法。
private DTE2 _applicationObject; private AddIn _addInInstance; private Dictionary<Guid, List<UserControl>> m_controls = new Dictionary<Guid, List<UserControl>>(); private List<string> temporaryFilePaths = new List<string>();
Connect.cs 檔案會根據 IDTExtensibility2 類別具現化名為 Connect 的類別,而且也包括一些用於實作 Visual Studio 增益集的方法。 其中一個方法是 OnConnection 方法,這個方法會接收載入增益集的通知。 在 OnConnection 方法中,您將會使用 LoadTestPackageExt 類別來建立 [Web 效能測試結果檢視器] 的擴充性套件。 將下列程式碼加入至 OnConnection 方法:
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; // Create a load test packge extensibility class. LoadTestPackageExt loadTestPackageExt = _applicationObject.GetObject("Microsoft.VisualStudio.TestTools.LoadTesting.LoadTestPackageExt") as LoadTestPackageExt; // Process open windows. foreach (WebTestResultViewer webTestResultViewer in loadTestPackageExt.WebTestResultViewerExt.ResultWindows) { WindowCreated(webTestResultViewer); } // Create event handlers. loadTestPackageExt.WebTestResultViewerExt.WindowCreated += new EventHandler<WebTestResultViewerExt.WindowCreatedEventArgs>(WebTestResultViewerExt_WindowCreated); loadTestPackageExt.WebTestResultViewerExt.WindowClosed += new EventHandler<WebTestResultViewerExt.WindowClosedEventArgs>(WebTesResultViewer_WindowClosed); loadTestPackageExt.WebTestResultViewerExt.SelectionChanged += new EventHandler<WebTestResultViewerExt.SelectionChangedEventArgs>(WebTestResultViewer_SelectedChanged); }
將下列程式碼加入至 Connect 類別,以便針對您在 OnConnection 方法中加入的 loadTestPackageExt.WebTestResultViewerExt.WindowCreated 事件處理常式建立 WebTestResultViewerExt_WindowCreated 方法以及 WebTestResultViewerExt_WindowCreated 方法所呼叫的 WindowCreated 方法。
void WebTestResultViewerExt_WindowCreated(object sender, WebTestResultViewerExt.WindowCreatedEventArgs e) { // New control added to new result viewer window. WindowCreated(e.WebTestResultViewer); } private void WindowCreated(WebTestResultViewer viewer) { // Instantiate an instance of the resultControl referenced in the WebPerfTestResultsViewerControl project. resultControl resultControl = new resultControl(); // Add to the dictionary of open playback windows. System.Diagnostics.Debug.Assert(!m_controls.ContainsKey(viewer.TestResultId)); List<UserControl> userControls = new List<UserControl>(); userControls.Add(resultControl); // Add Guid to the m_control List to manage Result viewers and controls. m_controls.Add(viewer.TestResultId, userControls); // Add tabs to the playback control. resultControl.Dock = DockStyle.Fill; viewer.AddResultPage(new Guid(), "Sample", resultControl); }
將下列程式碼加入至 Connect 類別,以便針對您在 OnConnection 方法中加入的 loadTestPackageExt.WebTestResultViewerExt.SelectionChanged 事件處理常式建立 WebTestResultViewer_SelectedChanged 方法:
void WebTestResultViewer_SelectedChanged(object sender, WebTestResultViewerExt.SelectionChangedEventArgs e) { foreach (UserControl userControl in m_controls[e.TestResultId]) { // Update the userControl in each result viewer. resultControl resultControl = userControl as resultControl; if (resultControl != null) // Call the resultControl's Update method (This will be added in the next procedure). resultControl.Update(e.WebTestRequestResult); } }
將下列程式碼加入至 Connect 類別,以便針對您在 OnConnection 方法中加入的 loadTestPackageExt.WebTestResultViewerExt.WindowClosed 事件處理常式建立 WebTesResultViewer_WindowClosed 方法:
void WebTesResultViewer_WindowClosed(object sender, WebTestResultViewerExt.WindowClosedEventArgs e) { if (m_controls.ContainsKey(e.WebTestResultViewer.TestResultId)) { m_controls.Remove(e.WebTestResultViewer.TestResultId); } }
現在 Visual Studio 增益集的程式碼已經完成,您必須將 Update 方法加入至 WebPerfTestResultsViewerControl 專案中的 resultControl。
將程式碼加入至 WebPerfTestResultsViewerControl
如需詳細資訊,請參閱 Windows Form 控制項開發的基本概念。
若要將程式碼加入至使用者控制項
在 [方案總管] 中,以滑鼠右鍵按一下 WebPerfTestResultsViewerControl 專案節點,然後選取 [屬性]。
選取 [應用程式] 索引標籤、按一下 [目標 Framework] 下拉式清單、選取 [.NET Framework 4],然後關閉 [屬性]。
這是支援擴充 [Web 效能測試結果檢視器] 所需之 DLL 參考的必要步驟。
在 [方案總管] 的 WebPerfTestResultsViewerControl 專案中,以滑鼠右鍵按一下 [參考] 節點,然後選取 [加入參考]。
在 [加入參考] 對話方塊中,按一下 [.NET] 索引標籤。
向下捲動並選取 [Microsoft.VisualStudio.QualityTools.WebTestFramework]。
按一下 [確定]。
在 UserControl1.cs 檔案中,加入下列 Using 陳述式:
using Microsoft.VisualStudio.TestTools.WebTesting; using Microsoft.VisualStudio.TestTools.WebTesting.Rules;
加入從 Connect.cs 檔案中 WebPerfTestResultsViewerAddin WebTestResultViewer_SelectedChanged 方法呼叫並傳遞 WebTestRequestResult 的 Update 方法。 Update 方法會將 WebTestRequestResult 傳遞給它的各種屬性填入 DataGridView。
public void Update(WebTestRequestResult WebTestResults) { // Clear the DataGridView when a request is selected. resultControlDataGridView.Rows.Clear(); // Populate the DataGridControl with properties from the WebTestResults. this.resultControlDataGridView.Rows.Add("Request: " + WebTestResults.Request.Url.ToString()); this.resultControlDataGridView.Rows.Add("Response: " + WebTestResults.Response.ResponseUri.ToString()); foreach (RuleResult ruleResult in WebTestResults.ExtractionRuleResults) { this.resultControlDataGridView.Rows.Add("Extraction rule results: " + ruleResult.Message.ToString()); } foreach (RuleResult ruleResult in WebTestResults.ValidationRuleResults) { this.resultControlDataGridView.Rows.Add("Validation rule results: " + ruleResult.Message.ToString()); } foreach (WebTestError webTestError in WebTestResults.Errors) { this.resultControlDataGridView.Rows.Add("Error: " + webTestError.ErrorType.ToString() + " " + webTestError.ErrorSubtype.ToString() + " " + webTestError.ExceptionText.ToString()); } }
建置 WebPerfTestResultsViewerAddin 方案
若要建置方案
- 在 [建置] 功能表上,選取 [建置方案]。
登錄 WebPerfTestResultsViewerAddin 增益集
若要使用增益集管理員來登錄增益集
在 [工具] 功能表上,選取 [增益集管理員]。
[增益集管理員] 對話方塊隨即顯示。
在 [可用的增益集] 資料行中,選取 WebPerfTestResultsViewerAddin 增益集的核取方塊,並且清除 [啟動] 和 [命令列] 資料行下方的核取方塊。
按一下 [確定]。
如需詳細資訊,請參閱 HOW TO:使用增益集管理員來控制增益集。
使用已建置的 WebPerfTestResultsViewerAddin 增益集執行 Web 效能測試
若要執行 Web 測試結果檢視器的新 VS 增益集
執行 Web 效能測試,然後您將會看見 WebPerfTestResultsViewerAddin 增益集中名為 Sample 的新索引標籤顯示在 [Web 效能測試結果檢視器] 中。
按一下此索引標籤,以便查看呈現在 DataGridView 中的屬性。
安全性
為了改善安全性,防止惡意的增益集自動啟動,Visual Studio 在名為 [增益集/巨集安全性] 的 [工具選項] 頁面中提供了相關設定。
此外,這個選項頁面還可讓您指定 Visual Studio 搜尋 .AddIn 登錄檔案的資料夾。 這樣做可讓您限制系統能讀取 .AddIn 登錄檔案的位置,藉以改善安全性。 這有助於避免您不小心使用惡意 .AddIn 檔案。
增益集安全性設定
Add-in/Macros Security, Environment, Options Dialog Box中與增益集安全性相關的設定包括:
允許載入增益集元件:預設為選取。 當您選取此選項時,就可以在 Visual Studio 中載入增益集。 當您沒有選取此選項時,則禁止在 Visual Studio 中載入增益集。
允許從 URL 載入增益集元件:預設為未選取。 當您選取此選項時,就可以從外部網站載入增益集。 當您沒有選取此選項時,則禁止在 Visual Studio 中載入遠端增益集。 如果增益集因為某種原因無法載入,那麼便無法從網路載入。 這項設定只能控制增益集 DLL 的載入。 .Addin 登錄檔案必須隨時位於本機系統中。
如需詳細資訊,請參閱增益集安全性。
請參閱
工作
參考
Microsoft.VisualStudio.TestTools.LoadTesting
Microsoft.VisualStudio.TestTools.WebTesting
Microsoft.VisualStudio.TestTools.WebTesting.Rules