WEB性能测试:你应该带上VisualStudio2010

原文地址:http://www.16aspx.com/Article/62

在Web性能测试方面,增加了循环(Loops)和条件(Conditions),让开发人员可以为他们的应用程序写出更复杂,更智能的测试;在负载测试方面,增加了64位代理和控制器,让测试人员可以更高效地利用可用的硬件资源产生负载。此外,改变了负载测试代理和控制器的许可,提供了更多的灵活性,间接地更节省成本。

Web测试允许你在你的ASP.NET Web应用程序上模拟一个用户执行一组操作 – 通常是一个定义好的用例,然后确认程序的响应结果是否与预期结果一致,当你定义好Web测试后,可以将它们组织在一起就构成了负载测试,通过负载测试可以查看你的应用程序在压力下的表现。本文将重点介绍如何使用Visual Studio 2010执行Web测试,负载测试将在另外一篇文章中介绍。

创建Web测试

Web测试通常是使用IE Web测试工具条创建的,它从头到尾详细记录了测试人员在Web应用程序上的点击动作,本文使用的示例代码中,我们的Visual Studio测试项目叫做Com.Benday.WebTesting.WebTests,当然你可以在这个项目上点击右键,选择“新建Web测试”创建一个新的Web测试。

在项目上添加好新的Web测试后,Visual Studio将会打开IE浏览器,你将会在浏览器中看到Web测试记录器面板,然后你可以转到任意一个网站,就象平常浏览一样进行操作,你的每一个操作都将被Web测试记录器记录下来,如图1所示。

图 1 Web测试记录器记录下的操作

当你想要记录的操作执行完毕后,点击“停止”按钮,返回Visual Studio 2010,你将会在一个*.webtest文件中看到你的操作,如图2所示。

图 2 在.webtest文件中的操作记录

更复杂的Web测试

前面录制的Web测试并没有太大的实用价值,它仅仅回放了你的原始操作,并没有检查返回的值,也不知道你的应用程序工作得怎样,但它是创建更复杂,更全面Web测试的基础。

可以使用校验规则,提取规则和Web测试请求中的测试上下文创建更智能的测试,校验规则检查从服务器返回的HTML,验证应用程序是否如你预期那样工作的,提取规则检查HTML,提出值,保存在所谓的测试上下文字典结构中,这些值可用于响应后面的测试请求,创建动态的行为和动态的验证。

本文所使用的示例代码中,我提供了一个管理个人信息的Web应用程序,每个人的记录都有姓名,电话号码,Email地址,加上主键ID,其类图如图3所示,数据库表结构如图4所示,在我们的Web应用程序中将会使用这个ID值确定显示和编辑哪个人的记录。

图 3 Person类图

图 4 Person数据库表结构

假设你想模拟一群人通过你的Web应用程序在数据库中创建个人信息,下面是创建一个新用户的具体步骤:

1、在浏览器中访问应用程序。

2、点击“创建一个新用户”。

2.1验证是否显示了“创建新用户”界面。

2.2验证所有文本输入框是否都是空白的,以及ID值是否等于-1,如果是-1就表明你是在创建新用户,如图5所示。

图 5 创建新用户

3、输入新用户的信息,如图6所示。

图 6 输入新用户信息

4、点击“保存”。验证ID值是否不再是-1,如果不是-1表明新用户已经创建成功,如图7所示。

图 7 用户创建成功后ID值不再是-1

5、返回人员名单界面,验证新创建的用户是否位于列表中,如图8所示。

图 8 新创建的用户位于列表中

6、打开新建用户的记录,验证内容与你输入的是否一致。

如果使用Web测试记录器,可以很容易记录下最基本的操作,但每次新增用户时,ID值由于是主键,因此每次都会发生变化,这就使得回放操作更复杂了。

我们首先从第2步开始,增加一个验证规则检查ID值是否等于-1,要做到这一点,你需要知道两件事:1)哪个Web请求启动“创建新用户”页面,2)显示ID值的ASP.NET Label控件的名字。

解决这两个问题最好的办法是运行Web测试,然后分析其结果,结果记录清晰地记录了你发送给Web应用程序的请求以及从Web应用程序返回的结果,通过查看HTML内容,可以确定每个请求都发生了什么,使用了哪些Web控件,它们的名字是什么都一清二楚,如图9所示。

图 9 点击响应标签,查看HTML,找出显示ID信息Label控件的名字

当你知道这个控件的名字 - 在这个例子叫做m_labelId – 也弄清楚了你需要哪个Web请求后,在这个请求上点击右键,选择“添加验证规则”,打开添加验证规则对话框,如图10所示。

图 10 给请求添加验证规则

在Visual Studio 2010中,你可以使用标签内文本(Tag Inner Text)验证规则读取m_labelId控件的值,如果你使用的是Visual Studio 2008,你需自己编写验证规则获取它的值。

