Aracılığıyla paylaş


Kaydedici Eklentisi Nasıl Oluşturulur

WebTestRecorderPlugin kaydedilen bir Web performans testini değiştirmenize olanak tanır. Seçtiğiniz sonra değişikliği oluşur durdurmak kaydedilir ve Web Performans Testi Düzenleyicisi'nde sunulan Web Performansı Kaydedicisi araç ancak test olmanın önceki test.

Kayıt eklentisinin çözmeye yardımcı olduğu birincil sorun dinamik parametrelere ilişkin özel bağlantınızı gerçekleştirmektir. Yerleşik bağıntı işlevi ile, Web performans testleri Web kaydındaki dinamik parametreleri işlem tamamlandıktan sonra veya Dinamik Parametreleri Web Test Parametrelerine Yükselt seçeneğini Web Performans Testi Düzenleyicisi araç çubuğunda kullandığınızda algılar. Daha fazla bilgi için bkz. Dinamik Parametrelerin Neden Olduğu Web Performans Testi Kayıttan Çalma Sorunları Nasıl Çözümlenir. Ancak, dahili algılama işlevselliği tüm dinamik parametreleri her zaman bulamaz. Örneğin, genellikle 5 ila 30 dakika arasında bir değer alan, oturum kimliği bulmaz. Bu yüzden, bağıntı işlemini el ile yapmanız gerekir. Daha fazla bilgi için bkz. Dinamik Parametreler, Web Performans Test Parametreleri'ne Nasıl Yükseltilir.

WebTestRecorderPlugin kendi özel eklentiniz için kod yazmanıza olanak sağlar. Bu eklenti, bağıntı yapabilir veya kaydedilip Web Başarım Test Düzenleyicisi'nde sunulmadan önce Web başarım testini bir çok yönden değiştirebilir. Bu yüzden, belirli bir dinamik değişkenin kayıtlarınızın bir çoğu ile ilişkili olması gerektiğini belirlerseniz, işlemi otomatikleştirebilirsiniz.

Bir kaydedici eklentisinin kullanılabileceği bazı diğer yollar, ayıklama ve doğrulama kuralları ekleme, bağlam parametreleri ekleme veya bir Web performansı testinde yorumları işlemlere dönüştürme için kullanmayı içerir.

Aşağıdaki yordamlar bir kaydedici eklentisi ilkel kodunun nasıl oluşturulduğunu, eklentinin nasıl dağıtıldığını ve yürütüldüğünü açıklar. Yordamları izleyen örnek kod, özel dinamik parametre korelasyon kayıt eklentisi oluşturmak için Visual C# programının nasıl kullanılacağını gösterir.

Gereksinimler

  • Visual Studio Ultimate

Kaydedici Eklentisi Oluşturma

Bir kaydedici eklentisi oluşturmak için

  1. Web performans testi bir kaydedici eklentisi oluşturmak istediğiniz Web performans ve yük test projesi içeren bir çözüm açın.

  2. Çözüm Gezgini'nde, çözümü sağ tıklatın, seçin Ekleve sonra Yeni bir proje.

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

  3. Yüklü Şablonlar altından Visual C# seçin.

  4. Şablon listesinde Sınıf Kitaplığı'nı seçin.

  5. Ad metin kutusuna kaydedici eklentisi için bir ad yazın.

    Sınıf kitaplığı Çözüm Gezgini'ne eklenir ve yeni sınıf Kod Düzenleyicisi'nde açılır.

  6. Çözüm Gezgini'ndeki yeni sınıf kitaplığı proje klasöründe Başvurular klasörünü sağ tıklatın ve Başvuru Ekle'yi seçin.

    İpucu

    RecorderPlugins, yeni bir sınıf kitaplığı projesi klasörüne örnektir.

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

  7. .NET sekmesini seçin.

  8. Seçin ve aşağı kaydırma Microsoft.VisualStudio.QualityTools.WebTestFramework ve sonra Tamam.

    Microsoft.VisualStudio.QualityTools.WebTestFramework öğesi Çözüm Gezginindeki Başvurular klasörüne eklenir.

  9. Kaydedici eklentiniz için kodu yazın. Önce, WebTestRecorderPlugin'den türeyen yeni bir ortak sınıf oluşturun.

  10. PostWebTestRecording yöntemini geçersiz kılın.

    public class Class1 : WebTestRecorderPlugin
        {
            public override void PostWebTestRecording(object sender, PostWebTestRecordingEventArgs e)
            {
                base.PostWebTestRecording(sender, e);
            }
        }
    

    Olay bağımsız değişkenleri birlikte çalışmak için iki nesne sağlayacaklardır: kaydedilen sonuç ve kaydedilen Web performansı testi. Bu, belirli değerleri arayarak sonuçlar içinde tekrarlama yapmanızı ve sonra değişiklikler yapmak üzere Web başarım testinde aynı isteğe atlamanızı sağlar. Ayrıca bir bağlam parametresini eklemek veya URL'nin parçalarını parametreleştirmek isterseniz sadece Web başarım testini değiştirebilirsiniz.

    Not

    Web performans testini değiştirirseniz, RecordedWebTestModified özelliğini de true olarak ayarlamanız gerekir: e.RecordedWebTestModified = true;

  11. Web kaydı gerçekleştikten sonra kaydedici eklentisinden yürütmesini istediğiniz şeye göre daha fazla kod ekleyin. Örneğin, aşağıdaki örnekte gösterildiği gibi özel korelasyon işleyecek bir kod ekleyebilirsiniz. Ayrıca, yorumları işlemlere dönüştürme veya Web performansı testlerine doğrulama kuralları ekleme gibi işlemler için bir kaydedici eklentisi oluşturabilirsiniz.

  12. Üzerinde Yapı menüsünde, yapı < sınıf kitaplığı projesi adı >'i seçin.

  13. Ardından, kaydedici eklentisini Visual Studio Ultimate ile kaydettirmek için dağıtmalısınız.

