[转]追求代码质量: 使用 Selenium 和 TestNG 进行编程式测试
测试笔记
- 笔记:笔记 selenium 软件测试
追求代码质量:使用 Selenium 和 TestNG 进行编程式测试
轻松实现用户验收测试自动化
q].|)V]'o#N0+Py1O"X6s-V0Andrew Glover(aglover@stelligent.com), 总裁, Stelligent Incorporated
3g)B[#@s`^-b0
d2ozo"R"AiMK02007 年 4 月 30 日
(`"M2V;^;Hm FF0Selenium 是一种测试框架,它使您可在 Web 应用程序上轻松地运行用户验收测试(user acceptance test)。本月,Andrew Glover 将向您展示如何以编程的方式运行 Selenium 测试,并使用 TestNG 作为测试驱动程序。在将 TestNG 灵活的测试特性(包括参数化 fixture)添加到 Selenium 固有的工具包后,您需要做的就是借助 DbUnit 和 Cargo 的帮助编写完全自动化、逻辑可重复的验收测试。
-dX:TlOU is s0Selenium 是一种 Web 测试框架,它搭建了验证 Web 应用程序的新途径。与大多数尝试模拟 HTTP 请求的 Web 测试工具不同,Selenium 执行 Web 测试时,就仿佛它本身就是浏览器。当运行自动的 Selenium 测试时,该框架将启动一个浏览器,并通过测试中描述的步骤实际驱动浏览器,用户将使用这种方式与应用程序交互。
zv R!`1z[FD5e#^Q051Testing软件测试网#FY&cuZ O|%I由于开发人员和非开发人员都能够使用 Selenium 轻松地编写测试,使得它从众多测试框架应用程序中脱颖而出。在 Selenium 中,可以通过编程的方式编写测试,或者使用 Fit 样式的表,并且编写了测试后,可以使测试完全自动化。使用一个 Ant 构件(比方说)运行完整的 Selenium 套件非常简单,并且还可以在持续集成(Continuous Integration,CI)环境中运行 Selenium 测试。
'O|'@U _(r0SXRHsg5K1Y@+xf0这个月,我将介绍 Selenium,并逐一查看使它成为优秀 Web 测试框架的一些特性 —— 尤其是在结合使用 TestNG、DbUnit 和 Cargo 这样的软件时。51Testing软件测试网^+EKo.l!c*B5N.p%Z
|
在 Selenium 中,您可以使用自己喜爱的语言或者 Fit 样式的表通过编程来编写测试。从测试的角度来说,不管使用什么语言,测试过程和结果都不会有显著的差别。在此,我希望研究 Selenium 的编程方法,因为在结合使用 TestNG 时,它提供了一些有趣的可行方法能性。
]0_ r)Pq.\CAc|051Testing软件测试网 F|"q&F!i)U/|*z!n使用具有类似 TestNG 这样的框架的 Selenium 进行编程式测试具有这样一个优点,它允许您创建智能 fixture,而使用 Fit 样式的表则很难做到这一点。TestNG 尤其适合与 Selenium 结合使用,因为它使您能够完成其他框架无法做到的测试,例如使用依赖项进行测试,重新运行失败了的测试,以及使用单独文件中定义的参数进行参数化测试。所有这些特性结合在一起,当然能够使它在众多 Web 应用程序测试框架中脱颖而出,但是,正如您将看到的,在完全自动化的验收测试中使用这些特性令它更加出众。51Testing软件测试网1J:I%D]6o`C
&{*\lJ*})c&d,G0配置第一个测试51Testing软件测试网 m5K8g {)@xr P[
a-QVE&E+z;A7Ov0Selenium 架构实际上由两个逻辑实体组成:您编写的代码以及能够简化与测试中的应用程序的交互的 Selenium 服务器。要成功地执行测试,必须要启动并运行 Selenium 服务器实例以及要测试的应用程序。(当然,测试结果取决于您编写的应用程序是否优秀!)
2lzJ S|"M^051Testing软件测试网'L"O#w:cK.D8}幸运的是,Selenium 服务器是一种轻量级程序,可以在实际的测试范围内通过编程启动和停止它。Selenium 服务器(使用Selenium
对象嵌入)的启动和停止由一个 fixture 来执行。51Testing软件测试网;ZoUCY&u,r
要通过编程的方式启动 Selenium 服务器,必须创建一个新的Selenium
对象,并告诉它要使用哪一种兼容的浏览器 —— 我在下面的示例中使用的是 Firefox。您还必须提供运行服务器实例的位置(通常是localhost
,但不是必须的),以及被测试的应用程序使用的基 URL。
在清单 1 中,我配置了一个本地Selenium
实例,使用它在本地安装的 Web 应用程序上驱动 Firefox(http://localhost:8080/gt15/
)。正如您从参数中推断的一样,Selenium
是作为被测试的应用程序的代理,并相应地促进测试。51Testing软件测试网-rs2D#_ jg^
清单 1. 配置 SeleniumServer