WebTest работает, но LoadTest нет

Я создал веб-тест производительности для сайта, который, кажется, работает нормально. Это простой тест для входа и тестирования навигации. Запуск этого теста работает только каждый раз. Но проблема проявляется, когда я вызываю этот тест в LoadTest. Итак, я создал нагрузочный тест только с этим веб-тестом производительности, и он все время терпит неудачу сразу после входа в систему из-за этой ошибки:

The server committed a protocol violation. Section=ResponseStatusLine

Я много исследовал эту ошибку, и все предлагают вставить это утверждение:

<system.net>
  <settings>
    <httpWebRequest useUnsafeHeaderParsing=”true”/>
  </settings>
</system.net>   

в файле web.config решает проблему, но обычно QA отделен от DEV и у нас нет доступа к их коду. Мне просто интересно, как может работать тест, когда выполняется индивидуально, а не в нагрузочном тесте. Я подумал, что проблема может быть в количестве пользователей или в шаблоне загрузки, поэтому я установил его из своего начального Step load pattern к Constant load pattern только с одним пользователем. Тем не менее, та же ошибка приводит к сбою теста. У кого-нибудь была похожая проблема? Если вам нужно больше данных, просто дайте мне знать.

РЕДАКТИРОВАТЬ: Когда я указал прокси (localhost:8888 - для fiddler) в тесте производительности, который использует нагрузочный тест, проблема не возникла, но нагрузочный тест был слишком медленным.

2 ответа

У меня точно такая же проблема. Моя тестовая среда использует SSL и балансировку нагрузки использует балансировщик нагрузки F5. Я не получал проблему в конфигурации без нагрузки.

Веб-тестирование при запуске не кеширует зависимые запросы, тогда как нагрузочное тестирование кеширует зависимые запросы, следовательно, встречается другое поведение.

Чтобы обойти эту проблему, вам нужно создать плагин, чтобы заставить зависимые запросы не кэшироваться в нагрузочном тесте. В следующей статье рассказывается, как создать плагин.

http://msdn.microsoft.com/en-us/library/ms243191.aspx

Требуется код подключения:

using System;
using Microsoft.VisualStudio.TestTools.WebTesting;

namespace DisableCache
{
    public class DisableCache : WebTestPlugin
    {
       public override void PostRequest(object sender, PostRequestEventArgs e)
        {
            foreach (WebTestRequest dependentRequest in e.Request.DependentRequests)
            {
                dependentRequest.Cache = false;
            }
        }
    }
}

В прошлом я получал эту ошибку из-за дополнительных \n в URL.

В моем случае это было вызвано динамическим источником данных. Параметр в источнике данных должен быть очищен. Используете ли вы DataSource в своем тесте?

Другие вопросы по тегам