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
Web performans testi bir kaydedici eklentisi oluşturmak istediğiniz Web performans ve yük test projesi içeren bir çözüm açın.
Çö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.
Yüklü Şablonlar altından Visual C# seçin.
Şablon listesinde Sınıf Kitaplığı'nı seçin.
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.
Çö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.
.NET sekmesini seçin.
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.
Kaydedici eklentiniz için kodu yazın. Önce, WebTestRecorderPlugin'den türeyen yeni bir ortak sınıf oluşturun.
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;
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.
Üzerinde Yapı menüsünde, yapı < sınıf kitaplığı projesi adı >'i seçin.
Ardından, kaydedici eklentisini Visual Studio Ultimate ile kaydettirmek için dağıtmalısınız.
Kaydedici 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.
Kaydedici 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
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.
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:
-
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.
-
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
Diğer Kaynaklar
Yükleme ve Web Performansı Testleri için Özel Eklentiler Oluşturma ve Kullanma