CPF3281: New format H created for file H.
CPF3292: File H in library QNOTESAPI restored.
CPF4380: Open attributes not valid in a multithreaded job.
CPF3794: Save or restore operation ended unsuccessfully.
CPD3DC3: Product 5733L85 option 1 release *FIRST processing not complete.
CPD3DFD: *PGM objects for product 5733L85 option 1 release *FIRST not restored.
CPF3D96: Objects for product 5733L85 option 1 release *FIRST not restored.
[size=1.166em]此时,需要使用 SBMJOB 来提交此命令,如代码 8 所示。
代码 8. 提交 Job 示例代码
STAF LOCAL PROCESS START COMMAND SYSTEM PARMS
“SBMJOB CMD(RSTLICPGM LICPGM(5733L85)
OPTION(1) DEV(*SAVF) SAVF(L8530912P/QNOTESAP) LNG(2924))”
WAIT RETURNSTDOUT STDERRTOSTDOUT
STAF LOCAL PROCESS START WAIT RETURNSTDOUT STDERRTOSTDOUT
COMMAND SYSTEM PARMS "RUNDOMCMD SERVER(afiseries)
CMD(CALL PGM(QDOMINO853/DESIGN)) BATCH(*NO)"
[size=1.166em]在采用该自动化测试框架时,用户可以根据实际需要来自定义开发 Control Center。Build Server,是产品 build 的服务器,该服务器上装有 STAF。Control Center 会根据测试人员的设置,来决定是否需要到 build server 上下载指定的 build。Test Client,装有 RFT 和 STAF,是实际运行 RFT 脚本的地方,Control Center 会根据具体的测试任务,发送最新编译、打包好的源代码到测试客户端上,然后在该客户端上完成启动 RFT、运行测试用例等一系列操作。Test Target,是装有 STAF 的 IBM i 系统,也是具体执行测试用例的地方。接收从测试客户端发来的请求,在该 IBM i 机器上执行具体的测试用例。
[size=1.166em]该测试框架通过 STAF 建立了一个对等的测试环境,任意组件之间可以跨平台的互相访问,互相操作。在此测试环境的基础上,再通过 STAX 脚本来定义具体的测试流程,以及每一步需要完成的具体操作。在该测试框架中,用户可以根据实际业务需求,嵌入任何可以通过命令行方式访问的测试工具。这样,一个跨平台的、可扩展的自动化测试环境就建立起来了。具体的操作流程如下描述。
测试人员访问 Control Center,新建或者选择一个已有的测试任务,然后提交该测试任务。在这里,每个测试任务对应了一个 STAX 脚本,在该 STAX 脚本中,描述了具体的测试场景。
Control Center 会根据测试人员提交的任务所对应的 STAX 脚本,一步一步去执行,首先,它会根据测试人员的设置,到指定的 Build Server 上去获取指定的 Build。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE stax SYSTEM "stax.dtd">
<stax>
<defaultcall function="GetBuild"></defaultcall>
<function name="GetBuild" scope="global">
<function-prolog> This function runs how to get build <
/function-prolog>
<function-epilog>
<![CDATA[
<P>read user input and change it to the library name
based on some rules</P>
<P>check the library whether exists on build machine</P>
<P>get the specified library from the build machine</P>
]]>
</function-epilog>
<function-list-args>
<function-required-arg name="bldsvr"></function-required-arg>
<function-required-arg name="target"></function-required-arg>
<function-required-arg name="libname"></function-required-arg>
<function-required-arg name="user"></function-required-arg>
<function-required-arg name="pwd"></function-required-arg>
</function-list-args>
<sequence>
<!--check build-->
<log level="'info'">'check library %s exist or not on %s'
%(libname,bldsvr)</log>
<call function="'CheckBld'">bldsvr,libname</call>
<script>(callRC,callResult) = STAXResult</script>
<if expr="0 != callRC">
<sequence>
<!-- failed to find lib -->
<log level="'fail'">' %s: Failed to find lib %s
on %s' %(STAXCurrentFunction,libname,bldsvr)</log>
<throw exception="'eTerminateFunction'">'lib %s
could not be found on %s '%(libname,bldsvr)</throw>
</sequence>
</if>
<log level="'info'">'user %s will get library %s from %s to %s'
%(user,libname,bldsvr,target)</log>
<sequence>
#get specified library from build server
#check library download successfully or not
</sequence>
</sequence>
</function>
</stax>
[size=1.166em]STAX 脚本里可以定义一个或者多个 Function,但是必须有一个 Main Function。如上代码所示,Function 通过 name 可以被其他的 STAX 脚本调用,function-prolog 节点定义了该 Function 实现任务的基本描述,function-epilog 节点提供了任务的更详细的描述,比如调用该 Function 前提条件,支持哪些操作系统等,function-list-args 定义了 Function 所需的参数。sequence 节点定义了具体的测试操作流程,每一步执行的命令。当在 Function 中按顺序执行的节点不止一个时,必须使用 sequence。STAX 脚本的详细介绍大家可以参考 STAF 官方网站上的 STAX Service User ’ s Guide。
[size=1.166em]最后,查看日志信息。STAX 为用户提供了三种类型的日志:STAX 服务日志、作业日志、作业用户日志。STAX 作业用户日志是最详细的用户操作日志,它详细的记录了每一步测试的操作及执行结果。通过调用 STAF 的一个外部服务 - 日志服务,可以查看 STAX 作业用户日志。命令如下所示。
[size=1.166em]STAF HOSTNAME LOG QUERY MACHINE <Machine Nickname> LOGNAME STAX_JOB_USER
[size=1.166em]命令中斜体标示的参数可以根据实际的值来设置。日志信息如图 7 所示。
图 7. STAX 作业用户日志信息
[size=1.166em]这些日志信息是用户在 STAX 脚本中定义的 LOG 节点信息。如上述 STAX 脚本中,第一条 LOG 节点信息,<log level="'info'">'check library %s exist or not on %s' %(libname,bldsvr)</log>
[size=1.166em]回页首
总结
[size=1.166em]STAF 提供了强大的、扩展性强的自动化开发框架,STAX 作为 STAF 的一个外部服务,为开发流程化的测试脚本提供了强大的支持。二者有效的结合,为 IBM i 平台上的自动化测试提供了良好的解决方案。使用基于 STAF/STAX 的自动化测试框架,可以大大加速开发部署自动化测试的过程、提高测试效率。希望通过本文的介绍,能对准备或者正在 IBM i 上进行自动化测试的同仁们提供些许帮助。
参考资料
学习
“STAF 官方网站”提供了最新的 STAF 信息及帮助。
查看文章“ 利用 STAF 实现程序更新包的自动部署测试
IBM developerWorks 中国 IBM i 专区 专区:提供给 IBM i 用户和开发者的专业技术资源。
获得产品和技术
最受欢迎的 WebSphere 试用软件下载:下载关键 WebSphere 产品的免费试用版。
IBM developerWorks 软件下载资源中心:IBM deveperWorks 最新的软件下载。