4.经验教训

虽然现在 STAF(STAX) 已经比较完善,但在实际使用的过程中,我们还是发现了一些问题。本节介绍这些问题以及解决或者避免这些问题的方法,使读者在碰到这些问题时能够及时的解决它们。

4.1 使用 STAFCMD 的 process 服务,不要使用 STAX 的 process 标签
为了编写 STAX 脚本方便,STAX 定义了 process 标签用来调用 STAF 中的进程(process)服务。但在使用过程中,发现 STAX 的 process 标签在某些情况下存在着一定的问题,其所调用的进程不能返回。 代码 11 的 STAX 脚本是这样一个例子。

代码 11:process 标签不能返回

    <process>
      <location>'linuxServer' </location>
      <command>'ls'</command>
      <parms>'-l'</parms>
    </process>

代码 11 调用 Linux 机器上的 ls 命令,并且传给 ls 命令 -l 参数。使用 STAXMonitor 执行此脚本,任务始终无法返回。因此推荐使用 stafcmd 标签直接调用 STAF 服务,如代码 12 所示。

代码 12:修改后的任务

    <stafcmd>
      <location>'linuxServer'</location>
      <service>'process'</service>
      <request>'start command "ls" parms "-l" wait '</request>
    </stafcmd>

4.2 在 Windows 平台上不要使用 STDOUT 重定向输出

STAF 使用 STDOUT 来为启动的进程重定向输出,类似于>参数,比如 ls -l > ls.log。但在 Windows 平台使用中,我们发现使用 STDOUT 会带来一些问题。 如果调用的进程为批处理文件,并且此批处理文件中包含某些特定的功能,比如 xcopy,则 xcopy 将不会工作。另外一些检查目录和文件的命令也不能与 STDOUT 共存。 在 Linux 环境中并不存在这样的问题。因此,如果需要在 Windows 平台中使用重定向输出的功能时,建议使用>来重定向输出。

4.3 使用 STAXMonitor 监控任务的执行情况

对于 STAF 和 STAX 新手来说,尽可能使用 STAXMonitor 来监控 STAX 任务的执行情况。STAXMonitor 为我们提供了足够详细的信息,比如测试用例的执行结果,任务执行的消息,当前执行的命令。 使用 STAXMonitor 有助于我们对正在进行的任务进行分析并且监控其执行情况和结果。

STAXMonitor 在 STAX 安装文件中,可以用java -jar STAXMon.jar来启动 STAXMonitor。STAXMonitor 的界面如图 3 所示。

图3. STAXMonitor 运行界面

STAXMonitor 会显示当前正在运行的 STAX 任务,任务号,任务名字,功能,开始时间,执行时间以及结果。Monitored 表示是否正在使用 STAXMonitor 来监控任务。 右键单击任务,然后选择 Start monitoring,将出现如图 4 所示的监控界面。