2

Visual Studio 2010 Ultimate Load Test を使用して、エンタープライズ Web アプリケーション (私が作成したものではありません) の負荷テストを行いたいと考えています。各仮想ユーザーが最初にログインし、ランダム テストの実行の最後にログアウトするようにします。そのために負荷テストを適切に構成できます。ただし、複雑な問題があります。セッション キーは、次のように URL に挿入されます。

http://ProductName/(S(ilv3lp2yhbqdyr2tbcj5mout))/System/Container.aspx

Visual Studio の WebTests をコード化されたテストに変換し、セッション固有の URL を使用するコードで改良しました。これはうまくいきます。私がする必要があるのは、ログイン WebTest クラスからログアウト WebTest クラスまで、特定の仮想ユーザーが実行するさまざまなテストにわたって、このセッションでエンコードされた URL を永続化することです。

個々の WebTest クラスは、各テストの開始時と終了時にログインおよびログアウトできます。ただし、これは通常の使用を正確に表したものではありません。このアプリケーションは、メインフレーム端末をエミュレートし、Web ブラウザーの要求間の接続またはセッションを切断することはありません。各セッションは、メインフレーム端末が IBM AS400 などと対話するのと同じように、1 つの長い対話型 HTTP 要求です。ユーザーは通常、1 日の初めにメインフレームにログインし、1 日の終わりにログアウトします (すべきです)。同様に、この Web アプリケーションは、ユーザーがログアウトするか、IIS セッション タイムアウトが発生するまで、HTTP 要求を維持します。したがって、メモリ リークやその他の厄介なバグが蓄積されないようにするために、すべてのテスト間で URL に同じセッションを保持することが重要です。

あなたの考えを共有してください!

4

1 に答える 1

10

問題 1: テストの反復間でセッション ID を保持する

テストの反復間で永続的な「ユーザー コンテキスト」にデータを格納できます。これは、'$LoadTestUserContext' という名前の WebTestContext にあります。(ただし、このコンテキスト パラメーターは、スタンドアロンの Web テストの実行ではなく、負荷テストの実行でのみ表示されることに注意してください)

// within WebTestPlugin.PreRequest() or MyExtractionRule.Extract()
// e is the corresponding eventargs object...
LoadTestUserContext userContext = (LoadTestUserContext)e.WebTest.Context["$LoadTestUserContext"];
...
// setting the value in the user context (i.e. in the extraction rule)
userContext["sessionId"] = "(extracted session id)";
...
// getting the value from the user context (i.e. in WebTestPlugin PreWebTest event)
e.WebTest.Context["sessionId"] = userContext["sessionId"];

すべてのテストで値を使用できるようにするには、WebTestPlugin (ユーザー コンテキストから Web テスト コンテキストに値を取得する) をすべての Web テストに追加する必要があります。

問題 2: 負荷テストの開始時と終了時にのみログイン/ログアウトする

  • ログインおよびログアウト機能を独自の個別のテストに抽出します (ログアウト テストには、保存された sessionId をフェッチする WebTestPlugin も必要であることを思い出してください)。
  • Load Test の Edit Test Mix ダイアログでは、Initialize および Terminate テストを指定できます。これらを作成した Login および Logout テストに設定します。
  • Load Test Scenario で、"Percentage of New Users" を 0 に設定します。

「新規ユーザーの割合」設定の追加説明

「新規ユーザーの割合」設定は名前が不適切であり、その完全な動作を示していません。

  • 「新しいユーザー」がテストの反復を開始すると、新しい $WebTestUserId が取得されます (そして、望ましくない新しい新しいユーザー コンテキストが取得されます) 。
  • 「新しいユーザー」以外がテストの繰り返しを開始すると、同じ古い $WebTestUserId (および必要な古いユーザー コンテキスト) が保持されます

ここまでは順調ですね。しかし、予想外の部分は次のとおりです。

  • 各「新規ユーザー」は、負荷テスト中に次を実行します。

    Initialize > web test iteration > Terminate

  • 「新規ユーザー」以外のユーザーは、負荷テストの全期間にわたって以下を実行します。

    Initialize > iteration1 > iteration2 > ... > iterationN > Terminate

つまり、「新しいユーザー」は常にログインとログアウトを繰り返します (これは望ましくありません)。「新規ユーザー」以外は、負荷テスト全体で1 回だけログインおよびログアウトし、その間、継続的にテストの反復を実行します (これは必要です)。

于 2012-07-12T06:40:57.630 に答える