VisualStudio是可以用于性能测试的工具之一。VisualStudioTest版或VisualStudio2010旗舰版为自动化测试提供了支持。本文介绍VisualStudio的Web测试功能。
介绍
对于一个多用户的应用程序,性能是非常重要的。性能不仅是执行的速度,它包括负载和并发方面。性能测试是对以下问题的回答:
我们如何确保我们的新的应用程序将支持预期的用户负载?
如何避免在实际负载条件下会出现的问题?
如何确定响应时间?
如何规划服务器的容量?
VisualStudio是可以用于性能测试的工具之一。VisualStudioTest版或VisualStudio2010旗舰版为自动化测试提供了支持。
VS2010测试类型
VisualStudio支持多种可用于执行自动化测试的测试类型。图1显示了VSTS2010中的主要测试类型。
BasicUnitTest,UnitTest和UnitTestWizard帮助创建新的单元测试的类文件。这将有助于开发人员和测试人员执行单元测试。
CodedUItest用于从手工测试中录制UI活动。
DatabaseUnitTest用于测试存储过程和函数。
GenericTest用于把一个可执行文件封装成一个测试方法。您可以把一个可执行文件封装成一个测试方法并把它包含在自动化测试中。
Orderedtest是在一个特定的顺序中执行多个测试脚本。
WebPerformanceTest用于录制URL并生成用于性能测试的代码。
Web测试
WebPerformanceTest或者Webtest,可以执行Web应用程序测试。我们将通过选择从测试项目模板创建一个测试项目。
一旦你创建好测试项目,右键单击该项目,并添加新的项。选择WebPerformanceTest,这将在InternetExplorer中打开录制器,并开始录制URL和相关参数。
录制
下图显示了Web测试录制器,录制在google上的操作。
相关性(Correlation)
什么是相关性,简而言之就是上一次Web请求的响应和下次请求之间的关联。
例如,当你登录网站时,它会生成一个用于跟踪会话的SID。登录后,这SID被传递给了客户端。随着下一个请求,存储的SID将被发送到服务器。当您使用Web测试录制这一操作时,它会记录这个值并硬编码保存。但是,下一次运行时SID会有所不同。
为了避免这样的情况,需要把登录请求的响应中的SID值关联为下次请求时的参数。首先,我们将提取的SID值,并储存为一个上下文参数,它将被作为参数传递给下一个请求。
上下文参数(ContextParameter)
上下文参数,它就像全局变量一样。如果你想在所有的URL中使用同一个参数,那么把它声明为上下文参数。
例如,我们需要在多种环境中运行该脚本。不需要为每种环境单独录制一遍,而是定义一个名为’WebServer’的上下文参数,并在每个需要用到的URL中使用它。上下文参数需要在两层大括号中引用,如{{Webserver}}。把所有的URL修改为使用相同的上下文参数。当你想在另一个环境中运行该脚本,修改上下文参数的值,所有的URL将自动更新。
QueryString作为URL的一部分被记录下来。
在测试环境中,QueryString输入的值会有所不同,这取决于测试类型:正向测试,反向测试,边界测试等。为了传递多个不同值的参数,我们需要做参数化。
参数化(Parameterization)
为了参数化参数(arguments),需要添加数据源用于选取参数值。右键单击Webtest->选择“AddDataSource”选项。
选择数据文件或数据库,表中包含输入数据。数据预览将显示在向导中。
点击QueryString来查看QueryString的属性。更改该值使用数据源映射如下。
数据源绑定将作为QueryString的值显示
提取规则
提取规则被用于从一个请求的响应中提取的数据。我们有以下提取选项:提取表单字段,提取HTTP头等,提取的值可以用来作为下一个Web请求的一部分,或可用于任何商业决策。
在下面的例子中,我使用”提取文本“选项,提取从服务器传递来的一个id。通过分析HTML输出,我们在规则属性的“StartsWith”和“EndsWith”中填入对应的匹配值。这个HTML响应将作为最终窗口的一部分显示(不久将讨论)。
验证规则
验证规则用于确保你处于正确的页面中。例如登录后,你可能会期待页面中包含”SignOut”文本。以下验证规则,验证当前的响应中是否包含“SignOut”文本。
我们可以使用以下验证规则属性中的任何选项形成验证规则。VisualStudio2010和2008会为录制的测试自动添加响应URL验证。
事务(Transaction)
事务是执行一个特定操作所必需的,一组操作或来回应答的集合。例如,购买一本书的过程中包括的步骤:选择一本书,加入购物车,检查和付款。
定义事务将有助于分析结果。通常情况下,响应时间,响应字节等信息,将分别为每个URL显示。一旦你定义了事务,响应时间和其他衡量数据,将在事务级别显示。
运行测试
当你运行测试,你将看到如下屏幕,在这里你可以看到每个URL的状态,结果在web浏览器中是如何显示的,哪些参数作为请求的一部分传递,HTML响应,上下文参数和其他一些细节。
这是单次运行的情况。如果你想使用参数化来运行多次测试,请单击屏幕顶部的“EditrunSettings“选项。
在这里,您可以指定需要运行测试的次数。每次运行都会从参数数据源中选择一个记录来运行测试。运行次数的同时,我们可以指定浏览器的类型,这样就可以模拟网站在不同的浏览器中的展现。
设置运行设置后,在屏幕顶部选择”Clickheretorunagain“选项。
生成代码
生成代码选项允许您根据脚本创建对应的代码。
这将生成一份和webtest对应的C#代码,同时为它创建一个单独的测试。我们可以修改代码,而不会影响原有的webtest,反之亦然。
我们可以使用C#的功能,来自定义这种编码的Web测试。可以使用循环迭代一个操作或用ADO.NET连接到数据库为请求提取一些数据,强制执行思考时间(在PartII中讨论)和处理WCFServices。
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。