配置 Rational Functional Tester (RFT) 在 Hudson/Jenkins 中运行

3
我刚安装了Hudson,运行情况很好。它可以构建,运行JUnit测试并执行CheckStyle分析。
我们的下一步是创建一个安装程序,在实际安装中运行自动化测试。我想要在测试失败时使构建失败,或者至少发布测试结果。我认为我们会周期性地或手动触发这个部分。
我们使用InstallAnywhere进行安装和IBM Rational Functional Tester进行自动化测试。
所以问题是:是否有人创建了类似的设置?是否有任何插件、教程或其他资源可以帮助我?或者您有任何一般的提示或建议。
4个回答

6
Rational Functional Tester的命令行参考:
运行测试的示例命令:

http://publib.boulder.ibm.com/infocenter/rfthelp/v8r0m0/index.jsp?topic=/com.ibm.rational.test.ft.doc/topics/RobotJCommandLine.html

java -classpath "C:\IBM\RFT\FunctionalTester\bin\rational_ft.jar" 
com.rational.test.ft.rational_ft -datastore \\My_project\AUser\RobotJProjects -user admin -project
\\My_project\AUser\TestManagerProjects\Test.rsp -build "Build 1" -logfolder "Default" -log  
"Al_SimpleClassicsA#1" -rt.log_format "TestManager" -rt.bring_up_logviewer true -playback 
basetests.SimpleClassicsA_01

还有一点需要注意,您需要在运行测试的代理计算机上正确配置Windows。这不仅适用于Hudson或RFT,而是所有在Windows上运行的GUI自动化工具。RFT需要一个交互式桌面环境才能够点击按钮等操作。如果您将Hudson代理作为Windows服务运行,则没有桌面。请参见以下链接:Silverlight tests not working unless RDP connection open


3
我们在Hudson上运行了一个相当复杂的分布式构建过程,基本上遵循以下过程:
1. 在Windows上进行测试。 2. 在OSX上进行测试,执行代码覆盖率并将结果推送到服务器。 3. 在OSX Tiger上进行测试。 4. 打包适用于OSX Leopard,并将构建推送到服务器。 5. 打包适用于Windows,并将构建推送到服务器。 6. 更新产品网站。
我们没有使用InstallAnywhere或Rational Functional Tester,但是有类似的机制来代替它们。我们发现让它在Hudson中顺利运行的关键是能够从命令行运行各种步骤。Maven和适当的插件轻松完成了这项任务。因此我的建议就是:使用您正在使用的任何构建工具(ant、maven、?),配置它们以便您可以通过简单的目标传递给构建工具(如mvn test或mvn assembly:assembly)从命令行运行您的Rational Functional Tester和InstallAnywhere。
之后,请确保Hudson运行的任何机器都已安装并配置好所有内容(例如Rational Functional Tester),以便您可以打开命令行并输入目标并正确执行您的测试。
从那时起,在Hudson中连接它就相当简单-只需在配置构建时传递目标即可。

我们使用ANT。你的意思是我应该从ANT运行命令行命令,还是在Hudson作业配置中添加另一个构建步骤?我猜从ANT运行它更有意义,但我也看到你可以添加批处理命令构建步骤。 - Alex
@Alex 是的,我认为你应该尝试向ant添加自定义构建步骤。特别是,我认为ant中的exec任务足以让你从命令行调用其他工具。然后在Hudson中,你可以配置ant构建器来调用你的新任务。 - Clinton

1
我认为最好的答案是将RFT与Hudson/Jenkins集成是没有用的努力。
正如IBM FAQ所述,要使RFT工作,您必须:
  • 登录机器;
  • 屏幕不能被锁定;
  • 如果您是远程连接,则无法最小化连接屏幕。
因此,您无法将Jenkins/Hudson作为服务运行,这使其变得不太有用。您必须从已登录的帐户中运行它。如果您在公司电脑上(如果您使用RFT,这很可能),您可能必须使用防止屏幕保护程序启动的hack。如果屏幕被锁定,您的测试将始终失败。
配置测试以从命令行运行并不难,您只需要注意测试失败和成功时的返回代码即可。

Jenkins/Hudson也会给你一些优势,比如将测试与版本控制集成在一起,可能会在提交时自动运行测试。它还会在测试失败时帮助发送电子邮件。

但是你仍然需要将RFT日志与某种JUnit插件集成,以获得漂亮的报告。并且你还需要编写脚本通过命令行运行测试。

我认为使用持续集成服务器来运行RFT不值得麻烦。最好每天在Windows任务计划程序中运行你的测试。这是一个更简单的解决方案,故障点更少。

或者使用我的最终方案:放弃RFT,改用带有无头浏览器的免费Selenium。


快速观察,如果您正在浏览器中测试基于Web的应用程序,则上述列出的限制不存在-它们适用于桌面应用程序,例如自动化Outlook等。 对于Web应用程序,RFT支持WebUI模式,可以在锁屏等情况下运行,并附带一个Jenkins插件,这与此问题相关。 - MrChris
@MrChris 很高兴知道。谢天谢地,我们公司已经删除了 RFT,这对我们来说不再是问题。接口测试具有重要的用途,并且有许多比 RFT 更好、更便宜的 Web 技术工具可供选择。 - neves

0

我对此有一些通用建议,因为我自己还没有实现过这个功能。 我假设您想通过构建或Hudson进程让Hudson自动运行RFT脚本? 我也想在我的组织中实现类似的功能。

由于组织限制,我还没有能够实现这个功能,但是我已经考虑/完成了以下工作:

  1. 下载了Windows进程查看器,获取了运行测试的命令。
  2. 将其制作成Shell脚本,分离出变量等。
  3. 未来计划是设置一个Windows从机器,该机器将拥有启动测试后所需的所有工具,例如正确版本的浏览器、环境变量和其他所需工具。
  4. Hudson将启动一个进程,运行创建的Shell脚本,运行所有RFT脚本并在从机器上执行必要的操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接