Partager via


Comment : créer un éditeur de corps HTTP personnalisé pour l'éditeur de test de performances de site Web

Cette rubrique s'applique à :

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional 

Visual Studio Express

La rubrique s'applique La rubrique ne s'applique pas La rubrique ne s'applique pas La rubrique ne s'applique pas

Vous pouvez créer un éditeur de contenu personnalisé qui vous permet de modifier le contenu du corps de la chaîne ou le contenu de corps binaire d'une requête de service Web, par exemple, SOAP, REST, asmx, wcf, RIA et d'autres types de requête de service Web.

Il existe deux types d'éditeur que vous pouvez implémenter :

Ces interfaces sont contenues dans l'espace de noms Microsoft.VisualStudio.TestTools.WebTesting.

Créer un projet de bibliothèque de contrôles Windows

Créer un contrôle utilisateur moyen d'un projet Bibliothèque de contrôles Windows

  1. Dans Visual Studio Ultimate, dans le menu Fichier, cliquez sur New, puis sélectionnez Projet.

    La boîte de dialogue Nouveau projet s'affiche.

  2. Sous Modèles installés, sélectionnez Visual Basic ou Visual C# en fonction de votre préférence de programmation, puis sélectionnez Windows.

    Notes

    Cet exemple utilise Visual C#.

  3. Dans la liste des modèles, sélectionnez Bibliothèque de contrôles Windows Forms.

  4. Dans la zone de texte Nom, tapez un nom, par exemple, MessageEditors, puis cliquez sur OK.

    Notes

    Cet exemple utilise MessageEditors.

    Le projet est ajouté à la nouvelle solution et un UserControl nommé UserControl1.cs est présenté dans le concepteur.

  5. Dans la Boîte à outils, sous la catégorie Contrôles communs, faites glisser un RichTextBox sur la surface de UserControl1.

  6. Cliquez sur le glyphe de la balise active (Glyphe de balise active) dans l'angle supérieur droit du contrôle RichTextBox, puis sélectionnez Ancrer dans le conteneur parent.

  7. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet Bibliothèque Windows Forms et sélectionnez Propriétés.

  8. Dans la page Propriétés, sélectionnez l'onglet Application.

  9. Dans la liste déroulante Framework cible, sélectionnez .NET Framework 4.

  10. La boîte de dialogue Modification du Framework cible s'affiche.

  11. Cliquez sur Oui.

  12. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nœud Références et sélectionnez Ajouter une référence.

  13. La boîte de dialogue Ajouter une référence s'affiche.

  14. Cliquez sur l'onglet .NET, faites défiler la liste vers le bas et sélectionnez Microsoft.VisualStudio.QualityTools.WebTestFramework, puis cliquez sur OK.

  15. Si l'outil Concepteur de vues n'est pas ouvert, dans l'Explorateur de solutions, cliquez avec le bouton droit sur UserControl1.cs, puis sélectionnez Concepteur de vues.

  16. Sur l'aire de conception, cliquez avec le bouton droit et sélectionnez Afficher le code.

  17. (Facultatif) Remplacez le nom de la classe et le constructeur UserControl1 par un nom explicite, par exemple, MessageEditorControl :

    Notes

    L'exemple utilise MessageEditorControl.

    namespace MessageEditors
    {
        public partial class MessageEditorControl : UserControl
        {
            public MessageEditorControl()
            {
                InitializeComponent();
            }
        }
    }
    
  18. Ajoutez les propriétés suivantes pour obtenir et définir le texte dans RichTextBox1. L'interface IStringHttpBodyEditorPlugin utilise EditString et IBinaryHttpBodyEditorPlugin utilise EditByteArray :

            public String EditString
            {
                get
                {
                    return this.richTextBox1.Text;
                }
                set
                {
                    this.richTextBox1.Text = value;
                }
            }
    
    public byte[] EditByteArray
            {
                get
                {
                    return System.Convert.FromBase64String(richTextBox1.Text);
                }
                set
                {
                    richTextBox1.Text = System.Convert.ToBase64String(value, 0, value.Length);
                }
            }
    

Ajoutez une classe pour le projet de bibliothèque de contrôles Windows Forms.

Ajoutez une classe au projet. Elle sera utilisée pour implémenter les interfaces IStringHttpBodyEditorPlugin et IBinaryHttpBodyEditorPlugin.

Vue d'ensemble du code dans cette procédure

Le contrôle UserControl de MessageEditorControl qui été créé dans la procédure précédente est instancié comme messageEditorControl :

private MessageEditorControl messageEditorControl

