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

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

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

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

STAF/STAX 脚本

STAF/STAX 脚本包括以下部分:

环境清理
下载配置 WAS 登录模块脚本
分发和运行配置 WAS 登录脚本
重启 WAS
复制源码到编译机
控制编译机编译源码
复制 WAR 到部署机器上并部署
调用测试代码
收集日志
下面我们分别介绍每个部分的脚本。

环境清理

        在进行自动化编译、部署和测试之前,需要对上次测试的环境进行清理,以除去上次测试的残留,保证测试结果的正确和合理。首先我们需要调用第 4 章的 WAS clean 脚本来删除 WAS 中的登录模块。


清单 6. STAX 调用 WAS clean 脚本示例
               
1 <script>
2   machineList = [‘was602_Linux’, ‘was61_Linux’, ‘was602_Windows’, ‘was61_Windows’]
3 </script>
4 <paralleliterate var=”machine” in=”machineList”>
5   <if expr=“machine.find(‘Linux’)>=0 ”>
6     <sequence>
7       <stafcmd>
8         <location> ‘%s’ % machine </location>
9         <service> ‘process’ </service>
10        <request> ‘start command "/root/script/CleanupEnv.sh" username "root" password
11         "password" workdir "/root/script" wait stdout /root/script/cleanupEnv%s.log'
12         % machineName
13        </request>
14      </stafcmd>
15    </sequence>
16  </if>
17  <if expr=“machine.find(‘Windows)>=0 ”>
18    <sequence>
19      <stafcmd>
20        <location> ‘%s’ % machine </location>
21        <service> ‘process’ </service>
22        <request> ‘start command "C:/script/CleanupEnv.bat" username "Administrator"
23          password "password" workdir "C:/script" wait stdout
24          C:/script/cleanupEnv%s.log' % machineName
25        </request>
26      </stafcmd>
27    </sequence>
28   </if>
29 </paralleliterate>

        在清单 6 中,我们把系统分成了两套环境,Windows 系统和 Linux 系统,针对于不同的环境,cleanupEnv 脚本有不同的路径和后缀名。首先 4-29 行使用了并行的遍历来分别在各个系统上调用 cleanupEnv 脚本。在第 5 行和第 17 行中,if 语句使用的 expr 用 python 来解析,因此可以用 python 来写一些复杂的比较和判断语句。find 函数表示在字符串中查找指定的字符串。

        5-16 行针对于 Linux 的系统,使用 root 用户来调用 CleanupEnv.sh 脚本。17-28 行针对于Windows 系统,使用 Administrator 用户来调用 CleanupEnv.bat 脚本。

CleanupEnv 脚本有两种储存方法:

        事先存放在各个测试机器上 
        存放在 CruiseControl 控制机器上,然后由 STAX 来根据环境来分发这些脚本。 
        一般情况下,推荐使用第二种方法。脚本分布在不同的机器上,如果发生一点小的改动,极易引起脚本的不同步。使用第二种方法,不仅会避免这个问题,而且只需改动一个脚本,将极大的节省测试人员的工作量。使用第二种方法只需在第 7 行和第 19 行前面加上 STAF 复制文件的命令即可。在 Linux 上如下所示:


清单 7. STAX 分发 CleanupEnv 脚本示例
               
<stafcmd>
  <location> ‘%s’ % machine </location>
  <service> ‘fs’ </service>
  <request> ‘copy FILE "D:/sample/CleanupEnv.sh" TODIRECTORY /root/script/’
  </request>
</stafcmd>
        把文件复制到 Linux 上需要注意一个问题,就是文件的某些属性可能没有被复制,比如可执行属性,因此需要使用下面的命令来更改文件的属性,以便用户能够执行此文件。

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号