Ff400224.collapse_all(tr-tr,VS.110).gifKaydedici Eklentisini Dağıtın

Kaydedici eklentisini derledikten sonra ortaya çıkan DLL'i iki konumdan birine yerleştirmeniz gerekecektir:

  • %ProgramFiles%\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\WebTestPlugins

  • %USERPROFILE%\Belgelerim\Visual Studio 2012\WebTestPlugins

Uyarı

Kaydedici eklentisini iki konumdan birine kopyaladıktan sonra, kaydedici eklentisinin kaydedilmesi için Visual Studio Ultimate'u yeniden başlatmalısınız.

Ff400224.collapse_all(tr-tr,VS.110).gifKaydedici Eklentisini Yürütme

Yeni bir Web başarım testi oluştururken WebTestRecordPlugins Öğesini Etkinleştir iletişim kutusunu göreceksiniz. WebTestRecordPlugins'i Etkinleştir iletişim kutusu mümkün olan tüm yürütülebilir eklentileri gösterir.

Kaydedici eklentisini çalıştırmak için

  1. Yeni Web performans testi oluşturur. Daha fazla bilgi için bkz. Web Performans Test Kaydedicisini Kullanarak bir Yeni Web Performans Testi Nasıl Oluşturulur.

    WebTestRecordPlugins'i Etkinleştir iletişim kutusunu görüntüler.

  2. Kaydedici Eklentisi onay kutusunu seçin ve Tamam'ı tıklatın.

    Web performans testi, kaydı tamamladıktan sonra yeni kaydedici eklenti yürütülecektir.

    Uyarı

    Bir Web performans testi ya da eklentisini kullanan yükleme testi çalıştırdığınızda aşağıdakine benzer bir hata alabilirsiniz:

    Request failed: Exception in <plug-in> event: Could not load file or assembly '<"Plug-in name".dll file>, Version=<n.n.n.n>, Culture=neutral, PublicKeyToken=null' or one of its dependencies.The system cannot find the file specified.

    Bu, eklentilerinizden herhangi birinde kod değişikliği yapmanız ve yeni bir DLL sürümü (Version=0.0.0.0) oluşturmanız ve buna karşın eklentinin özgün eklenti sürümüne başvurmayı sürdürmesi durumunda oluşur.Bu sorunu gidermek için şu adımları izleyin:

    1. Web performans ve yük test projesi içinde başvurularda bir uyarı görürsünüz.Başvuruyu eklenti DLL'nizden kaldırın ve yeniden ekleyin.

    2. Testinizden veya uygun konumdan eklentiyi kaldırın ve sonra yeniden ekleyin.

Örnek

Bu örnek, özelleştirilmiş parametre bağıntısı yapmak için gereken özelleştirilmiş bir Web başarım test kaydedicisi eklentisinin nasıl yaratılacağını göstermektedir.

Not

Örnek kodun tam listesi bu konunun altında bulunur.

Örnek kodu Gözden Geçirme

ReportSession öğeli ilk sayfayı bulmak için sonuç boyunca yineleme

