由于不是很多人使用Visual Studio Team System 的 Web 测试(代号为 Ocracoke)的第一个社区技术预览版本(CTP),我想我应该和大家来分享一些有关Web测试的基本知识。从根本上,Web测试只是一个模拟用户与Web应用程序交互的请求列表。某些Web测试可能会被设计成对一个Web应用程序通过运行负载和其他Web测试来验证这个Web应用程序的功能是否正常。
Web测试通常是由浏览器记录器记录一系列的请求来创建的。下面,您可以看到一个我录制的非常简单的Web测试:
这个Web测试是最基本的。我浏览ASP.NET 商务初学者工具包(又称 IBuySpy)并且向购物车中添加了一个商品。可以单独运行此 Web 测试,以确保没有任何请求导致在服务器错误或作为负载测试来查找任何性能问题中的一部分。如果此级别的测试足够了,你可以深入一步并添加一个验证规则来检验购物车中包含了我购买的商品。你还可以将ProductID参数绑定到数据库以便每个虚拟用户选择一个不同的商品。
Web测试像上面显示的那样能够处理大量的测试场景,但是有时候你需要更多的控制。编码的Web测试使您能够使用分支并循环构造,执行自定义数据绑定,以及更多内容。编码的Web 测试是用.NET 语言编写,您可以使用整个.NET 框架和任何其他代码。我将在今后的文章中深入介绍编码的Web测试,但这里使用C#代码来将上面显示的Web测试转化为编码的Web测试:
public override IEnumerator<WebTestRequest> GetRequests()
{
WebTestRequest request1 = new WebTestRequest("http://www.asp.net/CommerceStarterKit/default.aspx");
request1.ThinkTime = 6;
yield return request1;
WebTestRequest request2 = new WebTestRequest("http://www.asp.net/CommerceStarterKit/productslist.aspx");
request2.ThinkTime = 4;
request2.QueryStringParameters.Add("CategoryID", "15");
request2.QueryStringParameters.Add("selection", "1");
yield return request2;
WebTestRequest request3 = new WebTestRequest ("http://www.asp.net/CommerceStarterKit/productslist.aspx");
request3.ThinkTime = 2;
request3.QueryStringParameters.Add("CategoryID", "17");
request3.QueryStringParameters.Add("selection", "4");
yield return request3;
WebTestRequest request4 = new WebTestRequest("http://www.asp.net/CommerceStarterKit/ProductDetails.aspx");
request4.ThinkTime = 9;
request4.QueryStringParameters.Add("productID", "378");
yield return request4;
WebTestRequest request5 = new WebTestRequest("http://www.asp.net/CommerceStarterKit/AddToCart.aspx");
request5.ThinkTime = 10;
request5.QueryStringParameters.Add("ProductID", "378");
yield return request5;
}
正如您所见,对象模型紧密匹配屏幕快照中看到 Web 测试树视图。 这是因为非编码的Web 测试在内部使用完全相同的对象模型。
您有什么想法?任何关于Web测试,编码的Web测试或是Ocracoke总体上的问题或评论。
JoshCh发布于星期一,2004年8月23日上午9点29