次の方法で共有


方法: Web パフォーマンス テスト結果ビューアー用に Visual Studio アドインを作成する

次の名前空間を使用して、Web パフォーマンス テスト結果ビューアーの UI を拡張できます。

また、%ProgramFiles%\Microsoft の Visual Studio 11.0\Common7\IDE\PrivateAssemblies フォルダーにある LoadTestPackage の DLL への参照を追加する必要があります。

  • Web パフォーマンス テスト結果ビューアーの UI を拡張するには、Visual Studio アドインおよびユーザー コントロールを作成する必要があります。次の手順では、アドインとユーザー コントロールの作成方法、および Web パフォーマンス テスト結果ビューアーの UI を拡張するのに必要なクラスを実装する方法について説明します。

要件

  • Visual Studio Ultimate

ASP.NET Web アプリケーションおよび Web パフォーマンス テストおよびロード テスト プロジェクトを含むソリューションを作成または開きます。

Web パフォーマンス テスト結果ビューアーの拡張の準備をするには

  • 実験 ASP.NET Web アプリケーションの一つ以上の Web パフォーマンス テストで ASP.NET Web アプリケーションと Web パフォーマンス テストおよびロード テスト プロジェクトが対象で使用できる非稼動ソリューションを作成するか開きます。

    [!メモ]

    チュートリアル: 簡単な Web アプリの作成チュートリアル: Web パフォーマンス テストの記録と実行の手順に従って、Web パフォーマンス テストを含む ASP.NET Web アプリケーションおよび Web パフォーマンス テストおよびロード テスト プロジェクトを作成できます。

Visual Studio アドインの作成

アドインは、Visual Studio 統合開発環境 (IDE: Integrated Development Environment) 内部で実行されるコンパイル済み DLL です。DLL がコンパイルされていることにより、知的財産権が保護され、パフォーマンスが向上します。アドインは手動でも作成できますが、アドイン ウィザードを使用した方が簡単に作成できます。このウィザードでは、作成後すぐに実行できる、基本的な機能を備えたアドインが作成されます。アドイン ウィザードで基本プログラムが生成された後に、コードを追加してカスタマイズできます。

アドイン ウィザードでは、アドインの表示名および説明を指定できます。両方とも、アドイン マネージャーに表示されます。オプションで、アドインを開くコマンドを [ツール] メニューに追加するコードをウィザードで生成することもできます。また、アドインにカスタムの [バージョン情報] ダイアログ ボックスを表示することもできます。ウィザードが完了すると、アドインを実装するクラスの 1 種類のクラスを含む新しいプロジェクトが作成されます。そのクラスには Connect という名前が付けられます。

このトピックの最後にあるアドイン マネージャーを使用します。

詳細については、「アドインおよびウィザードの作成」を参照してください。

アドイン ウィザードを使用してアドインを作成するには

  1. ソリューション エクスプローラーで、ソリューションを右クリックし、[追加] を選択し、を [新しいプロジェクト] を選択します。

    [新しいプロジェクト] ダイアログ ボックスが表示されます。

  2. [インストールされたテンプレート] で、[その他のプロジェクトの種類] を展開し、[機能拡張] を選択します。

  3. テンプレート リストで、[Visual Studio アドイン] を選択します。

  4. [名前] にアドインの名前を入力します。例: WebPerfTestResultsViewerAddin

  5. [OK] をクリックします。

    Visual Studio アドイン ウィザードが起動します。

  6. [次へ] をクリックします。

  7. [プログラミング言語の選択] ページで、アドインを記述するのに使用するプログラミング言語を選択します。

    [!メモ]

    このトピックでは、サンプル コードの実行に Visual C# を使用します。

  8. [アプリケーション ホストの選択] のページのの Visual Studio および明示的な [Visual Studio Macros]

  9. [次へ] をクリックします。

  10. [名前および説明の入力] ページで、アドインの名前および説明を入力します。

    アドインが作成されると、アドイン マネージャー[使用できるアドイン] ボックスの一覧にアドインの名前と説明が表示されます。アドインの機能や動作などをユーザーが理解できる説明をアドインに追加します。

  11. [次へ] をクリックします。

  12. [アドイン オプションを選択します。] ページの [ホスト アプリケーションの読み込み時にアドインを開始する] をクリックします。

  13. 残りのチェック ボックスをオフにします。

  14. [[バージョン情報] に関する情報を選択します。] ページで、アドインについての情報を [バージョン情報] ダイアログ ボックスに表示するかどうかを指定できます。情報を表示したい場合は、[[バージョン情報] ボックスの情報を指定する] チェック ボックスをオンにします。

    Visual Studio の [バージョン情報] ダイアログ ボックスに追加できる情報には、バージョン番号、サポートの詳細、ライセンスのデータなどがあります。

  15. [次へ] をクリックします。

  16. 選択したオプションが [概要] ページに表示され、選択した内容を確認できます。なければ、アドインを作成するには [完了] を選択します。何かを変更する場合は、[戻る] のボタンをクリックします。

    新しいソリューションおよびプロジェクトが作成され、コード エディターに新しいアドインの Connect.cs ファイルが表示されます。

    この WebPerfTestResultsViewerAddin プロジェクトによって参照されるユーザー コントロールを作成した後に、コードを Connect.cs ファイルに追加します。

