3

多数の Web パフォーマンス テストを含む Visual Studio 2010 負荷テストがあります。Web パフォーマンス テストを実行するには、テスト対象の Web サイトにログインする必要があります。したがって、負荷テストには初期化ステップが含まれます。これは、ログインを行い、プラグインを使用して取得した Cookie をキャッシュする小さな Web パフォーマンス テストです。「実際の」Web パフォーマンス テスト - 実際に機能するテストには、キャッシュされた Cookie を読み取ってテストに追加するプラグインがあり、各テストが正しく機能します。

public override void PreWebTest(object sender, PreWebTestEventArgs e)
{
    if (CookieCache.Cookies != null) // CookieCache is a static class of mine
        e.WebTest.Context.CookieContainer.Add(CookieCache.Cookies);

問題は、負荷テストを実行すると、これはすべて問題なく機能しますが、負荷テストの初期化子が実行されていない場合、Cookie がないため、Web パフォーマンス テストを分離して実行できないことを意味します。パフォーマンス テストはログインされず、失敗します。

この状況に推奨される解決策はありますか? 言い換えれば、Web パフォーマンス テストにログインする必要がある場合、それを分離して実行する方法と、負荷テストの一部として実行する方法はありますか?

各 Web パフォーマンス テストを分離して実行する明白な方法は、最初にログイン テストを呼び出すことですが、それは負荷テスト (ユーザーごとに 1 回だけログインする必要がある場合) の動作が正しくないため、実行できません。 、負荷テストの開始時)。

4

3 に答える 3

5

解決策は、個々の Web パフォーマンス テストにログイン テストを追加することです ("Insert Call to Web Test" を使用) が、コンテキスト パラメーター$LoadTestUserContextの不在を探す "Context Parameter Exists" 条件付きルールによってゲートされます。このパラメーターは、Web テストが負荷テストで実行されている場合にのみ存在します。

このようにして、負荷テストの内外を問わず、ログインを 1 つだけ取得します。

于 2012-05-09T07:05:03.207 に答える
1

PreWebTestFunction の代わりに PreRequest Function を試してみませんか。

Public Overrides Sub PreRequest(sender As Object, e As PreRequestEventArgs)
  MyBase.PreRequest(sender, e)
  Dim cookie As System.Net.Cookie = New System.Net.Cookie(...)
  e.Request.Cookies.Add(cookie)

そうすれば、負荷テストと Web テストの両方が機能します。

于 2015-01-20T05:21:15.270 に答える
0

Visual Studio 2010の負荷テストについてはよくわかりませんが、単一のテストを選択したか、アセンブリ内のすべてのテストを選択したかに関係なく、すべてのテストに対して1回実行されるNUnitと同等のSetUpメソッドが必要なようです。TearDown

少し検索すると、同等のテストがInitandTermテストであることを意味します。

1)負荷テストでシナリオノードを右クリックし、[テストミックスの編集...]を選択します。

2)[テストミックスの編集]ダイアログで、フォームの下部を確認します。2つのチェックボックスが表示されます。1つは初期化テスト用で、もう1つは期間テスト用です。

initテストは各ユーザーの前に実行され、termテストはユーザーが完了すると実行されます。テストという用語を確実に実行するには、負荷テストのクールダウン時間を設定する必要もあります。クールダウン時間は、実行設定ノードのプロパティです。この設定により、期間が完了するとテストがブリードアウトする可能性があります。これは5分に設定できます。クールダウン期間は必ずしも5分間実行されるとは限りません。すべてのタームテストが完了すると終了します。それが20秒かかる場合は、負荷テストが完了します。

于 2012-04-20T08:25:04.710 に答える