Aracılığıyla paylaş


Web Performansı Test Düzenleyicisi için bir Özel HTTP Gövde Düzenleyicisi Nasıl Oluşturulur

Bir dize gövdesi içeriğini veya bir Web hizmetinin, örneğin SOAP, REST, asmx, wcf, RIA ve diğer Web hizmeti istek türlerinin ikili gövde içeriğini düzenlemenize olanak tanıyan özel bir içerik düzenleyici oluşturabilirsiniz.

Uygulayabileceğiniz iki tür düzenleyici var:

Bu arabirimler bulunan Microsoft.VisualStudio.TestTools.WebTesting ad alanı.

Gereksinimler

  • Visual Studio Ultimate

Bir Windows Control Library projesi oluşturun

Windows Control Library projesini kullanarak bir kullanıcı denetimi oluşturma

  1. İçinde Visual Studio Ultimate, Dosya menüsünden seçin Yeni seçip Proje.

    Yeni Proje iletişim kutusu görüntülenir.

  2. Yüklü Şablonlar altında programlama tercihinize bağlı olarak ya Visual Basic'i veya Visual C# öğesini seçin ve ardından Windows'u seçin.

    Not

    Bu örnek, Visual C# kullanmaktadır.

  3. Şablon listesinde Windows Forms Denetim Kitaplığını seçin.

  4. Örneğin, ad metin kutusuna bir ad yazın MessageEditorsve Tamam.

    Not

    Bu örnek, MessageEditors kullanmaktadır.

    Proje yeni çözüme eklenir ve bir UserControl adlı UserControl1.cs Tasarımcı içinde sunulur.

  5. Ortak Denetimler kategorisi altındaki Araç Kutusu'ndan, UserControl1 yüzeyine bir RichTextBox sürükleyin.

  6. Eylem etiketi glif seçin (Akıllı etiket karakteri) sağ üst köşesindeki RichTextBox denetlemek ve sonra seçin ve Ana kapsayıcıda yerleştir.

  7. Çözüm Gezgini'nde Windows Forms Kitaplık projesini sağ tıklatın ve Özellikler'i seçin.

  8. Özellikler'de Gelişmiş sekmesini seçin.

  9. Hedef çerçeve açılır listesinden .NET Framework 4'ü seçin.

  10. Hedef Çatı Değişimi iletişim kutusu görüntülenir.

  11. Seçim Evet.

  12. Çözüm Gezgini'nde Başvurular düğümünü sağ tıklatın ve Başvuru Ekle'yi seçin.

  13. Başvuru Ekle iletişim kutusu görüntülenir.

  14. Seçin. net sekmesinde aşağı kaydırın ve seçin Microsoft.VisualStudio.QualityTools.WebTestFramework ve sonra Tamam.

  15. Görünüm Tasarımcısı hala açık değilse, Çözüm Gezgini'nde UserControl1.cs öğesini sağ tıklatın ve seçin Görünüm Tasarımcısı'nı seçin.

  16. Tasarım yüzeyinde Kodu Görüntüle öğesini sağ tıklatıp seçin.

  17. (İsteğe bağlı) UserControl1'den sınıf ve oluşturucu adını MessageEditorControl gibi anlamlı bir ad ile değiştirin:

    Not

    Örnek MessageEditorsControl kullanır.

    namespace MessageEditors
    {
        public partial class MessageEditorControl : UserControl
        {
            public MessageEditorControl()
            {
                InitializeComponent();
            }
        }
    }
    
  18. RichTextBox1 içindeki metni almayı ve ayarlamayı sağlamak için aşağıdaki özellikleri ekleyin. IStringHttpBodyEditorPlugin arabirimi EditString öğesini kullanır ve IBinaryHttpBodyEditorPlugin, EditByteArray öğesini kullanır:

            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);
                }
            }
    

Windows Denetim Kitaplığı projesine bir sınıf ekleyin.

Projeye bir sınıf ekleyin. IStringHttpBodyEditorPlugin ve IBinaryHttpBodyEditorPlugin arabirimlerini uygulamak için kullanılacaktır.

Bu yordamdaki koda genel bakış

Önceki yordamda oluşturulan MessageEditorControl UserControl messageEditorControl örneği olarak oluşturulur:

private MessageEditorControl messageEditorControl

MessageEditorControl örneği CreateEditor yöntemi tarafından oluşturulan eklenti iletişiminin içinde barındırılır. Ayrıca, messageEditorControl'un RichTextBox başvurusu, IHttpBody başvurusundaki içerikle doldurulur. Ancak, SupportsContentType, true döndürmediği sürece eklentinin oluşumu gerçekleşemez. Bu düzenleyicide IHttpBody içindeki ContentType öğesi "xml" içeriyorsa, SupportsContentType öğesi true öğesini döndürür.

Dize gövdesinin düzenlenmesi tamamlandığında ve kullanıcı eklenti iletişim kutusundaki Tamam'ı tıklattığında, GetNewValue düzenlenmiş metni bir dize olarak almak ve Web Test Başarım Düzenleyicisi'ndeki istekteki Dize Gövdesi öğesini güncelleştirmek üzere çağırılır.

Bir sınıf oluşturmak ve IStringHttpBodyEditorPlugin arabirimi kodunu uygulamak için

  1. Çözüm Gezgini'nde Windows Forms Denetim Kitaplığı projesini sağ tıklatın ve Yeni Öğe Ekle'yi seçin.

  2. Yeni Öğe Ekle iletişim kutusu görüntülenir.

  3. Sınıf'ı seçin.

  4. Ad metin kutusuna sınıf için anlamlı bir ad yazın, örneğin MessageEditorPlugins.

  5. Ekle öğesini seçin.

    Class1 projeye eklendi ve Kod Düzenleyicisi üzerinde sunuldu.

  6. Kod Düzenleyicisi'ne aşağıdaki kullanım deyimini ekleyin.

    using Microsoft.VisualStudio.TestTools.WebTesting;
    
  7. XmlMessageEditor sınıfını IStringHttpBodyEditorPlugin arabiriminden başlatmak ve gereken yöntemleri uygulamak için aşağıdaki kodu yazın veya kopyalayın:

        /// <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;
        }
    