L'instance messageEditorControl est hébergée dans la boîte de dialogue du plug-in créé par la méthode CreateEditor. En outre, RichTextBox de messageEditorControl est rempli avec le contenu dans le IHttpBody. Toutefois, la création du plug-in ne peut pas se produire sauf si SupportsContentType retourne true. Dans le cas de cet éditeur, SupportsContentType retourne true si le ContentType dans le IHttpBody contient « xml ».

Lorsque la modification du corps chaîne est effectuée et que l'utilisateur clique sur OK dans la boîte de dialogue du plug-in, GetNewValue est appelé pour obtenir le texte modifié sous forme de chaîne et mettre à jour l'option Corps chaîne dans la requête dans l'éditeur de tests de performances de site Web.

Pour créer une classe et implémenter le code d'interface IStringHttpBodyEditorPlugin

  1. Dns l'Explorateur de solutions, cliquez avec le bouton droit sur le projet Bibliothèque de contrôles Windows Forms et sélectionnez Ajouter un nouvel élément.

  2. La boîte de dialogue Ajouter un nouvel élément s'affiche.

  3. Sélectionnez Classe.

  4. Dans la zone de texte Nom, tapez un nom explicite pour la classe, par exemple, MessageEditorPlugins.

  5. Cliquez sur Ajouter.

    Class1 est ajouté au projet et est présenté dans l'éditeur de code.

  6. Dans l'éditeur de code, ajoutez l'instruction using suivant :

    using Microsoft.VisualStudio.TestTools.WebTesting;
    
  7. Créez ou copiez le code suivant pour instancier la classe XmlMessageEditor de l'interface IStringHttpBodyEditorPlugin et implémenter les méthodes obligatoires :

        /// <summary>
        /// Editor for generic text based hierarchical messages such as XML and JSON.
        /// </summary>
        public class XmlMessageEditor : IStringHttpBodyEditorPlugin
        {
            public XmlMessageEditor()
            {
            }
    
            /// <summary>
            /// Determine if this plugin supports the content type.
            /// </summary>
            /// <param name="contentType">The content type to test.</param>
            /// <returns>Returns true if the plugin supports the specified content type.</returns>
            public bool SupportsContentType(string contentType)
            {
                return contentType.ToLower().Contains("xml");
            }
    
            /// <summary>
            /// Create a UserControl to edit the specified bytes.  
            /// This control will be hosted in the
            /// plugin dialog which provides OK and Cancel buttons.
            /// </summary>
            /// <param name="contentType">The content type of the BinaryHttpBody.</param>
            /// <param name="initialValue">The bytes to edit.  The bytes are the payload of a BinaryHttpBody.</param>
            /// <returns>A UserControl capable of displaying and editing the byte array value of the specified content type.</returns>
            public object CreateEditor(string contentType, string initialValue)
            {
                messageEditorControl = new MessageEditorControl();
                messageEditorControl.EditString = initialValue;
                return this.messageEditorControl;
            }
    
            /// <summary>
            /// Gets the edited bytes after the OK button is clicked on the plugin dialog.
            /// </summary>
            public string GetNewValue()
            {
                return messageEditorControl.EditString;
            }
    
            private MessageEditorControl messageEditorControl;
        }
    

Ajouter un IBinaryHttpBodyEditorPlugin à la classe

Implémentez l'interface IBinaryHttpBodyEditorPlugin.

Vue d'ensemble du code dans cette procédure

L'implémentation de code de l'interface IBinaryHttpBodyEditorPlugin est semblable au IStringHttpBodyEditorPlugin comme décrit dans la section précédente. Toutefois, la version binaire utilise un tableau d'octets pour gérer les données binaires à la place d'une chaîne.

Le UserControl de MessageEditorControl créé dans la première procédure est instancié comme messageEditorControl :

private MessageEditorControl messageEditorControl

L'instance messageEditorControl est hébergée dans la boîte de dialogue du plug-in créé par la méthode CreateEditor. En outre, RichTextBox de messageEditorControl est rempli avec le contenu dans le IHttpBody. Toutefois, la création du plug-in ne peut pas se produire sauf si SupportsContentType retourne true. Dans le cas de cet éditeur, SupportsContentType retourne true si le ContentType dans le IHttpBody contient « msbin1 ».

Lorsque la modification du corps chaîne est effectuée et que l'utilisateur clique sur OK dans la boîte de dialogue du plug-in, GetNewValue est appelé pour obtenir le texte modifié sous forme de chaîne et mettre à jour l'option BinaryHttpBody.Data dans la requête dans l'éditeur de tests de performances de site Web.

