测试Web Application之一:准备团队

发表于:2012-08-02来源:新浪博客作者:淘宝北京测试沙龙点击数: 标签:测试Web
Web 应用程序 vs. 网页(Web Pages) 我们说的“web application”是什么意思呢?从一个简单的带有一些订单填写的公司站点到象Yahoo或Amazon一样的站点,在web applications里这是一个难以置信的复杂度范围。一种考虑web application 架构的方法是采用传

  Web 应用程序 vs. 网页(Web Pages)

  我们说的“web application”是什么意思呢?从一个简单的带有一些订单填写的公司站点到象Yahoo或Amazon一样的站点,在web applications里这是一个难以置信的复杂度范围。一种考虑web application 架构的方法是采用传统业务交易应用程序的模型,并用网站代替了用户前端。一个客户用钱以从你的公司获得货物和/或服务。使客户和公司之间的交易适当的变得更容易些,这是我们的机制。但不是一名销售代表,办事员或一名出纳员,而是你有一个指向网站的浏览器。公司从未被关闭!用户可以自己服务自己!

  想一想自动贩卖机。它基于用户的输入填写订单,验证资金的转移,并且有一个基本的用户界面。现在增加一些复杂度。使这个用户界面变为一个基于浏览器的解决方案,它必须运行在多个操作系统的多个浏览器上,而不是在touchpad上。噢,在(实时的)跟踪存货时,让机器直接填写来自货舱的订单。并且为完成那个过程,人们不用再往机器中投入钱币,而是在读卡机上刷一下信用卡-一次你将需要让信用卡公司批准每一笔交易。嘿,另一个好点子就是为一个客户分配一个用户名和PIN(个人身份号码)以允许我们保留他们的信息。利用这个方法他们就不需要刷卡及输入发货信息。并且我猜想这些信息实际上也将安全些。

  考虑到这个情景,现在很清楚了web application不是简单的,带些图片和一些HTML或JavaScript的网站。他们和传统的,在前端有些格外复杂度的交易系统很相似。那样一个系统所需的测试工作量比为没有web界面的应用程序多的多。

  开发的生命周期及其对测试的影响

  我们中的大多人曾经都接触过少数的软件开发生命周期模型,例如Spiral 模型,瀑布模型等等。典型的软件项目的阶段有计划,收集需求,分析和设计,实现(又叫编码),集成,测试,发布和维护。你的团队需要知道对于一个web application的项目,这些阶段该如何配合。

  这些阶段有些相似,但是没有以前在工业中看到的不时的冗长的时间量度。Web application是软件,并且同样地和所有软件开发项目一样受到相同规则的影响:至少你需要需求,设计,实现和测试。如果你想限制风险,象其他任何的软件项目一样,你需要做出计划和管理。即使速度和昨天市场部总是想要的产品相似。只不过现在“昨天”甚至更早了。

  最好的减少在测试一个web application 时风险的方法是在项目生命周期的初期增加正式的测试计划和分析。每个项目在项目生命周期的结束部分都有测试这一环节。当开发进度不理想时,测试的时间几乎总是被缩短以便可以迎合发布或“go-live”日期。在项目生命周期的初期增加测试计划将允许测试人员基于风险,进度约束和测试人员的能力及态度区分他们测试工作的优先级别。当在“go-live”之前时间很紧张时,这对管理测试工作量就显得非常重要。

  现在就准备的5种方法

  测试一个有着相对静态内容和极少表格的网页只要花很少的时间。测试一个web application将需要更加复杂的测试策略和更多的时间。由于web开发的本质,你的团队或许不能获得更多的时间,甚至可能比传统开发项目更少。你可以通过利用在初期的“停工期(downtime)”提前来筹备你的测试团队以节约时间。

  · 更多地了解你将工作的环境

  测试人员应该自己熟悉难以捉摸的浏览器,操作系统,web服务器数据库的差异。他们知道更多的关于脚本(ASP, XML, HTML等),数据库(Oracle, SQL等),web服务器(IIS, Apache, 等)和在UI后面的数据传递的知识,他们就会更加有效率。测试人员不是简单地只通过运行UI(在这里,指的是浏览器)来测试功能。如果这样他们将遗漏掉web application要求的其他所有的测试类型,例如性能,安全,数据库完整性等。记住,解密高手不会利用浏览器去破坏网站,他们使用脚本。

  · 寻找或创建合适的测试工具

  成熟的测试工具的缺点是会使自动化变得困难。记得Java第一次击中场景是什么时候吗?开发人员和项目经理都想使用这种新技术。突然间测试人员的负担加重了,两倍,三倍,或更多。仅仅因为配置的数量和可用的成熟的测试和测试工具的缺乏。现在有很多的测试工具可以使用,但是仍然要花时间选择一个适当的工具,学习它的细节,设置自定制它到你的环境中。如果工具是不可用的,你应该即刻查明,并且构建一些你自己的测试应用程序。

  · 创建一个操作系统vs.浏览器版本的矩阵

  要求大量的浏览器和操作系统的兼容性测试。如果你创建了一个操作系统与浏览器版本的矩阵,你将有一种攻击所有变化的方法。

  · 用版本控制或其他配置管理efforts来定义你的开发和测试环境

  如果你正在测试而没有定义你的环境,你将面对以下的问题:

  o 当你没有先前的版本时,你如何回滚代码变更?

  o 新的功能或修复的缺陷如何放到每个版本中?

  o “内部版本(build)”术语意味着在web空间中的任何事情码?

  如果源代码没有被归档或没有打上标签,或在版本控制库中没有进行分支,测试人员就不能够恢复到一个“已知状态”。当环境连续变得更复杂时,没有一个可以用来恢复的先前版本使得隔离和分析缺陷更加困难。如果你安装了一个友好的测试环境,你将不会必须面对由这些问题带来的新问题。

  · 安装一个隔离的测试服务器

  web测试人员的一个常见(并且危险)的习惯是在测试之前移植修复了缺陷和添加了新功能的代码到一个live服务器上,并且在它上面测试。实际上,你的测试团队不应关闭你的网站,他们应建立一个隔离的测试服务器。

  这5 个步骤将帮助你提前为挑战性的任务而准备你的团队。在后面的文章里,我将略述一系列在开始你的测试计划时你将要问到的具体问题,以及怎样将这些问题的答案用于确定并集中你测试的策略。

原文转自:http://www.ltesting.net