作者:empty 出版社:empty |
用于网站应用的测试自动化如今,大多数软件应用都是跑在浏览器中的网站应用。不同公司和组织之间的测试效率迥异。在这个富交互和响应式处理随处可见的时代,很多组织都使用敏捷的方式来开发,因此测试自动化也成为软件项目的必备部分。测试自动化意味着使用软件工具来反复运行项目中的测试,并为回归测试提供反馈。测试自动化有很多优点。大多数都和测试的可重复性和高执行效率这两点相关。市面上有一些商业或开源的同居来辅助测试自动化开发。Selenium应该是最广泛使用的开源方案。本文档将帮助新手和有经验的使用者学习为网站应用创建测试自动化的有效技术。本文档介绍了Selenium, 其细节和从社区中积累的最佳实践。其中包含很多范例。同时, 也将提及Selenium的一些技术细节和推荐用法。
对于一个软件团队的测试过程来说,测试自动化具有提高长期效率的优势。测试自动化包括:·频繁的回归测试·快速反馈·几乎无限制的测试用例迭代执行·支持敏捷和极限编程·遵循测试用例的文档·自定义缺陷报告·能找出手工测试中没发现的缺陷自动化?或不自动化?自动化是否总是好的?什么时候我们应该使用自动化的方式来测试?自动化测试不总是有优势的。这里有一些场景就更适合手工测试。例如,如果一个应用的接在不久的将来会发生变化,那时所有的测试用例都需要重写。有时仅仅是因为没有足够的时间来实现测试自动化。短期来说,手工测试更快捷。如果一个应用的发布日是掐死的,而又没有可用的自动化测试,而测试工作又必须在指定时间内完成,那么此时手工测试也是最佳选择。
Selenium是一组软件工具集, 每一个都有不同的方法来支持测试自动化。大多数使用Selenium的QA工程师只关注一两个最能满足他们的项目需求的工具上。然而, 学习所有的工具你将有更多选择来解决不同类型的测试自动化问题。这一整套工具具各丰富的测试功能,很好的契合了测试各种类型的网站应用的需要。这些操作非常灵活,有多种选择来定位UI元素, 同时将预期的测试结果和实际的行为进行比较。Selenium一个最关键的特性是支持在多浏览器平台上进行测试。Selenium项目简史Selenium诞生于2004年, 当在ThoughtWorks工作的Jason Huggins在测试一个内部应用时。作为一个稳明的家伙,他意识到相对于每次改动都需要手工进行测试,他的时间应该用得更有价值。他开发了一个可以驱动页面进行交互的Javascript库, 能让多浏览器自动返回测试结果。那个库最终变成了Selenium的核心, 它是Selenium RC(远程控制) 和Selenium IDE所有功能的基础。Selenium RC是开拓性的, 因为没有其他产品能让你使用自己喜欢的语言来控制浏览器。Selenium是一个庞大的工具, 所以它也有自己的缺点。由于它使用了基于Javascript的自动化引擎, 而浏览器对Javascript又有很多安全限制, 有些事情就难以实现。更糟糕的是, 网站应用正变得越来越强大,它们使用了新浏览器提供的各种特性,都使得这些限制让人痛苦不堪。
在2006年, 一名Google的工程师, Simon Stewart开始基于这个项目进行开发, 这个项目被命名为Web Driver。此时, Google早已是Selenium的重度用户, 但是测试工程师们不得不绕过它的限制进行工具。Simon需要一款能通过浏览器和操作系统的本地方法直接和浏览器进行通话的测试工具, 来解决Javascript环境沙箱的问题。Web Driver项目的目标就是要解决Selenium的痛点。跳到2008年。北京奥运会的召开显示了中国在全球的实力,大规模的次贷危机引发了“大萧条以来美国最大的经济危机。但是当年最重要的故事是Selenium和Web Driver的合并。Selenium有着丰富的社区和商业支持, 但Web Driver显然代表着未来的趋势。两者的合并为所有用户提供了一组通用功能,并且借鉴了一些测试自动化领域最闪光的思想。或许,关于两者合并的最好解释, 是由Web Driver的开发者, 在2009年8月6日发出的一封给社区的联合邮件中提到的:为什么这两个项目要合并?一部分是因为Web Driver弥补了Selenium的一些短处(例如提供了一组很棒的API, 绕开浏9器的限制) , 一部分是因为Selenium弥补了Web Driver的一些短处(例如对浏览器更广泛的支持) , 还有一部分是因为Selenium的主要贡献者和我都认为这样能为用户提供最优秀的框架。
Selenium-Grid使得Selenium RC解决方案能提升针对大型的测试套件或者哪些需要运行在多环境的测试套件的处理能力。Selenium Grid能让你并行的运行你的测试, 也就是说, 不同的测试可以同时跑在不同的远程机器上。这样做有两个有事,首先,如果你有一个大型的测试套件, 或者一个跑的很慢的测试套件, 你可以使用Selenium Grid将你的测试套件划分成几份同时在几个不同的机器上运行,这样能显著的提升它的性能。同时,如果你必须在多环境中运行你的测试套件,你可以获得多个远程机器的支持,它们将同时运行你的测试套件。在每种情况下, Selenium Grid都能通过并行处理显著地缩短你的测试套件的处理时间。选择合适你的Selenium工具很多人都从Selenium IDE开始学习使用, 如果你不是特别善于编程或者编写一门脚本语言,你可以通过使用Selenium IDE来熟悉Selenium命令。使用IDE, 你能在很短的时间内(有时是数秒)创建简单的测试。但是我们不推荐你使用Selenium IDE来处理所有的测试自动化工作。更高效的做法是, 你需要使用它支持的语言创建和运行你的测试, 无论是Selenium 1还是Selenium 2。至于选择什么语言则取决于你的喜好。在编写本文档时, Selenium的开发者认为Selenium-Web Driver API才是Selenium未来的趋势。但Selenium 1提供向后兼容。同时, 我们也在之前讨论了两者的优势和劣势。我们强烈建议那些初次接触Selenium的用户通读这这个章节的内容。那些第一次使用Selenium, 随意创建了一些测试套件的用户, 你通常会希望从Selenium 2开始, 因为这部分是Selenium在将来都会持续支持的。