Pou ajouter le IBinaryHttpBodyEditorPlugin à la classe

  • Créez ou copiez le code suivant sous la classe XmlMessageEditor ajoutée dans la procédure précédente pour instancier la classe Msbin1MessageEditor de l'interface IBinaryHttpBodyEditorPlugin et implémenter les méthodes obligatoires :

    /// <summary>
        /// Editor for MSBin1 content type (WCF messages)
        /// </summary>
        public class Msbin1MessageEditor : IBinaryHttpBodyEditorPlugin
        {
            /// <summary>
            /// 
            /// </summary>
            public Msbin1MessageEditor()
            {
            }
    
            /// <summary>
            /// Determine if this plugin supports a content type.
            /// </summary>
            /// <param name="contentType">The content type to test.</param>
            /// <returns>Returns true if the plugin supports the specified content type.</returns>
            public bool SupportsContentType(string contentType)
            {
                return contentType.ToLower().Contains("msbin1");
            }
    
            /// <summary>
            /// Create a UserControl to edit the specified bytes.  This control will be hosted in the
            /// plugin dialog which provides OK and Cancel buttons.
            /// </summary>
            /// <param name="contentType">The content type of the BinaryHttpBody.</param>
            /// <param name="initialValue">The bytes to edit.  The bytes are the payload of a BinaryHttpBody.</param>
            /// <returns>A UserControl capable of displaying and editing the byte array value of the specified content type.</returns>
            public object CreateEditor(string contentType, byte[] initialValue)
            {
                messageEditorControl = new MessageEditorControl();
                messageEditorControl.EditByteArray = initialValue;
                return messageEditorControl;
            }
    
            /// <summary>
            /// Gets the edited bytes after the OK button is clicked on the plugin dialog.
            /// </summary>
            public byte[] GetNewValue()
            {
                return messageEditorControl.EditByteArray;
            }
    
            private MessageEditorControl messageEditorControl;
            private object originalMessage;
        }
    

Générer et déployer les plug-ins

Pour générer et déployer la DLL produite pour IStringHttpBodyEditorPlugin et IBinaryHttpBodyEditorPlugin

  1. Dans le menu Générer, cliquez sur Générer <nom du projet Bibliothèque de contrôles Windows Form>.

  2. Quittez Visual Studio Ultimate.

    Notes

    Vous devez quitter toutes les instances de Visual Studio Ultimate pour vérifier que le fichier DLL n'est pas verrouillé avant d'essayer de le copier.

  3. Copiez le fichier .dll généré du dossier de vos projets bin\debug (par exemple, MessageEditors.dll) dans %ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\WebTestPlugins.

  4. Démarrez Visual Studio Ultimate.

    La .dll doit être enregistrée avec Visual Studio Ultimate.

Vérifier les plug-ins à l'aide d'un test de performances de site Web

Pour tester vos plug-ins

  1. Créer un projet de test.

  2. Créez un test de performances de site Web et entrez une URL dans le navigateur pour accéder à un service Web, par exemple, http://dev.virtualearth. net/webservices/v1/metadata/searchservice/dev.virtualearth. net.webservices.v1.search.wsdl.

  3. Lorsque vous terminez l'enregistrement, dans l'éditeur de tests de performances de site Web, développez la requête du service Web et sélectionnez Corps chaîne ou Corps binaire.

  4. Dans la fenêtre Propriétés, sélectionnez Corps chaîne ou Corps binaire et cliquez sur le bouton de sélection (...).

    La boîte de dialogue Modifier les données du corps HTTP s'affiche.

  5. Vous pouvez à présent modifier les données et cliquer sur OK. La méthode GetNewValue applicable est appelée pour mettre à jour le contenu dans le IHttpBody.

Compilation du code

  • Vérifiez que le framework cible du projet Bibliothèque de contrôles Windows est .NET Framework 4. Par défaut, les projets Bibliothèque de contrôles Windows ciblent l'infrastructure client .NET Framework 4 qui ne permet pas d'inclure la référence Microsoft.VisualStudio.QualityTools.WebTestFramework.

    Pour plus d'informations, consultez Page Application, Concepteur de projets (C#).

Voir aussi

Tâches

Comment : créer un plug-in de niveau demande

Comment : créer une règle d'extraction personnalisée pour un test de performances de site Web

Comment : créer une règle de validation personnalisée pour un test de performances de site Web

Comment : créer un plug-in de test de charge

Comment : créer un test des performances de site Web codé

Référence

IStringHttpBodyEditorPlugin

CreateEditor

SupportsContentType

GetNewValue

IBinaryHttpBodyEditorPlugin

CreateEditor

SupportsContentType

GetNewValue

IHttpBody

ContentType

UserControl

RichTextBox

Autres ressources

Création et utilisation de plug-ins personnalisés pour les tests de charge et les tests de performances de site Web

Comment : créer un complément Visual Studio pour la visionneuse des résultats des tests de performances de site Web