Sınıfa bir IBinaryHttpBodyEditorPlugin ekleyin

IBinaryHttpBodyEditorPlugin arabirimini uygular.

Bu yordamdaki koda genel bakış

IBinaryHttpBodyEditorPlugin arayüzü için kod uygulaması, bir önceki yordamda işlenen IStringHttpBodyEditorPlugin benzerdir. Ancak, ikili dosya sürümü bir dize yerine bir bayt dizisini ikili veri işlemek için kullanır.

İlk yordamda oluşturulan MessageEditorControl UserControl messageEditorControl örneği olarak oluşturulur:

private MessageEditorControl messageEditorControl

MessageEditorControl örneği CreateEditor yöntemi tarafından oluşturulan eklenti iletişiminin içinde barındırılır. Ayrıca, messageEditorControl'un RichTextBox başvurusu, IHttpBody başvurusundaki içerikle doldurulur. Ancak, SupportsContentType, true döndürmediği sürece eklentinin oluşumu gerçekleşemez. Bu düzenleyicide, IHttpBody içindeki ContentType öğesi "msbin1" içeriyorsa, SupportsContentType, true öğesini döndürür.

Dize gövdesinin düzenlenmesi tamamlandığında ve kullanıcı eklenti iletişim kutusundaki Tamam'ı tıklattığında, GetNewValue düzenlenmiş metni bir dize olarak almak ve Web Test Başarım Düzenleyicisi'ndeki istekteki BinaryHttpBody.Data öğesini güncelleştirmek üzere çağırılır.

IBinaryHttpBodyEditorPlugin'i sınıfa eklemek için

  • Msbin1MessageEditor sınıfını IBinaryHttpBodyEditorPlugin arabiriminden başlatmak ve gereken yöntemleri uygulamak için önceki yordamın altına eklenen XmlMessageEditor sınıfının altındaki kodu yazın veya kopyalayın:

    /// <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;
        }
    

Eklentileri Oluşturun ve Dağıtın

IStringHttpBodyEditorPlugin ve IBinaryHttpBodyEditorPlugin için ortaya çıkan dll'i oluşturmak ve dağıtmak için

  1. Build menüsünden Build < Windows Form Control Library projesi adı > seçin.

  2. Visual Studio Ultimate'dan çıkın.

    Not

    Kopyalamadan önce dll dosyasının kilitlenmediğinden emin olmak için Visual Studio Ultimate bütün örneklerinden çıkmalısınız.

  3. Ortaya çıkan .dll dosyasını projeler bin\debug klasöründen (örneğin; MessageEditors.dll) %ProgramFiles%\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\WebTestPlugins konumuna kopyalayın.

  4. Visual Studio Ultimate uygulamasını başlatın.

    .dll, Visual Studio Ultimate ile kaydettirilmelidir.

Bir Web Başarım Testi Kullanarak Eklentileri Doğrulayın

Eklentilerinizi test etmek için

  1. Test Projesi Oluşturur.

  2. Bir Web başarımı testi oluşturun ve Web Hizmeti tarayıcısına URL'yi girin, örneğin, http://dev.virtualearth. net/webservices/v1/metadata/searchservice/dev.virtualearth. net.webservices.v1.search.wsdl.

  3. Kaydı bitirdikten sonra, Web Performans Testi Düzenleyicisi'nde, Web hizmeti isteğini genişletin ve bir String Body ya da bir Binary Body öğesi seçin.

  4. Özellikler penceresinde, dize gövde ya da İkili Gövde seçin ve üç nokta (...) seçin.

    HTTP Gövde Verisini Düzenle iletişim kutusu görüntülenir.

  5. Artık verileri düzenleyin ve Tamam'ı tıklatın. Bu, IHttpBody içeriğini güncellemek için uygun GetNewValue yöntemini çağırır.

Kod Derleniyor

  • .net Framework 4.5 Windows Control Library projesi için hedeflenen çerçevenin olduğundan emin olun. Varsayılan olarak, Windows Denetim Kitaplığı projeleri, Microsoft.VisualStudio.QualityTools.WebTestFramework başvurusunun eklenmesi izin vermez .NET Framework 4.5 istemcisi framework hedefleyin.

    Daha fazla bilgi için bkz. Uygulama sayfası, proje Tasarımcısı (C#).

Ayrıca bkz.

Görevler

İstek Düzeyi Eklentisi Nasıl Oluşturulur

Web Performans Testi için Özel bir Ayıklama Kuralı Nasıl Oluşturulur

Web Performans Testi için Özel Doğrulama Kuralı Nasıl Oluşturulur

Yükleme Testi Eklentisi Nasıl Oluşturulur

Nasıl yapılır: Kodlanmış Web Performans Testi Oluşturma

Web Performans Test Sonuçları Görüntüleyicisi için bir Visual Studio Eklentisi Nasıl Oluşturulur

Başvuru

IStringHttpBodyEditorPlugin

CreateEditor

SupportsContentType

GetNewValue

IBinaryHttpBodyEditorPlugin

CreateEditor

SupportsContentType

GetNewValue

IHttpBody

ContentType

UserControl

RichTextBox

Diğer Kaynaklar

Yükleme ve Web Performansı Testleri için Özel Eklentiler Oluşturma ve Kullanma