"大不可量,深不可测"---《韩非子·主道》
一个Web系统一旦开发完成,开发人员就可以暂时松一口气了;可是测试呢?后台升级,页面怎么测试?再来一遍?自动化测试或许是一个好的选择,那么怎么组织?按照什么思路进行呢?一方面我摸索着使用VSTS进行自动化测试,摸索了一个路子,正在进行中,或许你有更好的方法,请指点!
本文覆盖一下内容:
1. 定策:先走通 后走对
2. 架子怎么搭?
3.VSTS自动化测试工具能做什么、擅长做什么
定策:先走通后走对
先从这样一个点切入一下:我们做Web开发实际上是Asp.net框架上的一个应用,Asp.net又是什么呢?Asp.net是对HTTP协议的一个封装,使得开发更容易,更快捷…;由于Http协议先天的一些特征,比如http协议是无状态的,所以Asp.net能为我们提供一个服务器端的事件编程模型是戴着锁链跳出了优美的舞姿。
然后,我们的Web自动化测试又在做什么呢?这个问题的答案可以从这样一个角度分析:Web自动化测试工具出现在了之前测试人员出现的位置上,那么由此我们可以判定—1.Web自动化测试/自动化测试工具肯定做了之前测试人员做的事情 2.Web自动化测试/自动化测试工具肯定做了测试人员做不到的事情
我们的Web测试人员对一个Web系统(比如:电子购物网站)进行测试,最基本的要保证能走通若干个重要的流程,比如检索—>查看货物详细信息—>登录—>付费等等,这也就是“走通”;在这个过程中测试人员会判断检索的结果是不是对的,货物详细信息显示的是不是对的..
这就是“走对”;我们的Web测试人员在日常工作中,无意识的就完成了这样两件事情。
当Web自动化测试工具出现在测试人员的位置上的时候它要做到验证是不是能走通,是不是能走对;同时作为工具它还有人工无法替代的功能,比如:它可以定时的执行,反复的执行,及时的反馈,它可以做压力测试… 当自动化测试工具做到了测试人员可以做的事情,同时有做到了测试人员无法做到的事情的时候,它就具有了价值,可以成为产品了.
我们可以看看VSTS的Web自动化测试工具,我们简单看一下MSDN上的描述:可以创建用于广泛的测试目的的 Web 测试:
o 创建执行 Web 应用程序的功能测试。
o 创建数据驱动的测试。
o 创建并运行可以测试应用程序性能的测试。
o 使用 .NET 语言进行测试创作、调试和测试扩展。
VSTS的Web自动化测试工具,提供了一系列的机制来实现上面提到的”走通 走对”,后面我们会提到。
架子怎么搭?
有了目标,下面做的就是搭起架子来,也就是说:我们怎样组织Web自动化测试呢?
怎么容易管理Web自动化测试?怎么样能容易扩展?怎么样做到复用?怎么样做到分工协作?
我们知道HTTP协议是基于请求/响应范式的;那么上面的走通和走对就可以这样重新解释:走对是我们得到了一个正确的响应;走通是发出一个请求之后得到了我们期待的响应;
而对于大多数的Web系统,一个请求或者响应往往直接对应一个页面;于是页面就天然的成为了Web自动化测试中模块的最小单位;而请求与响应之间的关联,或者说页面之间的关联最适合用二元关系表达;于是看下图:
检验一下我们的目标达到了么?
1. 是不是容易管理?测试所依赖的文档和每一个WebTest是一一对应的,当页面发生变化的时候修改测试用例文档,而对应文档编号可以直接定位到该WebTest!文档和WebTest有一个对应关系,发生变化直接按图索骥就可以了;是不是容易管理呢?
2. 是不是容易扩展?比如现在首页也添加了一个热门图书的详细信息的页面链接,我们要做的是什么呢?添加1.2_Default_BookDetail.webtest就可以了;
3. 是不是可以复用?比如3.4_BookDetail – SearchHistory,我们要完成这样的验证:BookDetail是对的,SearchHistory是对的,当二者关联起来的时候也是对的;要完成前面两个目标很简单直接调用3.0_BookDetail.webtest 5.0_SearchHistory.webtest就可以了;(点右键:Add Call To Web Test…)
4. 是不是可以可以分工协作?显然每一个webtest都可以独立的完成,对于重复验证的部分直接调用你的搭档的webtest就可以了,互不影响;这和我们开发中的调用很像
这样做我们得到了什么别的好处?
1. 迅速的定位错误;3.0_BookDetail.webtest 不能通过测试5.0_SearchHistory.webtest能通过测试,3.4_BookDetail – SearchHistory不能通过测试;这说明什么?是因为BookDetail页面的出错了,而且错误导致了后面的SearchHistory页面也是错的。而SearchHistory页面本身是没有问题的。
2. 网站改进用来评估风险;比如我现在要改进3.0_ BookDetail,改进之后哪些页面会不正常,直接看3.1到3.4就可以了;
VSTS自动化测试工具能做什么、擅长做什么
下面仅仅是简单的列了一下,具体的内容请参考MSDN:
· Web 测试通过发出 HTTP 请求在协议层工作。
· Web 测试不运行 JavaScript。但是,可以在运行时通过使用 Web 测试插件、Web 测试请求插件、提取规则或编码的 Web 测试来模拟 JavaScript 操作。
· Web 测试可用于功能测试、性能测试和压力测试。
· 通过在浏览器会话中记录活动,可以创建 Web 测试。
· 还可以使用 Web 测试编辑器手动构建 Web 测试。
· Web 测试在“Web 测试编辑器”中最初是一个作为表示 Web 请求的 URL 列表。如有必要,可以将这些请求转换为 Visual C# 或 Visual Basic 代码(称为“编码的 Web 测试”)。在 Web 测试转换为相应的编码格式之后,可以添加循环和分支构造。
· Web 测试和 Web 测试结果中可能包含敏感信息,这些信息可能会被用来生成对计算机或网络的攻击。Web 测试和 Web 测试结果包含 URL 和连接字符串。在与他人共享测试或测试结果时应注意这一点。
Web 测试可自动处理这些 HTTP 操作:
- 包括 VIEWSTATE 的隐藏字段相关性
- 重定向
- 从属请求
- 身份验证
- 通过 HTTPS/SSL 确保安全