http - WebTest 工作但 LoadTest 不工作

标签 http visual-studio-2012 web-testing load-testing

我为一个看起来运行良好的网站创建了一个网络性能测试。这是一个用于登录和测试导航的简单测试。运行该测试每次都有效。但是当我在 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)时,问题没有发生,但负载测试太慢了。

最佳答案

我遇到了完全相同的问题。我的测试环境使用 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;
            }
        }
    }
}

关于http - WebTest 工作但 LoadTest 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16162592/

相关文章:

c++ - ClCompile 和 Emscripten

javascript - Three.js:点击对象时页面向下移动

testing - 需要帮助识别 testcafe 中的元素

c# - .NET HTTP 解析器

node.js - 如何使用 WebSockets 进行请求-响应模式

performance - Visual Studio Web 分析仅显示 iexplore

text-editor - Visual Studio 2012 文本编辑器中的丑陋选择

powershell - 我想使用 testcafe 创建我的第一个测试,但出现如下错误

http - "every SSL certificate requires a dedicated IP"到底是什么意思?

c# - 当我强制从一个页面下载一个文件时,它用 SPACE/C# 分割文件名?