`
lsjlym
  • 浏览: 21494 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Selenium用户指南 - 第二章 入门

 
阅读更多

入门

Web应用程序测试自动化


今天的软件应用, 许多或许是大多数, 是运行在一个浏览器中的基于Web的应用程序. 这些应用程序的测试效果在不同的公司和组织间变化很大. 在一个高度互动和响应的软件时代, 许多组织在开发过程中都会使用某种形式的敏捷方法, 测试自动化正在成为软件项目的必要条件. 测试自动化是问题的答案. 测试自动化意味着使用一个软件工具, 对被测试的应用程序运行可重复的测试. 为回归测试提供响应能力。

测试自动化有许多优点. 大多数是和测试的可重复性, 可执行测试的速度有关. 有大量的、可得到的, 有助于测试自动化开发的商用和开源工具. Selenium可能是最广泛使用的解决方案. 本文档将帮助新手和有经验的用户, 学习有效的技术, 为Web应用程序构造测试自动化.


用户指南介绍Selenium, 讲授它的功能, 和提供常用的、由Selenium社区积累的最佳实践。 提供了许多示例。 同样,提供有关Selenium内部结构的技术信息,和Selenium的推荐使用方法。


测试自动化对改善一个软件团队的测试过程的长期的效能有特别的益处。测试自动化支持:

    • 频繁地回归测试
    • 提供开发者快速地回馈
    • 几乎没有限制测试案例的迭代执行
    • 支持敏捷和极限开发方法
    • 测试案例的文档化
    • 自定义缺陷报告
    • 查找手工测试遗漏的缺陷

自动化还是不自动化?


自动化总是有益的么?应何时决定自动化测试案例?

自动化测试并不总是有益的。有时手工测试可能是更适当地。例如,如果应用程序的用户接口将在不久的将来作出显著地改变,则任何自动化测试可能需要重新编写。同样,有时仅仅是没有足够的时间来构造自动化测试。从短期来看,手工测试可能是更有效的。如果一个应用程序有非常紧的时间期限,没有现成的、可得到的测试自动化,而且测试必须在给定的时间范围内完成,显然手工测试是最佳的解决方案。


Selenium介绍


Selenium是一套不同的软件工具, 每个拥有一个不同的方法来支持测试自动化。大多数的Selenium QA工程师聚焦于一个或两个,很好地满足他们的项目需求的工具,然而,学习所有的工具将给予你许多地、解决不同的测试自动化问题的选项。整个工具集,带有一套丰富的测试特性,特别适合于所有类型的Web应用程序测试的需要。这些操作是高度灵活的,为定位UI元素,比较预期的测试结果和实际的应用程序行为,提供许多选项。Selenium的一个关键特征是,对一个测试可以在多个浏览器平台执行的支持。

Selenium项目简史


Selenium首次诞生在2004年,当Jason Huggins在ThoughtWorks公司测试一个内部的应用程序的时候。作为一个聪明的家伙,他认识到可以更好的使用他的时间比对做出的变更进行手工地测试。他开发了一个可以驱动与页面交互的Javascript库,允许他自动地在多个浏览器上自动地重复运行测试。那个Javascript库最终成为Selenium的内核,成为所有的Selenium RC(远程控制)和Selenium IDE的基础。Selenium RC是开拓性的,因为没有其他的产品允许你从一个你选择的语言去控制浏览器。

尽管Selenium是一个令人吃惊的工具,他也不是没有缺陷。因为他的基于自动化引擎的Javascript,和浏览器应用到Javascript上的安全限制,个别事情成为不可能完成的任务。让事情变得“更糟糕的”是,Web应用程序随着时间的过去变得越来越强大, 使用新浏览器提供的各种各样特定的功能,让这种限制变得越来越令人不快。

在2006年,Google的一个大胆的工程师Simon Stewart启动了一个称之为WebDriver的项目。Google已经是Selenium的一个重量级用户,但测试者不得不工作在有限制的产品上。Simon想要一个测试工具。可以使用浏览器和操作系统的“本地”方法与浏览器直接对话,因此可以避免沙盒Javascript环境的约束。WebDriver项目开始致力于解决Selenium的痛处。

到2008年,北京的奥林匹克运动会标志着中国作为一个全球力量的到来,在美国庞大的抵押贷款违约触发了自大萧条以来最糟糕的国际衰退,黑暗骑士被人们看见了两次,还要遭受不合时宜的失去希斯·莱杰(希斯·安德魯·莱杰,Heath Andrew Ledger,1979年4月4日-2008年1月22日,澳大利亚男演员,曾以《黑暗騎士》一片获得第81屆奧斯卡金像奖)的不良影响。但那一年最重大的故事是Selenium和WebDriver的融合。Selenium有着庞大的社区和商业支持,但WebDriver无疑地是这个工具的未来。两个工具的结合为所有的用户提供了一个公共的特征集,并且带来了某些最耀眼地、在同一个屋檐下的测试自动化思想。或许为何WebDriver和Selenium进行融合的最佳说明是Simon Stewart在2009年8月6日给WebDriver和Selenium社区的一封邮件中的的陈述,

为何两个项目合并?部分是因为WebDreiver标定了某些在Selenium中的不足之处(例如能够去旁路JS沙盒,并且我们有一个华丽的API),部分是因为Selenium标定了某些WebDriver的不足之处(诸如对广泛的浏览器的支持),部分是因为主要的Selenium贡献者和我觉得这是提供用户最佳的可能框架的最佳方式。


Selenium工具套件


Selenium是由多个软件工具组成的。每一个有一个特定的角色

Selenium2(亦称Selenium WebDriver)

Selenium 2是该项目的未来方向,和对Selenium工具包的最新的增加物。这崭新的自动化工具提供了各种各样的令人敬畏的特征,包括一个更有聚合力和面向对象的API,以及一个对旧的实现的限制的解决方法。

正如你在Selenium项目简史中读到的,Selenium和WebDriver的开发者一致同意两个工具个有优势,并且合并这两个项目将产生一个更健壮的自动化工具。

Selenium 2.0是那项努力的产物。它支持WebDriver API及其潜在的技术,以及Selenium 1的技术在WebDriver的底层,为了最大化移植你的测试的灵活性。此外,为了向后兼容Selenium 2仍然运行Selenium 1的Selenium RC接口。

Selenium 1(亦称Selenium RC或远程控制)

正如你在Selenium项目简史中读到的,长期以来Selenium RC是最重要的Seleniumx项目,在WebDriver/Selenium合并产生Selenium 2,这最新的和更加强有力的工具之前。

Selenium 1 仍然被支持(大部分是在维护模式),并且提供了某些在Selenium 2可能暂时没有提供的特征,包括对几个语言(Java,Javascript,Ruby,PHP,Python,Perl和C#)的支持,以及对几乎每种浏览器的支持。

Selenium 集成开发环境

Selenium IDE(集成开发环境)是一个用于构造测试脚本的原型工具。它是一个Firefox插件,并且提供了一个易于使用的开发自动化测试的接口。Selenium IDE有一个录制功能,可以记录用户执行的动作,然后可以导出它们作可重用的脚本,以许多种编程语言中的一种, 稍后可以被执行。

注释

虽然Selenium IDE有一个“保存(Save)”功能,那个允许用户去以基于表格的形式保存这些测试,为了稍后的导入和执行,但它不是设计用于运行你的测试,也不是涉及用于构造所有你将需要的自动化测试。特别是Selenium IDE不为测试脚本提供迭代或条件语句。在编写的时候没有计划去增加这些功能。这理由部分是技术上的,部分是基于Selenium的开发者鼓励在测试自动化中总是需要一定数量的编程工作的最佳实践。Selenium IDE仅仅打算做为一个快速原型工具。Selenium的开发者很认真地推荐,健壮的测试自动化应该使用Selenium 2或Selenium 1,用许多支持的编程语言中的一种。

Selenium栅格

Selenium栅格允许Selenium RC解决方案扩展为大规模的测试集,和为那些必须运行在多个环境下的测试集。Selenium栅格允许你并行地运行你的测试,也就是说,不同的测试可以在相同的时间运行在不同的远程机器上。这有两个好处。首先,如果你有一个大规模的测试集,或一个运行缓慢的测试集,你可以增加它的性能,通过使用Selenium栅格去划分你的测试集,运行不同的测试在同一时间在不同的机器上。同样,如果你必须运行你的测试集在多个环境,你可以有不同的远程机器的支持和运行你的测试在同一时间在不同的远程机器上。在任何一种情形下,Selenium都将充分利用并行处理,极大地改善运行你的测试所花费的时间。

Selenium工具选择


许多人从Selenium IDE开始,如果你还没有编程或脚本语言的经验,你可以使用Selenium IDE去熟悉Selenium命令。使用IDE你可以快速地创建简单的测试,有时甚至在几秒内。

然而,我们不推荐你使用Selenium IDE做所有的自动化测试。为了有效地使用Selenium,你需要构造和运行你的测试,使用Selenium 2或Selenium 1,连同一种支持的编程语言。选择哪种编程语言取决于你。

在编写本文档的时候,Selenium的开发者正计划使Selenium-WebDriver成为Selenium的未来方向。Selenium 1被提供为了向后兼容。我们将在相应的章节讨论两者的优缺点。

我们推荐Selenium的完全新手应通读所有的章节。然而对那些正在使用Selenium并且正在从头开始构造一个新的测试的开发者,你或许想要选用Selenium 2,因为这是Selenium将在未来继续支持的部分。

支持的浏览器平台


在Selenium 2.0, 支持的浏览器将依赖于你使用的是Selenium-WebDriver还是Selenium-RC而变化。

Selenium-WebDriver

Selenium-WebDriver支持下面的浏览器,以及这些浏览其兼容的操作系统。

> Google Chrome 12.0.712.0+

> Internet Explorer 6, 7, 8, 9 - 32 and 64-bit

> Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7

> Opera 11.5+

> HtmlUnit 2.9

> Android – 2.3+ 为移动电话和平板电脑(设备或模拟器)

> iOS 3+ 移动电话(设备或模拟器) 以及3.2+ 平板电脑(设备或模拟器)

注释:在编写文档时,Android2.3有一个模拟器bug,会妨碍驱动器在设备模拟器上正常的工作。然而,在平板电脑模拟器和真实的设备上是工作良好的。

Selenium 1.0和Selenium-RC

这是旧的Selenium 1.0的支持平台。它应该仍然适用于Selenium 2.0的Selenium-RC。

Browser Selenium IDE Selenium 1 (RC) Operating Systems
Firefox 3.x 录制和回放测试 启动浏览器运测试 Windows, Linux, Mac
Firefox 3 录制和回放测试 启动浏览器运测试 Windows, Linux, Mac
Firefox 2 录制和回放测试 启动浏览器运测试 Windows, Linux, Mac
IE 8 测试执行只能通过Selenium RC* 启动浏览器运测试 Windows
IE 7 测试执行只能通过Selenium RC* 启动浏览器运测试 Windows
IE 6 测试执行只能通过Selenium RC* 启动浏览器运测试 Windows
Safari 4 测试执行只能通过Selenium RC 启动浏览器运测试 Windows, Mac
Safari 3 测试执行只能通过Selenium RC 启动浏览器运测试 Windows, Mac
Safari 2 测试执行只能通过Selenium RC 启动浏览器运测试 Windows, Mac
Opera 10 测试执行只能通过Selenium RC 启动浏览器运测试 ;Windows, Linux, Mac
Opera 9 测试执行只能通过Selenium RC 启动浏览器运测试 Windows, Linux, Mac
Opera 8 测试执行只能通过Selenium RC 启动浏览器运测试 Windows, Linux, Mac
Google Chrome 测试执行只能通过Selenium RC 启动浏览器运测试 Windows, Linux, Mac
Others 测试执行只能通过Selenium RC 可能部分支持** 如适用

*通过Selenium IDE在Firfox上开发的测试,可用通过一个简单的Selenium RC命令行在任何其它的浏览器上执行。

**Selenium RC服务器可以启动任何执行,但依赖于浏览器的安全设置,可能有技术上的限制将限制某些功能。

适应性和扩展性


你将发现Selenium是高度灵活的。有许多方法你可以增加功能到Selenium测试脚本和Selenium框架来自定义你的测试自动化。这或许是Selenium与其它自动化工具比较而言最伟大的优势。这些自定义方法描述在贯穿本文档的各个地方。此外,因为Selenium是开源的,源代码总是可以被下载和修改。

本文档包含内容


用户指南的以新用户和那些已经使用过Selenium但仍在寻找附加的知识的用户为目标。我们介绍Selenium给新用户,并且我们不假定先前有Selenium的经验。然而,我们假定用户至少有一个队测试自动化的基本理解。对那些有经验的用户,本指南可以作为一个参考资料。对有经验的用户,我们推荐浏览章节和子标题(选择阅读)。我们提供了有关Selenium架构的信息,常见用法的示例,和一个有关测试设计技术的章节。

本参考在剩下的章节里提供了:

Selenium IDE介绍了Selenium IDE以及描述了如何使用Selenium集成开发环境构造测试脚本。如果你在编程南方面没有多少经验,但仍然希望学习测试自动化,这是你应该开始的地方,你会发现你可以使用Selenium IDE创建一些自动化的测试。同样如果你是一个在编程方面有经验的用户,这一章可能仍然对你来说是有趣,因为你可以使用Selenium IDE来开发你测试的快速原型。这一章也演示了如何“导出”你的测试脚本到一种支持的编程语言,为了增加更多的Selenium IDE不支持的高级能力。Selenium 2 解释了如何使用Selenium 2 开发一个自动化测试程序。Selenium 1 解释如何使用Selenium RC API开发一个自动化的测试程序。提供了许多示例使用编程语言和脚本语言。同样,Selenium RC的安装和设置也被包含在这一章。描述了Selenium RC支持的各种各样的模式或配置,以及他们的优缺点和限制。提供了一个构架图有助于演示这些关键点。对新的Sel-R用户感觉困难的经常发生的公共问题的解决方案也在本章描述,例如,处理安全证书,https请求,弹出和打开一个新的窗口。测试设计考虑这一章提供了Selenium-WebDriver和Selenium RC使用的编程技术。我们也演示了一些在用户论坛上经常提及的一些技术,诸如如何设计setup和teardown函数,如何实现数据驱动的测试(可以在多次测试时改变数据的测试),以及其他的公共的测试自动化编程方法。Selenium栅格这一章仍然没有被开发出来。用户扩展描述了Selenium可以被修改,扩展和自定义的方法。

文档团队 - 作者们的过去和现在


按字母的顺序,下面的人员对本用户指南的创作,它的发布结构或两者做出了重要的贡献。我们非常感激他们所有的人。

Dave Hunt
Luke Inman-Semerau
Mary Ann May-Pumphrey
Noah Sussman
Paul Grandjean
Peter Newhook
Santiago Suarez-Ordonez
Simon Stewart
Tarun Kumar


致谢

特别感谢Patrick Lightbody。作为一个SeleniumHQ站点的管理员,对Selenium RC的主要贡献者,他的支持是无价的,对编写本用户指南的第一个发布。Patrick帮助我们理解我们的读者。他为了我们每一个人发布本文档到seleniumhq.org提供了所需的一切。同样要感谢Andras Hatvani 有关在发布解决方案上的建议,感谢Amit Kumar参与我们的讨论并协助审核本文档。

当然,我们必须对Selenium的开发者致谢。他们真的设计了一个令人惊奇的工具。没有最初的设计者的想象力,和现在的开发者的不断地努力,我们就不会有这样一个很棒的工具需要推荐给你。


© Copyright 2008-2012, Selenium Project. Last updated on Feb 02, 2012.


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics