Многие зависимые запросы (DR) не являются явными в веб-тесте. Когда parse dependent requests
основного запроса равно true
, Visual Studio обрабатывает HTML-ответ этого основного запроса, чтобы найти DR, и они добавляются в список DR. Любые ответы DR, которые являются HTML, также могут быть проанализированы, и их DR добавлены в список.
Одним из методов обработки отсутствующих или проблемных DR является запуск подключаемого модуля, который изменяет список DR. Приведенный ниже код основан на WebTestDependentFilter
на странице 189 "Краткого справочного руководства по тестированию производительности Visual Studio" (версия 3.6), доступного по адресу Codeplex. В документе Codeplex есть много другой полезной информации о веб-тестировании и нагрузочном тестировании.
public class WebTestDependentFilter : WebTestPlugin
{
public string FilterDependentRequestsThatStartWith { get; set; }
public string FilterDependentRequestsThatEndWith { get; set; }
public override void PostRequest(object sender, PostRequestEventArgs e)
{
WebTestRequestCollection depsToRemove = new WebTestRequestCollection();
// Note, you can't modify the collection inside a foreach, hence the second collection
// requests to remove.
foreach (WebTestRequest r in e.Request.DependentRequests)
{
if (!string.IsNullOrEmpty(FilterDependentRequestsThatStartWith))
{
if (r.Url.StartsWith(FilterDependentRequestsThatStartWith))
{
depsToRemove.Add(r);
}
}
else if (!string.IsNullOrEmpty(FilterDependentRequestsThatEndWith))
{
if (r.Url.EndsWith(FilterDependentRequestsThatEndWith))
{
depsToRemove.Add(r);
}
}
}
foreach (WebTestRequest r in depsToRemove)
{
e.WebTest.AddCommentToResult(string.Format("Removing dependent: {0}", r.Url));
e.Request.DependentRequests.Remove(r);
}
}
}
Критерии поиска в приведенном выше коде можно легко изменить, например, для проверки средних частей URL-адреса.
Другим вариантом является установка ожидаемого кода ответа некоторых DR на другие значения. Это может сделать более точную проверку производительности, чем удаление сбойных DR, поскольку сервер по-прежнему должен обрабатывать запрос и возвращать ответ.
person
AdrianHHH
schedule
24.02.2018