OscarXie.net

关注质量与体验——电子商务与自动化测试

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

四、编辑WebTest
1、QueryString Parameters & Form Post Parameters
2、添加验证规则和自定义验证规则


1、QueryString Parameters & Form Post Parameters查询字符串参数和窗体发布参数

查询字符串参数一般是URL中如XXX.asp?问号后的内容,窗体发布参数是请求页面中Form中的内容,同时也可以
提取出隐藏的窗体参数,如AllGiftPwds={{$HIDDEN1.AllGiftPwds}},这些参数可以使用数据绑定来进行参数化,在后面会介绍到。

2、添加验证规则和自定义验证规则

添加验证规则:
      预定义的规则包括以下几个:
查找文本
窗体区域
最大请求时间
请求属性值
所需的标记
     
      验证级别
      可以使用请求的“验证级别”来控制在特定负载测试中使用哪些验证规则。可以将每个规则的验证级别设置为“低”、“中”或“高”。通常,所设置的验证级别越高,测试的运行速度就越慢。
见下图:
      
      验证规则的执行对性能有一定影响。
 将负载测试设置设为“低”可执行最少的请求设置级别,适合重载测试和压力运行。将负载测试设置设为“高”可执行最多的规则,适合轻量负载测试期间使用。

自定义验证规则:
   通过从 ValidationRule 类派生,可以创建自己的验证规则。
在VSTS For Testers中提供了Test API,因此可以通过建立类库,生成dll文件引用。
1、创建一个自定义验证规则的类库项目

2、在该类库项目中,添加一个对 Microsoft.VisualStudio.TestTools.WebTesting.dll 的引用。


3、创建一个从 ValidationRule 类派生的类。实现 ValidateRuleName 成员。创建CustomValidateTag类,MSDN上提供了示例代码:
using System;
using System.Diagnostics;
using System.Globalization;
using Microsoft.VisualStudio.TestTools.WebTesting;

namespace SampleWebTestRules
{

//*******************************************************************
//The Required Tag Validation Rule is used to check that an HTML tag
// with a particular name is found one or more times in the HTML
// response.
//********************************************************************
public class CustomValidateTag : ValidationRule
{

//*********************************************************************
// Name of the HTML tag that must exist in the HTML document in order
// for the validation rule to succeed.
//*********************************************************************
    public string RequiredTagName
    {
        get { return requiredTagName; }
        set { requiredTagName = value; }   
    }

//*********************************************************************
// The minimum number of times the HTML tag that must exist in the HTML
// document for the validation rule to succeed.
// ********************************************************************
    public int MinOccurrences
    {
        get { return minOccurrences; }
        set { minOccurrences = value; }
    }
   
//***************************************************************
/// Specify a user readable name for use in the user interface.
//*****************************************************************
    public override string RuleName
    {
        get { return "Custom Validate Tag"; }
    }

    public override string RuleDescription
    {
        get { return "Validates that the specified tag exists on the page."; }
    }

   //*******************************************************************
// Validate is called with the test case Context and the
// request Context.
// These allow the rule to examine both the request and the response
// and make sure that the data matchs the required values.
//********************************************************************
    public override void Validate(object sender, ValidationEventArgs e)
    {
        bool validated = false;

        int numTagsFound = 0;
        foreach (HtmlTag tag in e.Response.HtmlDocument.GetFilteredHtmlTags(requiredTagName))
        {
            Debug.Assert(string.Equals(tag.Name, requiredTagName, StringComparison.InvariantCultureIgnoreCase));
            if ( ++numTagsFound >= minOccurrences )
            {
                validated = true;
                break;
            }
        }

        e.IsValid = validated;

    // On failure, set the errorText
        if ( !validated )
        {
            if (numTagsFound > 0)
            {
                e.Message = String.Format("Only found {0} occurences of the tag", numTagsFound);
            }
            else
            {
                e.Message = String.Format("Did not find any occurances of tag '{0}'", requiredTagName);
            }
        }
    }

//*******************************************************************
// Private Members
//*********************************************************************
// Name of the tag required
    private string      requiredTagName;
// Minimum number of times the tag must appear
    private int         minOccurrences;
}
}

4、Build类库,生成dll文件


5、在测试项目中,添加对包含自定义验证规则的类库项目的引用。


6、在“添加验证规则”对话框中就可以显示自定义验证规则


7、CustomeValidateTag Demo下载。

posted on 2007-04-16 18:25  oscarxie  阅读(1731)  评论(0编辑  收藏  举报