快速上手
如果你对 Selenium 自动化测试已经非常熟悉,你仅仅需要一个快速上手来使程序运行起来。本章节的内容能满足不同的技术层次,但是如果你仅仅需要一个可以快速上手的指引,那么显得有点多。如果是这样,你可以参考 Selenium Wiki 的相关文章。
什么是 Selenium-Grid ?
Selenium-Grid 允许你在多台机器的多个浏览器上并行的进行测试,也是说,你可以同时运行多个测试。本质上来说是,Selenium-Grid 支持分布式的测试执行。它可以让你的测试在一个分布式的执行环境中运行。
何时需要使用
通常,以下两种情况你都会需要使用 Selenium-Grid。
在多个浏览器中运行测试,在多个版本的浏览器中进行测试,或在不同操作系统的浏览器中进行测试。
减少测试运行时间。
Selenium-Grid 通过使用多台机器并行地运行测试来加速测试的执行过程。例如,如果你有一个包含100个测试用例的测试套件,你使用 Selenium-Grid 支持4台不同的机器(虚拟机或实体机均可)来运行那些测试,同仅使用一台机器相比,你的测试所需要的运行时间大致为其 1/4。对于大型的测试套件和那些会进行大量数据校验的需要长时间运行的测试套件来说,这将节约很多时间。有些测试套件可能要运行好几小时。另一个需要缩短套件运行时间的原因是开发者检入(check-in)AUT 代码后,需要缩短测试的运行周期。越来越多的团队使用敏捷开发,相比整夜整夜的等待测试通过,他们希望尽快地看到测试反馈。
Selenium-Grid 也可以用于支持多执行环境的测试运行,典型的,同时在多个不同的浏览器中运行。例如,Grid 的虚拟机可以安装测试必须的各种浏览器。于是,机器 1 上有 ie8,机器 2 上有 ie9,机器 3 上有新版的 chrome,而机器 4 上有新版的 firefox。当测试套件运行时,Selenium-Grid 可以使测试在指定的浏览器中运行,并且接收每个浏览器的运行结果。
另外,我们可以拥有一个装有多个类型和版本都一样的浏览器 Grid。例如,一个 Grid 拥有 4 台机器,每台机器可以运行 3 个 firefox 12 实例,形成一个 firefox 的服务农场。当测试套件运行时,每个传递给 Selenium-Grid 的测试都被指派给下一个可用的 firefox 实例。通过这种方式,我们可以使得同时有 12 个测试在并行的运行以完成测试,显著地缩短了测试完成需要的时间。
Selenium-Grid 非常灵活。以上两个例子可以联合起来使用,这样可以可以使得不同类型和版本的浏览器有多个可运行实例。使用这样的配置,既并行地执行测试,同时又可以测试多个浏览器类型和版本。
Selenium-Grid 2.0
Selenium-Grid 2.0 是在编写本文时(5/26/2012)已发布的新版本。它同版本 1 有很多不同之处。在 2.0 中,Selenium-Grid 和 Selenium-RC 服务端进行了合并。现在,你仅需要下载一个 jar 包可以获得它们。
Selenium-Grid 1.0
版本 1 是 Selenium-Grid 的第一个发布版本。如果你是一个 Selenium-Grid 新手,你应该选择版本 2 。新版本已经在原有基础上进行了更新,页增加了一些新特性,并且支持 Selenium-WebDriver。一些老的系统可能仍然在使用版本 1.关于 Selenium-Grid 版本 1 的信息可以参考 Selenium-Grid website
Selenium-Grid 的 Hub 和 Nodes 是如何工作的?
Grid 由一个中心和一到多个节点组成。两者都是通过 selenium-server.jar 启动。在接下来的章节中,我们列出了一些例子。
中心接收要执行的测试信息,包括在哪些平台和浏览器执行等。它知道每个注册了的节点的配置。根据测试信息,它会选择符合需求的节点进行测试。一旦选定了一个节点,测试脚本会初始化 Selenium 命令,并且由重心发送给选定的要运行测试的节点。这个节点会启动浏览器,然后在浏览器中执行这个 AUT 的 Selenium 命令。
我们提供了一些图标来演示其原理。第二张图标是用以说明 Selenium-Grid 1 的,版本 2 也适用并且对于我们的描述是一个很好的说明。的区别在于相关术语。使用“Selenium-Grid 节点”替换“Selenium Remote Control”即符合我们对 Selenium-Grid 2 的描述。
下载
下载过程很简单。从 SeleniumHq 站点的下载页面下载 Selenium-Server jar 包。你需要的链接在“Selenium-Server (以前是 Selenium-RC)”章节中。
将它存放到任意文件夹中。你需要确保机器上正确的安装了 java。如果 java 没有正常运行,检查你系统的 path 变量是否包含了 java.exe 的路径。
启动 Selenium-Grid
由于节点对中心有依赖,所以你通常需要先启动一个中心。这也不是必须的,因为节点可以识别其中心是否已经启动,反之亦然。作为教程,我们建议你先启动中心,否则会显示一些错误信息,你应该不会想在第一次使用 Selenium-Grid 的时候看到它们。