InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Selenium Grid: 并行的Web测试

作者 Geoffrey Wiseman 译者 乔梁 发布于 2007年9月28日

领域
语言 & 开发,
过程 & 实践
主题
工件和工具 ,
企业级敏捷 ,
单元测试 ,
敏捷
标签
测试 ,
Selenium

很多敏捷团队已经使用了SeleniumWatir等 工具进行验收测试或用户接口测试。这些工具通过驱动Web浏览器的方式反映用户体验,并且为测试那些使用DHTML和Ajax构建的动态接口提供强力支 持。然而,随着更多的团队采纳类似的工具,他们发现,运行这一整套浏览器驱动的Web接口测试会花费很长时间,而导致构建太慢。敏捷团队可能就不得不在全 面测试和构建速度之间做出艰难的选择。使用Selenium的用户中,有人通过使用Selemium-RC运行多个测试,也有人将测试分配给多个 Selemium-RC运行测试,但帮助有限。虽然对于少量并行是有效的,但对于大量并行却无能为力。Selenium用户现在有了另一种选择:Selenium Grid

Selenium Grid是Selenium的一个扩展,也是免费且开源的(Apache License 2.0)。它把管理一小撮Selenium-RC实例的事情和为了运行一个测试而连接一个Selenium实际的事情分开了。实际上,Selenium Grid是提供了一个hub,象个用于控制测试的远程控制器,但是是显式地将测试请求发送到一个或多个机器上的某个有效的Selenium-RC实例上。这个Selenium Hub负责以下这些事情:

  • 将一个SeleniumRC显式地分配给一个具体的测试
  • 限制在每个RC最大并发测试数
  • 将测试屏蔽在一个实际的网格结构之外。

使用Selenium Gird时,Selenium测试可以通过名称选择具体环境的实例,例如某个测试可以运行在Windows XP系统的IE7上,而其它实例却指定运行在Ubuntu的Firefox 1.5之上。

更重要的是,它允许组织构建一个复杂的包含多种必要的测试环境的测试机群,并在其上并行运行一个或多个项目的测试。这将在测试方面有显著的提高,最终减少每个项目所需要的基础设施。某些大型组织对这一点认识的最为深刻(比如Google就在用相似的方法),但即使是对于单个项目的单个机器也是有价值的。

Selenium-RC 最近已经大幅度地改进了性能,包括在单一线程的环境下。但是,多机器多线程测试对于长时间测试来说还是有相当大的益处的。利用足够的测试处理能力和测试的独立性,对于减少最长测试的时间是可行的。

虽然这些测试可以不必知道自己是在单机上顺序运行还是运行于整个机群,但Selenium Grid却不负责这些测试的并行执行,这些是由TestNGParallel JUnitDeepTest for Ruby等完成的。

InfoQ采访了Selenium Grid的团队成员,并问及并行执行测试可能对Selenium测试用例的影响:

我们讨论过隔离性,以及开发Grid之前所面临的问题。我们想现在就把这个担子交给写测试的人,让他们来设计测试用例,以确保它们之间不会相互影响。当 然,这个问题在Gird产生之前就已经存在了。你不想让你的Selenium受其执行顺序的影响,那在每个测试执行之前要做一些数据初始化工作,执行这后 再清理掉。然而,这不是一个优雅的解决方案。理想情况下,你的Selenium test最好只了解这个应用的前端,但实际上,通过暴露一点数据给测试,会使针对具体的Scenarios写测试比较快且方便,而且由于只要较少的导航页 就可达到被测试页,运行时间会较少。嗯,看来有一点儿道理啦!但是不管怎么样,我们还是希望Grid能够支持这两种方式,不久前我们找到了一些方法可以在 数据库层隔离这些测试。虽然还只算是alpha版,但它可能会成为Grid的一部分,也可有是一个独立的项目。

在谈到Selenium Grid的未来时,开发团队认为以下特性中的内容最终会成为Selenium Grid的一部分:

  • 一个更完善的管理控制台
  • 成为Windows服务(以及solaris,Linux等操作系统的等价物)
  • 屏保功能(桌面电脑在闲置时可以加入Grid)
  • 为用Amazon's EC2 (Electronic Compute Cloud)基础设施作为Selenium测试机群提供支持

ThoughtWorks 将为那些希望了解和使用Selenium-RC和Selenium Grid提供支持和咨询服务。

想了解更多,请访问Selenium Grid的网站 (正准备在OpenQA 上立项),也可以在InfoQ了解更多关于测试单元测试 的相关内容。

查看英文原文Selenium Grid: Web Testing in Parallel

译者 乔梁 有十多年软件开发及项目管理经验,专注于提高软件企业提高交付能力。现任百度项目管理部高级架构师。

令人印象深刻 发表人 田 乐 发表于
  1. 返回顶部

    令人印象深刻

    发表人 田 乐

    原先还问TW的朋友如何解决随着测试变多运行时间太长影响持续集成的问题,原来还有这样的解决方案,真是不怕做不到只怕想不到。

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。