作成したアドインをアドイン マネージャーでアクティブ化できるようにするには、アドインを Visual Studio に登録する必要があります。これを行うには、.addin ファイル名拡張子を持つ XML ファイルを使用します。

この XML ファイルには、Visual Studio のアドイン マネージャーにアドインを表示するために必要な情報が記述されています。Visual Studio は起動時に、使用できる .addin ファイルを検出するために .addin ファイルの場所を検索します。使用できる .addin ファイルが検出された場合、この XML ファイルをクリックすると、内容が読み取られて、アドインを起動するのに必要な情報がアドイン マネージャーに渡されます。

.addin ファイルは、アドイン ウィザードを使用してアドインを作成すると、自動的に作成されます。

詳細については、「アドインの登録」を参照してください。

Ff458704.collapse_all(ja-jp,VS.110).gifアドイン ファイルの場所

アドイン ウィザードによって、次のような .addin ファイルのコピーが 2 つ自動的に作成されます。

.Addin ファイルの場所

.Dll ファイルの場所

説明

ルート プロジェクト フォルダー

\<ドキュメント>\Visual Studio 11\Projects\MyAddin1\MyAddin1\

ローカル パス (MyAddin1.dll)

アドイン プロジェクトの配置に使用します。編集しやすくするためにプロジェクトに含まれており、XCopy 形式の配置用のローカル パスが設定されます。

アドイン フォルダー

\<ドキュメント>\Visual Studio 11\Addins\

または

<共有ドキュメントの場所>\Addins\

プロジェクト デバッグ フォルダー

(例: \ Documents\Visual Studio 11

Projects\MyAddin1\MyAddin1\bin\)

デバッグ環境でアドインを実行する場合に使用します。常に、現在のビルド構成の出力パスを示します。

Windows フォーム コントロール ライブラリ プロジェクトの作成

前の手順で作成された Visual Studio アドインが Windows フォーム コントロール ライブラリ プロジェクトを参照して、UserControl クラスのインスタンスを作成します。

詳細については、「Windows フォーム コントロール」を参照してください。

