Не удается найти зависимый запрос в веб-тесте

Я записал тест с помощью моего регистратора веб-тестов в VS2015. Когда я повторно запускаю тест, в какой-то момент он терпит неудачу при зависимом запросе GET файла .css. URL-адрес в результатах веб-теста выглядит примерно так: https://mycompany/blah/Style%20Guides/ Global_CSS.css Ошибка представляет собой простую ошибку 404. Теперь я перехожу к основному запросу и ищу этот конкретный зависимый запрос, чтобы установить его параметр Parse_Dependent_Request как False или установить для Extected_Http_Status_Code значение 404, что мне подходит. Но я не могу найти этот конкретный зависимый запрос под основным или любым другим запросом.

Я попытался изменить все параметры Parse_Dependent_Request всех зависимых запросов на false и понять, какой из них на самом деле отправляет запрос Get, но ни один из них не сработал. Я сгенерировал код из веб-теста и буквально выполнил поиск по странице, но тщетно. Как мне получить запрос?


person Reema    schedule 23.02.2018    source источник


Ответы (1)


Многие зависимые запросы (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