使用 CruiseControl 和 STAF 建立复杂环境下的编译和测试自动化

发表于:2008-4-11 12:56

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

复制源码到编译机

        在启动测试过程之前,CruiseControl 会调用 Ant 脚本从 CVS 下载最新的源码,包括 Web Service 源码、测试代码和 RFT 代码。在测试之前,我们需要将它们复制到编译机上进行编译,因为某些代码需要依赖于 WAS 或者 RFT 平台。

复制代码分为三个部分:

        复制 Web Service 源码(被测试代码)。 
        复制测试代码 (Web Service 客户端以及 JUnit 代码) 
        复制 RFT 代码。 
        复制过程和清单 7 类似。

控制编译机编译源码

        每个部分的源码都有 build.xml 文件,所以只需要调用 Ant 命令来编译即可。


清单 13. 编译源码
               
<stafcmd>
<location>'%s' % machine</location>
<service>'process'</service>
<request>'start command "c:/apache-ant-1.6.5/bin/ant.bat -buildfile %s/build.xml
> %s/build.log"  username "Administrator" password "password" workdir %s wait'
% (sourceLocation, sourceLocation, sourceLocation)
</request>
</stafcmd>
 

        与编译 Web Service 源码和测试代码不同的是, RFT 代码需要指定 RFT 安装的位置,这通过传递 Ant 参数来实现,如清单 14 所示。

清单 14. 编译 RFT 测试脚本
               
<stafcmd>
<location>'%s' % machine </location>
<service>'process'</service>
<request>'start command "c:/apache-ant-1.6.5/bin/ant.bat -buildfile %s/buildRFT.xml
-DRFTDriver=%s > %s/build.log"  username "Administrator" password "password"
workdir %s wait' % (sourceLocation, RFTDriver, sourceLocation, sourceLocation)
</request>
</stafcmd>

复制 WAR 到部署机器上并部署

        编译完成后,需要将编译生成的 WAR 文件到部署机器上并且通过部署机器来远程部署所有的WAS 服务器。


清单 15.部署 WAR
               
<stafcmd>
<location>'%s' % machine </location>
<service>'process'</service>
<request>'start command "/root/script/deploywar.sh" username "root"
password "password" workdir "/root/script/work" wait
stdout /root/script/deploy.log STDERRTOSTDOUT'
</request>
</stafcmd>
 

        我们选择通过一台部署机器来部署 WAR 的原因是这样做维护比较简单,如果 WAS 服务器IP 改变或者增加时,只需要更改部署服务器的部署脚本即可,甚至对 STAX 脚本也不用更改。当然也可以选择每台 WAS 分别对自己部署 WAR,这样当 WAS 服务器增加时,需要对 STAX 脚本做一点更改,添加相应的 WAS 服务器。

在编译机器上调用测试代码

        部署完成后,在编译机器上调用测试代码(包括 RFT 代码)来测试示例 Web Service 程序。

调用代码有两种方式:

        STAX 直接调用远程机器上的 Java 命令来执行 
        STAX 调用远程机器上的 Ant 脚本来执行 
        为了演示这两种方式的用法,我们使用 Ant 脚本来调用 JUnit 测试代码,使用 Java 命令来调用 RFT 代码。但在实际使用过程中,我们推荐使用 Ant 脚本来调用。


清单 16. 调用测试代码
               
<stafcmd>
<location>'%s' % machine </location>
<service>'process'</service>
<request>'start command "c:/apache-ant-1.6.5/bin/ant.bat -buildfile %s/runTest.xml
> %s/runTest.log"  username "Administrator" password "password" workdir %s wait'
% (sourceLocation, sourceLocation, sourceLocation)
</request>
</stafcmd>
<stafcmd>
<location>'%s' % machine </location>
<service>'process'</service>
<request>'start command "java -cp "%s\bin\rational_ft.jar" -Drational_ft.install.dir
="%s\bin" com.rational.test.ft.rational_ft -datastore "%s" -rt.log_format "html"
-rt.bring_up_logviewer false -playback testscript.VerifyWebService
>%s/runRFTTest.log"  username "Administrator" password "password" workdir %s wait'
% (RFTLocation, RFTLocation, sourceLocation, sourceLocation, sourceLocation)
</request>
</stafcmd>
 

        第一个 STAFCMD 使用 Ant 来调用 Junit 测试代码,可以看出命令比较简单。而第二个STAFCMD 使用 Java 来调用 RFT 测试脚本,命令要复杂得多,这样会给维护带来一定的困难,因此推荐使用 Ant 来编译和调用。

收集产生的日志文件

        在部署和测试完成后,控制机器需要遍历每个 WAS 服务器(包括编译机和部署机)来收集日志文件,也就是复制文件到控制机器上。这与清单 7 类似。

        至此,我们已经完成了这个 STAX 脚本的编写。需要指出的是,所有的 STAX 脚本只需要在控制机器上执行即可,部署机、编译机以及测试机器完成不知道这些代码的存在,它们只需要安装 STAF 并且信任控制机器即可。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号