コントロールを作成して Web テスト結果ビューアーで使用するには

  1. ソリューション エクスプローラーで、ソリューションを右クリックし、[追加] を選択し、を [新しいプロジェクト] を選択します。

    [新しいプロジェクト] ダイアログ ボックスが表示されます。

  2. [インストールされたテンプレート][Visual Basic] または [Visual C#] のいずれかを展開し、[Windows] を選択します。

    [!メモ]

    このトピックでは、サンプル コードの実行に Visual C# を使用します。

  3. テンプレートの一覧で、[Windows フォーム コントロール ライブラリ] を選択します。

  4. [名前] にアドインの名前を入力します。例: WebPerfTestResultsViewerControl

  5. [OK] をクリックします。

    Windows フォーム コントロール ライブラリ プロジェクト WebPerfTestResultsViewerControl がソリューション エクスプローラーに追加され、UserControl1.cs がデザイン モードで表示されます。

  6. ツールボックスから userControl1 のサーフェイスに DataGridView をドラッグします。

  7. DataGridView の右上隅のアクション タグ グリフ (スマート タグ グリフ) をクリックして、次の手順を実行します。

    1. [親コンテナーにドッキングする] を選択します。

    2. [追加を有効にする][編集を有効にする][削除を有効にする]、および [列の並べ替えを有効にする] の各チェック ボックスをオフにします。

    3. [列の追加] を選択します。

      [列の追加] ダイアログ ボックスが表示されます。

    4. [種類] ドロップダウン リストの [DataGridViewTextBoxColumn] をクリックします。

    5. [ヘッダー テキスト] の「Column1」というテキストを削除します。

    6. [追加] をクリックします。

    7. [閉じる] をクリックします。

  8. [プロパティ] ウィンドウで、DataGridView(Name) プロパティを resultControlDataGridView に変更します。

  9. デザイン サーフェイスを右クリックし、[コードの表示] をクリックします。

    コード エディターに UserControl1.cs ファイルが表示されます。

  10. インスタンス化された UserControl クラスの名前を UserContro1 から resultControl に変更します。

    namespace WebPerfTestResultsViewerControl
    {
        public partial class resultControl : UserControl
        {
            public resultControl()
            {
                InitializeComponent();
            }
    

    次の手順では、resultControl クラスを参照する WebPerfTestResultsViewerAddin プロジェクトの Connect.cs ファイルにコードを追加します。

    後で、Connect.cs ファイルにいくつかのコードを追加します。

コードを WebPerfTestResultsViewerAddin に追加する

コードを Visual Studio アドインに追加して Web テスト結果ビューアーを展開するには

  1. ソリューション エクスプローラーで、WebPerfTestResultsViewerAddin プロジェクトの [参照設定] ノードを右クリックし、[参照の追加] を選択します。

  2. [参照の追加] のダイアログ ボックスで、[.NET] のタブをクリックします。

  3. スクロール ダウンして、[Microsoft.VisualStudio.QualityTools.WebTestFramework] を選択し、[System.Windows.Forms] をクリックします。

  4. [OK] をクリックします。

  5. 再度 [参照設定] ノードを右クリックして、[参照の追加] を選択します。

  6. [参照の追加] のダイアログ ボックスで、[参照] のタブをクリックします。

  7. [検索対象] のボックスのを選択し、%ProgramFiles%\Microsoft の Visual Studio 11.0\Common7\IDE\PrivateAssemblies に移動し、Microsoft.VisualStudio.QualityTools.LoadTestPackage.dll ファイルを選択します。

  8. [OK] をクリックします。

  9. WebPerfTestResultsViewerAddin プロジェクト ノードを右クリックして、[参照の追加] を選択します。

  10. [参照の追加] のダイアログ ボックスで、[プロジェクト] のタブをクリックします。

  11. [プロジェクト名] の下に、[WebPerfTestResultsViewerControl] プロジェクトを選択し、[OK] を選択します。

  12. Connect.cs ファイルが表示されない場合、ソリューション エクスプローラーで、WebPerfTestResultsViewerAddin プロジェクトの Connect.cs ファイルを右クリックして、[コードの表示] を選択します。

  13. 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;
    
  14. Connect.cs ファイルの最下部までスクロール ダウンします。Web パフォーマンス テスト結果ビューアーの複数のインスタンスが開いている場合は、UserControl の GUID のリストを追加する必要があります。後で、このリストを使用するコードを追加します。

    文字列の 2 番目のリストは、後でコード化する 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>();
    
  15. Connect.cs ファイルは、IDTExtensibility2 クラスから Connect という名前のクラスをインスタンス化します。また、このファイルには、Visual Studio アドインを実装するいくつかのメソッドが含まれています。メソッドのうちの 1 つは 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);
            }
    
  16. 次のコードを接続クラスに追加して、OnConnection メソッドに追加した loadTestPackageExt.WebTestResultViewerExt.WindowCreated イベント ハンドラー用、および WebTestResultViewerExt_WindowCreated メソッドで呼び出される WindowCreated メソッド用の WebTestResultViewerExt_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);
            }
    
  17. 次のコードを接続クラスに追加して、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);
                }
            }
    
  18. 次のコードを接続クラスに追加して、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 フォーム コントロール開発の基本概念」を参照してください。

