4

記録された Web テストで VS2010 の負荷テスト機能を使用する。

記録した Web テストでカスケード エラーが発生するという問題があります。つまり、1 つの要求が失敗すると、他のいくつかの要求も失敗します。通常は最初のエラーのみが関連するため、これによりログに多くの混乱が生じます。

失敗した検証ルールが失敗した時点で Web テストを終了し、残りの要求を実行しないようにする方法はありますか?

(明確にするために、一般的な負荷テストを続行したいのですが、その特定のテストケースの特定の反復を停止するだけです)

私がやろうとしていることを示すサンプルコードを次に示します。

using System.ComponentModel;
using Microsoft.VisualStudio.TestTools.WebTesting;

namespace TestPlugInLibrary
{
    [DisplayName("My Validation Plugin")]
    [Description("Fails if the URL contains the string 'faq'.")]
    public class MyValidationPlugin : ValidationRule
    {
        public override void Validate(object sender, ValidationEventArgs e)
        {
            if (e.Response.ResponseUri.AbsoluteUri.Contains("faq"))
            {
                e.IsValid = false;
                // Want this to terminate the running test as well.
                // Tried throwing an exception here, but that didn't do it.
            }
            else
            {
                e.IsValid = true;
            }
        }
    }
}
4

2 に答える 2

2

これに対する良い解決策を見つけました。詳細についてはこちらのブログを参照してください。ただし、短いバージョンでは e.WebTest.Stop() を使用します。これにより、現在のテストの現在の反復が中止されますが、残りの実行は必要に応じてそのまま残ります。

于 2013-01-25T23:45:57.200 に答える
1

Assert.Fail()を使用します。これにより、テストが停止し、失敗したアサーションと同様に、 AssertFailedExceptionがスローされます。

if (e.Response.ResponseUri.AbsoluteUri.Contains("faq"))
{
    e.IsValid = false;
    Assert.Fail("The URL contains the string 'faq'.");
}

これにより、特定のテストのみが停止します。負荷テストの最後に、この例外で失敗したテストの総数を確認できます。

于 2013-01-22T22:36:59.663 に答える