Kod örneğinin bu parçası, her bir kaydedilmiş nesne boyunca yinelenir ve Rapor Oturumu için yanıt gövdesini arar.

           foreach (WebTestResultUnit unit in e.RecordedWebTestResult.Children)
            {
                WebTestResultPage page = unit as WebTestResultPage; 
                if (page != null)
                {
                    if (!foundId)
                    {
                        int indexOfReportSession = page.RequestResult.Response.BodyString.IndexOf("ReportSession");
                        if (indexOfReportSession > -1)
                        {

Bir ayıklama kuralı ekleyin

Bir yanıt bulunduktan sonra, bir çıkarma kuralı eklemeniz gerekir. Kod örneğinin bu parçası ExtractionRuleReference sınıfını kullanarak ayıklama kuralını oluşturur ve sonra bu ayıklama kuralını eklemek için Web başarım testindeki doğru isteği bulur. Her sonuç nesnesi, kod içinde Web performans testinden doğru istekleri almak için kullanılan, DeclarativeWebTestItemId adı verilen yeni bir özellik içerir.

           ExtractionRuleReference ruleReference = new ExtractionRuleReference();
           ruleReference.Type = typeof(ExtractText);
           ruleReference.ContextParameterName = "SessionId";
           ruleReference.Properties.Add(new PluginOrRuleProperty("EndsWith", "&ControlID="));
           ruleReference.Properties.Add(new PluginOrRuleProperty("HtmlDecode", "True"));
           ruleReference.Properties.Add(new PluginOrRuleProperty("IgnoreCase", "True"));
           ruleReference.Properties.Add(new PluginOrRuleProperty("Index", "0"));
           ruleReference.Properties.Add(new PluginOrRuleProperty("Required", "True"));
           ruleReference.Properties.Add(new PluginOrRuleProperty("StartsWith", "ReportSession="));
           ruleReference.Properties.Add(new PluginOrRuleProperty("UseRegularExpression", "False"));

           WebTestRequest requestInWebTest = e.RecordedWebTest.GetItem(page.DeclarativeWebTestItemId) as WebTestRequest;
           if (requestInWebTest != null)
           {
               requestInWebTest.ExtractionRuleReferences.Add(ruleReference);
               e.RecordedWebTestModified = true;
           }

Sorgu dizesi parametrelerini değiştir

Şimdi adı ReportSession olan tüm sorgu dizesi parametreleri kod tarafından bulunur ve kod örneğinin bu parçasında gösterilen değerle {{SessionId}} değiştirilir:

           WebTestRequest requestInWebTest = e.RecordedWebTest.GetItem(page.DeclarativeWebTestItemId) as WebTestRequest;
           if (requestInWebTest != null)
           {
               foreach (QueryStringParameter param in requestInWebTest.QueryStringParameters)
               {
                    if (param.Name.Equals("ReportSession"))
                    {
                        param.Value = "{{SessionId}}";
                    }
                }
            }
using System.ComponentModel;
using Microsoft.VisualStudio.TestTools.WebTesting;
using Microsoft.VisualStudio.TestTools.WebTesting.Rules;

namespace RecorderPlugin
{
    [DisplayName("Correlate ReportSession")]
    [Description("Adds extraction rule for Report Session and binds this to querystring parameters that use ReportSession")]
    public class CorrelateSessionId : WebTestRecorderPlugin
    {
        public override void PostWebTestRecording(object sender, PostWebTestRecordingEventArgs e)
        {
            //first find the session id
            bool foundId = false;
            foreach (WebTestResultUnit unit in e.RecordedWebTestResult.Children)
            {
                WebTestResultPage page = unit as WebTestResultPage;
                if (page != null)
                {
                    if (!foundId)
                    {
                        int indexOfReportSession = page.RequestResult.Response.BodyString.IndexOf("ReportSession");
                        if (indexOfReportSession > -1)
                        {
                            //add an extraction rule to this request
                            // Get the corresponding request in the Declarative Web performance test
                            ExtractionRuleReference ruleReference = new ExtractionRuleReference();

                            ruleReference.Type = typeof(ExtractText);
                            ruleReference.ContextParameterName = "SessionId";
                            ruleReference.Properties.Add(new PluginOrRuleProperty("EndsWith", "&ControlID="));
                            ruleReference.Properties.Add(new PluginOrRuleProperty("HtmlDecode", "True"));
                            ruleReference.Properties.Add(new PluginOrRuleProperty("IgnoreCase", "True"));
                            ruleReference.Properties.Add(new PluginOrRuleProperty("Index", "0"));
                            ruleReference.Properties.Add(new PluginOrRuleProperty("Required", "True"));
                            ruleReference.Properties.Add(new PluginOrRuleProperty("StartsWith", "ReportSession="));
                            ruleReference.Properties.Add(new PluginOrRuleProperty("UseRegularExpression", "False"));

                            WebTestRequest requestInWebTest = e.RecordedWebTest.GetItem(page.DeclarativeWebTestItemId) as WebTestRequest;
                            if (requestInWebTest != null)
                            {
                                requestInWebTest.ExtractionRuleReferences.Add(ruleReference);
                                e.RecordedWebTestModified = true;
                            }
                            foundId = true;

                        }
                    }
                    else
                    {
                        //now update query string parameters
                        WebTestRequest requestInWebTest = e.RecordedWebTest.GetItem(page.DeclarativeWebTestItemId) as WebTestRequest;
                        if (requestInWebTest != null)
                        {
                            foreach (QueryStringParameter param in requestInWebTest.QueryStringParameters)
                            {
                                if (param.Name.Equals("ReportSession"))
                                {
                                    param.Value = "{{SessionId}}";
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

Ayrıca bkz.

Görevler

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

Web Performans Testi Düzenleyicisi Kullanılarak Varolan Bir Web Performans Testi Nasıl Düzenlenir

Başvuru

WebTestRequestPlugin

PostWebTestRecording

ExtractionRuleReference

PostWebTestRecording

Diğer Kaynaklar

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