Board logo

标题: 用 Selenium 自动化验收测试(2) [打印本页]

作者: look_w    时间: 2018-7-16 11:57     标题: 用 Selenium 自动化验收测试(2)

什么是 Selenium?Selenium 是 ThoughtWorks 专门为 Web 应用程序编写的一个验收测试工具。据 Selenium 主页所说,与其他测试工具相比,使用 Selenium 的最大好处是:
Selenium 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在 Windows、Linux 和 MacintoshAnd 上的 Internet Explorer、Mozilla 和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。
使用 Selenium 和在浏览器中运行测试还有很多其他好处。下面是主要的两大好处:
Selenium 的核心,也称 browser bot,是用 JavaScript 编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot 负责执行从测试脚本接收到的命令,测试脚本要么是用 HTML 的表布局编写的,要么是使用一种受支持的编程语言编写的。
Selenium 适用于以下浏览器:
  Internet ExplorerMozillaFirefoxSafariWindows XP6.01.6+, 1.7+0.8+, 0.9+, 1.0  Red Hat Linux  1.6+, 1.7+0.8+, 0.9+, 1.0+  Mac OS X 10.3不支持1.6+, 1.7+0.8+, 0.9+, 1.0+1.3+
Selenium 命令通过 Selenium 命令,脚本编写者可以描述 browser bot 在浏览器中所执行的操作。可以将这些命令分成两类 —— 操作(action)断言(assertion)
在 Selenium 网站上可以找到可用命令的完整列表(见 )。
Selenium 模式可以按两种模式来使用 Selenium:test runnerdriven。这两种模式在复杂性和编写方式方面有所不同。driven 测试脚本编写起来往往要更复杂一些,因为它们是用编程语言编写的。但是如果使用 Python 或 Ruby 之类的高级动态编程语言,那么这种复杂性方面的差异就很小。
两种模式之间最大的不同点在于,如果使用 driven 脚本,测试有一部分在浏览器之外运行,而如果使用 test runner 脚本的话,测试是完全在浏览器中运行的。
不管是 test runner 还是 driven 测试用例,都可以与持续集成工具集成。
test runner 模式Selenium test runner 脚本,也称测试用例(test case),是用 HTML 语言通过一个简单的表布局编写的,如  所示。
清单 1. Selenium 测试用例的结构
1
2
3
4
5
6
7
8
9
10
11
12
<table border="1">
  <tr>
    <td>First command</td>
    <td>Target</td>
    <td>Value</td>
  </tr>
  <tr>
    <td>Second command</td>
    <td>Target</td>
    <td>Value</td>
  </tr>
</table>




test runner 脚本通常与所测试的应用程序(AUT)部署在同一个服务器上。这是因为 browser bot 使用 JavaScript 来模拟用户操作。这些脚本在一个受限制的沙箱环境中运行。如果需要绕过这些限制,可以使用一个代理。
test runner 脚本使用与 xUnit 框架相同的测试套件(test suite)和测试用例概念。测试用例和命令按照它们在测试套件和测试用例中出现的顺序依次执行。在  中:
即使对于非技术人员来说,test runner 脚本也易于阅读和编写。当在一个浏览器中打开  中的例子时,将得到类似这样的一个表:
First commandTargetValueSecond commandTargetValue
接下来,我将描述如何使用命令和断言编写一个简单但是完整的测试用例。
测试用例实例执行  中的测试脚本时,它将执行以下操作:
清单 2. 在测试用例中使用命令和断言的例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<table>
  <tr>
    <td>open</td>
    <td>/change_address_form.html</td>
    <td></td>
  </tr>
  <tr>
    <td>type</td>
    <td>address_field</td>
    <td>Betelgeuse state prison</td>
  </tr>
  <tr>
    <td>clickAndWait</td>
    <td>//input[@name='Submit']</td>
    <td></td>
  </tr>
  <tr>
    <td>verifyTextPresent</td>
    <td>Address change successful</td>
    <td></td>
  </tr>
</table>




测试套件要达到对应用程序的完全测试覆盖,通常需要不止一个测试用例。这就是 Selenium 使用测试套件的原因。测试套件用于将具有类似功能的一些测试用例编成一组,以便让它们按顺序运行。
测试套件和测试用例一样,都是用简单的 HTML 表编写的。Selenium 执行的缺省测试套件的名称是 TestSuite.html。 展示了一个测试套件,该套件像通常的用户一样测试应用程序。注意,测试套件使用一个只包含一列的表,表中的每一行指向一个包含某个测试用例的文件。
清单 3. 测试套件示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<table>
  <tr>
    <td>Test suite for the whole application</td>
  </tr>
  <tr>
    <td><a href="test_main_page.html">Access main page</a></td>
  </tr>
  <tr>
    <td><a href="test_login.html">Login to application</a></td>
  </tr>
  <tr>
    <td><a href="test_address_change.html">Change address</a></td>
  </tr>
  <tr>
    <td><a href="test_logout.html">Logout from application</a></td>
  </tr>
</table>




接下来我将把目光转移到 driven 测试脚本。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0