|  | 网站首页 | .Net研究 | 
您现在的位置: 程序员之路 >> .Net研究 >> 相关资讯 >> 学习体会 >> 文章正文
赞助商链接
频 道 导 航
.Net研究频道栏目导航
相 关 文 章
VSTS For Testers读书笔记(12)           
VSTS For Testers读书笔记(12)
作者:oscarxie 文章来源:不详 更新时间:2007-5-10 11:53:45

VSTS For Testers读书笔记(12)
六、创建编码的WebTest
通常,通过将现有的已记录 Web 测试转换为编码的 Web 测试来创建编码的 Web 测试。记录的 Web 测试以“Web 测试编辑器”中可见的请求树开头。编码的 Web 测试是一个生成一系列 WebTestRequest .NET 类,可以使用 C# Visual Basic 编写。可以创建编码的 Web 测试,但推荐做法是将记录的 Web 测试转换为编码的 Web 测试。
将记录的 Web 测试转换为编码的 Web 测试之后,可以像编辑任何其他源代码一样编辑该代码。此外,还可以添加循环和分支结构,动态更改测试中的请求数,以及动态生成测试命中的 URL 集。


生成的代码如下:
namespace PersonalWebsiteTest
{
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Microsoft.VisualStudio.TestTools.WebTesting;
    using Microsoft.VisualStudio.TestTools.WebTesting.Rules;

    [DataSource("DataSource1", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"E:\\My Documents\\Visual Studio 2005\\" +
        "Test.mdb\";Persist Security Info=False", Microsoft.VisualStudio.TestTools.WebTesting.DataBindingAccessMethod.Sequential, "Customer")]
    public class WebTest1Coded : WebTest
    {
        public WebTest1Coded()
        {
            this.PreAuthenticate = true;
        }
        public override IEnumerator<WebTestRequest> GetRequestEnumerator()
        {
            this.BeginTransaction("Login");
            //Web请求1   
            WebTestRequest request1 = new WebTestRequest("http://localhost:40022/Personal%20Website/");
            ExtractHiddenFields rule1 = new ExtractHiddenFields();
            rule1.ContextParameterName = "1";
            request1.ExtractValues += new EventHandler<ExtractionEventArgs>(rule1.Extract);
            yield return request1;
                        
            WebTestRequest request2 = new WebTestRequest("http://localhost:40022/Personal%20Website/default.aspx");
            request2.ThinkTime = 14;
            request2.Method = "POST";
            FormPostHttpBody request2Body = new FormPostHttpBody();
            request2Body.FormPostParameters.Add("__EVENTTARGET", "");
            request2Body.FormPostParameters.Add("__EVENTARGUMENT", "");
            request2Body.FormPostParameters.Add("__VIEWSTATE", this.Context["$HIDDEN1.__VIEWSTATE"].ToString());
            request2Body.FormPostParameters.Add("ctl00$Main$LoginArea$Login1$UserName", "oscarxie");
            request2Body.FormPostParameters.Add("ctl00$Main$LoginArea$Login1$Password", "hae867@!");
            request2Body.FormPostParameters.Add("__EVENTVALIDATION", this.Context["$HIDDEN1.__EVENTVALIDATION"].ToString());
            request2Body.FormPostParameters.Add("ctl00$Main$LoginArea$Login1$LoginButton.x", "110");
            request2Body.FormPostParameters.Add("ctl00$Main$LoginArea$Login1$LoginButton.y", "8");
            request2.Body = request2Body;
            if ((this.Context.ValidationLevel >= Microsoft.VisualStudio.TestTools.WebTesting.ValidationLevel.High))
            {
                ValidationRuleFindText rule2 = new ValidationRuleFindText();
                rule2.FindText = "oscarxie";
                rule2.IgnoreCase = false;
                rule2.UseRegularExpression = false;
                rule2.PassIfTextFound = true;
                request2.ValidateResponse += new EventHandler<ValidationEventArgs>(rule2.Validate);
            }
            yield return request2;

            WebTestRequest request3 = new WebTestRequest("http://localhost:40022/Personal%20Website/Resume.aspx");
            request3.ThinkTime = 3;
            yield return request3;

            WebTestRequest request4 = new WebTestRequest("http://localhost:40022/Personal%20Website/Links.aspx");
            request4.ThinkTime = 2;
            yield return request4;

            WebTestRequest request5 = new WebTestRequest("http://localhost:40022/Personal%20Website/Albums.aspx");
            request5.ThinkTime = 3;
            yield return request5;

            WebTestRequest request6 = new WebTestRequest("http://localhost:40022/Personal%20Website/Default.aspx");
            request6.ThinkTime = 1;
            ExtractHiddenFields rule3 = new ExtractHiddenFields();
            rule3.ContextParameterName = "1";
            request6.ExtractValues += new EventHandler<ExtractionEventArgs>(rule3.Extract);
            yield return request6;

            WebTestRequest request7 = new WebTestRequest("http://localhost:40022/Personal%20Website/Default.aspx");
            request7.Method = "POST";
            FormPostHttpBody request7Body = new FormPostHttpBody();
            request7Body.FormPostParameters.Add("__EVENTTARGET", "ctl00$LoginStatus1$ctl00");
            request7Body.FormPostParameters.Add("__EVENTARGUMENT", "");
            request7Body.FormPostParameters.Add("__VIEWSTATE", this.Context["$HIDDEN1.__VIEWSTATE"].ToString());
            request7Body.FormPostParameters.Add("__EVENTVALIDATION", this.Context["$HIDDEN1.__EVENTVALIDATION"].ToString());
            request7.Body = request7Body;
            yield return request7;

            this.EndTransaction("Login");
        }
    }
}

生成代码的时机:
只有在正常的 Web 测试达到极限后,才能生成进行编码的 Web 测试。在正常的 Web 测试中,最明显的限制是循环(您无法多次运行请求的子集)和分支(您无法有条件地执行一组请求)。生成代码的其他原因包

[1] [2] 下一页

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • .Net研究栏目导航
    网站频道导航