接下来我们创建一个规则,确保保存成功后,人员ID值不等于-1,这一次可以使用查找文本(Find Text)规则,将发现文本则通过(Pass If Text Found)属性设为否(False),如图11所示,如果你发现标签控件的文本和值是-1,规则验证就失败,表明未保存成功。

图 11 给保存按钮增加文本发现验证规则

你可能也想给这个请求增加一个提取规则,提取出m_labelId的值,便于后面的测试使用,对于这个要求,可以使用标签内文本提取规则(Tag Inner Text Extraction Rule)提取m_labelId的值,然后将它放入名叫PersonId的上下文参数中,如图12所示。

图 12 给人员PersonId值添加提取规则

Web测试参数

当你提取到你想要的值,保存在测试上下文后,可以利用Web测试参数将测试上下文中的值插入到Web测试请求中,在我们的Web应用程序示例中,EditPerson.aspx页面使用了一个名叫ID的查询字符串参数载入人员信息。

当你记录Web测试时,它会保存你使用到的值,因此当你重新载入这个人的信息时,你会发现在查询字符串参数的值是一个硬编码的值,如图13所示。

图 13 查询字符串参数的值被硬编码了

如果你点击Id参数,你会看到它的属性对话框,在“值”属性上,你可以点击下拉列表看到所有的数据上下文值,你需要做的是选择其中的PersonId上下文值,如图14所示,之后查询字符串参数的值就是动态填充的了。

图 14 将PersonId 上下文值绑定给Id查询字符串参数

参数化有一个最佳实践应该在所有Web测试中使用 – 参数化Web服务器地址,特别是你打算在最后的负载测试中使用这些Web测试时,幸运的是,在Web测试编辑器中有一个按钮提供了这个功能,如图15所示,参数化Web服务器地址后,所有Web测试请求都会转移到参数化后的Web服务器地址。

图 15 参数化Web服务器按钮

在Web测试的底部你应该看到有一个上下文参数(Context Parameters)节点,展开它就能看到测试期间引用的所有Web服务器,如图16所示,这个功能非常有用,因为你运行Web测试的环境与运行负载测试的环境可能不同,另外,你可能将Web测试和负载测试与每日构建关联起来了,服务器的变化取决于你的构建类型,即使你现在不需要它,你也会喜欢它的灵活性。

图 16 在测试上下文中的参数化Web服务器

数据源和数据绑定

用数据上下文值实现参数化仅仅是构建复杂的Web测试和负载测试的开始,你也可以给Web测试附加一个包含测试数据的数据源,对于数据源也可以运用参数化思想,每执行一次Web测试换一行数据。

获得一个数据源最简单的方法是创建一个用逗号分隔的值组成的CSV文件,并将它导入到你的Visual Studio测试项目,如图17所示。

图 17 逗号分隔的数据源文件

导入这个CSV文件后,在Web测试上点击右键,选择“添加数据源”,如图18所示,启动添加数据源向导,如图19所示。

图 18 给Web测试添加一个数据源

图 19 新建测试数据源向导对话框

当你配置好数据源后,就可以使用参数绑定将数据行值附加给你的Web测试请求,例如,如果你想使用数据源的值填充“创建新用户”Web页面中的字段,你可以将每个textbox控件的表单POST参数绑定到数据源中的字段,如图20,21所示。

图 20 将m_textFirstName POST参数绑定到数据源的FirstName列

图 21 数据绑定表单POST参数

当你运行数据驱动的Web测试时,你会看到测试每执行一次就使用数据源中的一行数据,如图22所示,这样不仅可以创建一个动态的测试,也可以在大数据集上运行测试。

图 22 使用数据源执行多次迭代Web测试

小结

Web性能测试是构成负载测试的基础,是测试你的Web应用程序确保质量和性能的有效方法,由数据驱动的Web性能测试使负载测试更接近真实环境,数据源的每一行数据由负载测试代理用来模拟用户执行类似的用例,但每次用到的数据都不同,如果每次发给服务器的数据都是相同,这样的测试不算真正意义上的测试。

Visual Studio 2010旗舰版中增强的Web测试和负载测试功能为减少QA周期提供了一个极好的方法,可以快速地确定你的应用程序是否如预期那样工作,如果你从Team Foundation Server 2010自动构建执行测试,那么每次构建时都可以执行这些高质量的测试。

本文引用的示例程序全部源代码可从http://visualstudiomagazine.com/~/media/ECG/visualstudiomagazine/Code%20Download/2010/06/BenDay_WebTesting_vs2010.ashx下载。

原文名:Web Performance Testing with Visual Studio 2010

时间: 2024-10-08 20:42:14

WEB性能测试:你应该带上VisualStudio2010的相关文章

Web性能测试

