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 から分離されており、DEV のコードにはアクセスできません。負荷テストではなく個別に実行すると、テストがどのように機能するのか疑問に思っています。ユーザー数か負荷パターンに問題があるのではないかと思い、イニシャルStep load patternからConstant load pattern1ユーザーのみに設定しました。それでも、同じエラーが原因でテストは失敗します。誰かが同様の問題を抱えていましたか?さらにデータが必要な場合は、お知らせください。

編集: 負荷テストで使用するパフォーマンス テストでプロキシ (localhost:8888 - フィドラーの場合) を指定すると、問題は発生しませんでしたが、負荷テストが遅すぎました。

4

2 に答える 2

2

まったく同じ問題が発生しました。私のテスト環境は SSL を使用しており、F5 ロード バランサーを使用して負荷分散されています。負荷分散されていない構成では問題は発生しませんでした。

実行時の Web テストは依存要求をキャッシュしませんが、負荷テストは依存要求をキャッシュするため、異なる動作が発生します。

この問題を回避するには、プラグインを作成して、依存するリクエストが負荷テストでキャッシュされないようにする必要があります。次の記事では、プラグインの作成方法について説明します。

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が含まれていたため、このエラーが発生しました。

私の場合、これは動的データソースが原因でした。データソースのパラメーターを消去する必要があります。Test で DataSource を使用していますか?

于 2013-04-30T15:22:00.063 に答える