ユーザー コントロールにコードを追加するには

  1. ソリューション エクスプローラーで、WebPerfTestResultsViewerControl プロジェクト ノードを右クリックし、[プロパティ] をクリックします。

  2. 次に [アプリケーション] のタブをクリックし、[ターゲット フレームワーク] のドロップダウン リストをクリック [.NET Framework 4] を選択し、プロパティを閉じます。

    これは、Web パフォーマンス テスト結果ビューアーの拡張に必要な DLL 参照をサポートするために必要です。

  3. ソリューション エクスプローラーで、WebPerfTestResultsViewerControl プロジェクトの [参照設定] ノードを右クリックし、[参照の追加] をクリックします。

  4. [参照の追加] ダイアログ ボックスの [.NET] タブをクリックします。

  5. スクロール ダウンして、[Microsoft.VisualStudio.QualityTools.WebTestFramework] を選択します。

  6. [OK] をクリックします。

  7. UserControl1.cs ファイルに、次の Using ステートメントを追加します。

    using Microsoft.VisualStudio.TestTools.WebTesting;
    using Microsoft.VisualStudio.TestTools.WebTesting.Rules;
    
  8. 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 アドインの登録

アドイン マネージャーを使用してアドインを登録するには

  1. [ツール] メニューの[ [アドイン マネージャー]

  2. [アドイン マネージャー] ダイアログ ボックスが表示されます。

  3. [使用可能なアドイン] 列の WebPerfTestResultsViewerAddin アドイン向けのチェック ボックスをオンにして、[スタートアップ] および [コマンド ライン] 列の下のチェック ボックスをオフにします。

  4. [OK] をクリックします。

    詳細については、「方法: アドイン マネージャーを使用してアドインを制御する」を参照してください。

WebPerfTestResultsViewerAddin アドインのビルドを使用した Web パフォーマンス テストの実行

Web テスト結果ビューアーのための新しい VS アドインを実行するには

  1. Web パフォーマンス テストを実行すると、WebPerfTestResultsViewerAddin アドインの「サンプル」というタイトルの新しいタブが Web パフォーマンス テスト結果ビューアーに表示されます。

  2. DataGridView にというプロパティを表示するには、タブをクリックします。

セキュリティ

悪質なアドインが自動的にアクティブにならないようにしてセキュリティを強化するために、Visual Studio の [ツール] メニューの [オプション] ページには、[アドイン/マクロ セキュリティ] という名前の設定が用意されています。

さらに、このオプション ページでは、Visual Studio が .AddIn 登録ファイルを検索するためのフォルダーを指定できます。このようにフォルダーを指定すると、.AddIn 登録ファイルを読み取ることができる場所が制限されるので、セキュリティが強化されます。これにより、悪意のある .AddIn ファイルが誤って使用されるのを防ぐことができます。

アドインのセキュリティ設定

アドインのセキュリティに関連する、「Add-in/Macros Security, Environment, Options Dialog Box」にある設定は次のとおりです。

  • **読み込むようにアドイン コンポーネント。**既定でオンになっています。オンにすると、アドインを Visual Studio で読み込むことができます。オフにすると、アドインを Visual Studio で読み込むことができなくなります。

  • **アドイン コンポーネントが URL から読み込まれるようにします。**既定で選択されていない。オンにすると、アドインは外部 Web サイトから読み込むことができます。オフにすると、リモート アドインは Visual Studio で読み込むことができなくなります。何らかの原因でアドインを読み込むことができない場合は、Web から読み込むこともできません。この設定では、アドイン DLL の読み込みだけが制御されます。.Addin 登録ファイルは、常にローカル システムに存在する必要があります。

  • 詳細については、「アドインのセキュリティ」を参照してください。

参照

処理手順

方法: アドイン マネージャーを使用してアドインを制御する

チュートリアル: アドイン プロジェクトのデバッグ

関連項目

UserControl

Microsoft.VisualStudio.TestTools.LoadTesting

Microsoft.VisualStudio.TestTools.WebTesting

Microsoft.VisualStudio.TestTools.WebTesting.Rules

UserControl

DataGrid

概念

アドインの登録

オートメーション オブジェクト モデルの階層図

Windows フォーム コントロールのイベント

その他の技術情報

ロード テストと Web パフォーマンス テストのカスタム プラグインの作成と使用

Windows フォーム コントロールのプロパティ

.NET Framework を使用したカスタム Windows フォーム コントロールの開発