我为一个似乎工作正常的网站创建了一个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 pattern
设置为只有一个用户的Constant load pattern
。但是,同样的错误会导致测试失败。有没有人有类似的问题?如果您需要更多数据,请告诉我们。
编辑:当我在负载测试使用的性能测试中指定了代理(localhost:8888 - for fiddler)时,问题没有发生,但是负载测试太慢了。
答案 0 :(得分: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;
}
}
}
}
答案 1 :(得分:0)
过去,由于Url中有额外的 \ n ,我收到了此错误。
就我而言,这是由动态数据源引起的。应清理数据源中的参数。 你在测试中使用DataSource吗?