一.引言 随着网络技术的迅速发展,尤其是WEB及其应用程序的普及,各类基于WEB的应用程序以其方便.快速,易操作等特点不断成为软件开发的重点.与此同时,随着需求量与应用领域的不断扩大,对WEB应用软件的正确性.有效性和对WEB服务器等方面都提出了越来越高的性能要求,对WEB应用程序进行有效的系统的测试也逐渐成为人们研究的重要课题. 目前可以见到各种WEB服务器平台,然而根据Mereury的研究报告,98%的WEB服务器都没能达到人们所期望的性能,平均只能发挥人们所期望性能的1/6左右.WEB性能

《零成本实现Web性能测试:基于Apache JMeter》读书笔记

1.性能测试概念 性能测试目的: 评估系统能力,验证系统是否符合预期性能指标 识别系统中的弱点 系统调优,改进系统性能 检测长时间运行可能发生的问题,揭示隐含问题 验证稳定性.可靠性 常见性能指标 B/S架构(h5页面属于B/S架构):一般关注web服务器性能指标 平均每秒钟响应次数=总请求次数/秒数 平均每秒业务脚本迭代次数 成功的请求 失败的请求 成功的点击次数 失败的点击次数 每秒点击次数 每秒成功的点击次数 每秒失败的点击次数 尝试连接数 吞吐量 C/S架构(native属于C/S架构)

web性能测试(ab、siege)

ab 是apache自带的web性能测试工具,安装apache默认安装ab,ab是命令行工具,linux下安装apache后可以直接使用 1.ab简单使用和测试指标介绍 测试用例: ab -n 50 -c 10  www.cnblogs.com/ n代表发送50个请求 c代表并发数量为10 使用ab需要注意,如果url后面没问具体文档路径,则需要缀上 ‘/’ ,否则提示url无效. 返回结果中的测试指标: 第一部分是服务器信息:服务器软件.主机名称.主机端口. 第二部分是文档信息:文档路径和文档

网站Web性能测试:ApacheBench,Webbench,http_load使用教程

网站Web性能测试:ApacheBench,Webbench,http_load使用教程 Web服务器 欲思 10个月前 (05-25) 0评论 一个网站或者博客到底能够承受多大的用户访问量经常是我们在用VPS或者独立服务器搭建网站了最关心的问题,还有不少人喜欢对LNMP或者LAMP进行一些优化以便提高Web性能,而优化后到底有多大的效果,就需要我们对网站进行服务器压力测试了. 目前来说Webbench,Apache Bench,http_load是三款比较流行的网站服务器压力Web性能测试工具

Linux 下 将使用Python-Django开发的web应用布置到服务器上(亲测有效)

写在前面: Django是一个卓越的新一代Web框架,相信使用Python的人对此并不陌生,但将我们完成的web应用布置到到服务器上并不是一件容易的事情. Django详细的教程可以参考http://python.usyiyi.cn/django/index.html. Django有自己的一个调试服务器,通过在项目文件夹下执行: python  manage.py runserver 8080(参数8080是设置的端口号,指明该服务器使用端口号为8080) 但是此语句也仅限在自己的机器上进行调

高性能WEB开发(6) - web性能测试工具推荐

WEB性能测试工具主要分为三种,一种是测试页面资源加载速度的,一种是测试页面加载完毕后页面呈现.JS操作速度的,还有一种是总体上对页面进行评价分析,下面分别对这些工具进行介绍,如果谁有更好的工具也请一起分享下. Firebug: Firebug 是firefox中最为经典的开发工具,可以监控请求头,响应头,显示资源加载瀑布图: HttpWatch : httpwatch 功能类似firebug,可以监控请求头,响应头,显示资源加载瀑布图.但是httpwatch还能显示GZIP压缩信息,DNS查询

切记ajax中要带上AntiForgeryToken防止CSRF攻击

在程序项目中经常看到ajax post数据到服务器没有加上防伪标记,导致CSRF被攻击,下面小编通过本篇文章给大家介绍ajax中要带上AntiForgeryToken防止CSRF攻击,感兴趣的朋友一起学习吧 经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击 在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可. Html.AntiForgeryToken()会生成一对加密的字符串,分别存放在Cookies 和 in

Web性能测试术语

并发用户: 并发一般分为2种情况.一种是严格意义上的并发,即所有的用户在同一时刻做同一件事情或者操作,这种操作一般指做同一类型的业务.比如在信用卡审批业 务中,一定数目的用户在同一时刻对已经完成的审批业务进行提交:还有一种特例,即所有用户进行完全一样的操作,例如在信用卡审批业务中,所有的用户可以一 起申请业务,或者修改同一条记录.另外一种并发是广义范围的并发.这种并发与前一种并发的区别是,尽管多个用户对系统发出了请求或者进行了操作,但是这些 请求或者操作可以是相同的,也可以是不同的.对整个系统而

记得ajax中要带上AntiForgeryToken防止CSRF攻击

经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击 在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可. Html.AntiForgeryToken()会生成一对加密的字符串,分别存放在Cookies 和 input 中. 我们在ajax post中也带上AntiForgeryToken @model WebApplication1.Controllers.Person @{ ViewBag.Title = "In