可随意编写所有需要的单元测试和组件测试,但如果要编写一个提供某种类型的用户界面的应用程序(例如 Web 应用程序),则需要测试表示层。以 Web 应用程序为例,需要验证用户场景的导航,另外还要验证场景的功能是正常的。尽管如此,直到最近,这类测试都常被证明是一个负担,需要购买工具来促进开发周期晚期的测试。此外,这些工具几乎不能适合构建过程,即使测试构建得足够早也是如此。
但近几年来,一些着眼于功能测试的开放源码工具脱颖而出;而且,能轻易地在开发生命周期的早期使用这些工具。工具如 Selenium 和 Watir 都是开放源码的;另外,它们构建时考虑到了开发人员。除了用各种语言(例如 Java 编程和 Python)编程定义 Selenium 测试之外,Selenium 也提供了一种易于学习的表格驱动格式,此格式也能被非技术类型使用。
Selenium 框架使用 JavaScript 来执行基于 Web 的接受测试,该测试打开一个浏览器并运行表格驱动测试。例如,清单 6 展示了一个表示简单的 Selenium 测试的 HTML 表。该测试的多个步骤打开一个 Web 应用程序,然后使用有效的用户名和密码执行登录。测试结果生成到一个 HTML 表中,在 Selenium 运行完所有的测试后,能查看该表。
清单 6. 使用 Selenium 的功能测试
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>MyTest</title></head><body><table cellpadding="1" cellspacing="1" border="1"><thead></thead><tbody><tr> <td>open</td> <td>/beer/</td> <td></td></tr><tr> <td>type</td> <td>username</td> <td>admin</td></tr><tr> <td>type</td> <td>password</td> <td>password</td></tr><tr> <td>clickAndWait</td> <td>//input[@value='Login']</td> <td></td></tr><tr> <td>verifyTextPresent</td> <td>Logged in as admin</td> <td></td></tr></tbody></table></body></html> |