3

我为一个看起来运行良好的网站创建了一个 Web 性能测试。这是一个用于登录和测试导航的简单测试。每次运行该测试都有效。但是当我在 LoadTest 中调用该测试时,问题就出现了。因此,我创建了一个负载测试,其中仅包含此 Web 性能测试,但由于此错误,它在登录后一直失败:

The server committed a protocol violation. Section=ResponseStatusLine

我研究了很多这个错误,每个人都建议插入这个语句:

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

在 web.config 文件中解决了这个问题,但通常 QA 与 DEV 是分开的,我们无权访问他们的代码。我只是想知道单独执行而不是负载测试时测试如何工作。我认为问题可能出在用户数量或负载模式上,所以我将它从我的初始设置Step load patternConstant load pattern只有一个用户。尽管如此,同样的错误仍会导致测试失败。有没有人有类似的问题?如果您需要更多数据,请告诉我。

编辑:当我在负载测试使用的性能测试中指定代理(本地主机:8888 - 用于提琴手)时,问题没有发生,但负载测试太慢了。

4

2 回答 2

2

我遇到了完全相同的问题。我的测试环境使用 SSL,并使用 F5 负载平衡器进行负载平衡。我在非负载平衡配置中没有遇到问题。

运行时的 webtest 不会缓存依赖请求,而 loadtest 将缓存依赖请求,因此会遇到不同的行为。

为了解决这个问题,您需要创建一个插件来强制在负载测试中不缓存相关请求。下面的文章告诉你如何创建一个插件。

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;
            }
        }
    }
}
于 2013-11-20T18:09:02.680 回答
-1

过去,由于URL 中有额外的\n ,我得到了这个错误。

就我而言,这是由动态数据源引起的。应清除数据源中的参数。您在测试中使用 DataSource 吗?

于 2013-04-30T15:22:00.063 回答