1 STAF的安装与下载:
http://staf.sourceforge.net/
STAF 的安装比较简单,只需要按照向导提示进行操作即可。安装完毕后,可以通过 STAFProc 命令启动 STAF。
关闭 STAF 可以用如下的命令: staf local shutdown shutdown
。
下载完 STAX 后,将其解压到 $STAF_Install_Directory\services\stax 目录中,然后更改 STAF 的配置文件 STAF.cfg。此文件在 $STAF_Install_Directory\bin 目录下。 在 STAF.cfg 文件末尾加上如下的代码,然后重启 STAF。
SERVICE STAX LIBRARY JSTAF EXECUTE {STAF/Config/STAFRoot}/services/stax/STAX.jar \安装完毕后可以通过命令查看staf的 service
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator>staf local service list
Response
--------
Name Library Executable
--------- ---------- -----------------------------------
DELAY
DIAG
ECHO
EVENT JSTAF C:\STAF/services/stax/STAFEvent.jar
FS
HANDLE
HELP
LIFECYCLE
LOG STAFLog
MISC
PING
PROCESS
QUEUE
SEM
SERVICE
SHUTDOWN
STAX JSTAF C:\STAF/services/stax/STAX.jar
TRACE
TRUST
VAR
2 关于什么是STAF(摘自他人文章)
才开始看,后续会根据自己的理解更新。
1.STAF(STAX)
Software Test Automation Framework (STAF) 是开源、跨平台、支持多语言并且基于可重用的组件来构建的自动化测试框架。它为自动化测试建立了基础,并且提供了一种可插拨的机制支持不同的平台和语言。STAF 采用点对点的实现机制,被用来减轻自动化测试的工作负担,加快自动化测试的进程。在 STAF 的环境中,所有的机器都是对等的,没有客户端和服务器的区分。
Software Test Automation eXecution Engine (STAX)是基于 STAF 的执行引擎。它在 STAF 的基础上,帮助用户实现测试用例的分发、部署、执行以及结果分析。STAX 使用了三种技术:STAF, XML 和 Python。简单来说,STAX 在 STAF之 上提供了一些接口,方便用户来操纵STAF进行自动化测试的实现。
我们将简要介绍一下 STAF 和 STAX 中所用到的概念和机制。
1.1 Services (服务)
STAF 基于可重用的组件来构建自动化测试框架,这些可重用的组件就是 Services(服务)。STAF 中所有的组件都是服务。服务是一系列功能的集合。STAF 本身是一个后台程序 (STAFProc),提供一种轻量级的分发机制,负责把请求转发给这些服务。
STAF 中的服务分为两种:internal (内部服务)和 external(外部服务)。内部服务被集成进 STAFProc 中,提供一些关键性的功能,比如数据管理和同步。外部服务由 STAFProc 动态装入,通过共享库(shared libraries)来访问。
STAF 提供了如下几种常用服务:
STAF 还提供了延迟(Delay Service), 帮助(Help Service), 跟踪(Trace Service)等服务,这里不一一列举。
1.2 请求-响应格式
每个服务都定义了它能接受的请求格式。STAF 通过请求来调用服务的功能,每个请求都以字符串的形式发送,这样可以保证 STAF 能够跨平台的运行。 每个请求都有三个参数,以系统-服务-参数的形式出现。第一个参数表示此请求需要被发送到的 STAF 系统,这个参数被 STAFProc 解析以便确定请求应该被本地处理还是发送到其他的 STAF 系统。 当这个请求被发送到需要处理的 STAF 系统后,STAFProc 解析第二个参数来判断哪个服务会被调用。最后,STAFProc 会把第三个参数转发给需要调用的服务,服务处理这个请求。
当处理完请求后,服务会返回两种数据:返回码和特定于请求的信息。返回码表示服务处理的结果。特定于请求的信息表示服务返回的具体数据,如果请求成功返回,这些信息将包括这次请求所请求的数据,如果请求出现错误,这些信息将包含额外的诊断信息。
完全使用字符串作为请求响应格式可以简化 STAF 的很多方面,包括与其他语言的接口,服务之间的通信,跨平台的操作等。 其他语言只需要通过一个接口 STAFSubmit() 来请求 STAF 的服务,并且只需传递三个字符串参数。服务之间也只需要通过字符串发送接收请求。
1.3 STAX
STAX 是基于 STAF 的执行引擎,它提供了一种 XML 格式的工作流语言。用户可以编写 XML 的脚本文件来通过 STAX 调用 STAF 的服务已完成自动化测试。用户可以不需要和编程语言打交道就可以开发出自己的自动化测试环境。STAX 提供如下的功能:支持并行运行,用户自定义的运行控制粒度,嵌套测试用例,控制运行时间,支持现有的 Java 和 Python 模块等。STAX 还提供了一个图形化的监控工具,通过这个工具,用户可以清晰的看出测试运行的位置,状态和出错信息等。 下面我们将通过与 FTP 和 CVS 的协作完成自动化部署来展示 STAF 和 STAX 的功能。
3 将STAF注册为windows 平台服务。
STAF 并没有提供开机自动启动的功能,在 Windows 平台上,只有当某个用户登录后,才会启动 STAF。这对于自动化测试的环境来说不是一个好消息。 因此我们需要自动启动 STAF 的功能,这在 Linux 上比较简单,只要在 /etc/rc.d/rc.local(如果是 SuSE Linux,就是 /etc/rc.d/boot.local)中加入 STAF 的启动命令/usr/local/staf/bin/STAFProc &
就可以了。 Windows 平台上就没有那么方便,因此本小节介绍如何将 STAF 注册为 Windows 的服务,以便能开机自动重启。
instsrv STAF c:\winnt\system32\srvany.exe
。net start staf
或者重启机器来启动STAF服务。staf local service list
来验证STAF是否已经成功启动。参考的文章:
http://www.ibm.com/developerworks/cn/opensource/os-cn-staf/
总的来说这一节不算是原创,主要取自别人的资料
3STAF主要类解析:
以 STAFDemoController为例学习,这个例子位于staf的安装目录\STAF\samples\demo之下。如果需要将java文件导入eclipse 需要加载staf的jar文件,位于C:\STAF\services\stax下。主要有STAFEvent.jar,STAX.jar,STAXDoc.jar,STAXMon.jar
对于Java应用来说主要有四个类:
STAFHandle: This class handles registering and unregistering with STAF as well as submitting service requests.
STAFException: This class is thrown by STAFHandle when errors are encountered.
STAFResult : This class contains the result of the STAFHandle.submit2() method as well as the STAF error constants.
STAFUtil: This class contains STAF utility functions.
每一个java应用程序有且只能建立一个STAFHandle对象。
例子:创建一个STAFHandle 对象。
static STAFHandle handle;
try{
handle = new STAFHandle("STAFDemo_Controller");
}catch(STAFException e)
{
System.out.println("Error registering with STAF, RC: " + e.rc);
System.exit(e.rc);
}
如果要注销service,可以使用handle.unRegister()
提交service请求:
Service requests may be submitted by one of two methods:
l The submit() method works in the traditional Java fashion, in that it throws an exception (a STAFException in
particular) if it encounters an error, and it returns a result string on success.
l The submit2() method returns a STAFResult object in all cases. This object contains the real STAF return code as
well as the result string. It is typically used in places where you wish to avoid catching exceptions when using
STAF.
STAF命令的格式:
The first parameter is where the STAF request is to be executed. In this case, it will be executed locally.
The second parameter is the STAF Service where the request should be routed. In this case, it is the "var"
(Variable) service.
The third parameter is the actual request to be sent to the STAF Service. In this case the request is to resolve the
string "{STAF/Config/Machine}".
即:
每个请求都有三个参数,以系统-服务-参数的形式出现。第一个参数表示此请求需要被发送到的 STAF 系统,这个参数被 STAFProc 解析以便确定请求应该被本地处理还是发送到其他的 STAF 系统。 当这个请求被发送到需要处理的 STAF 系统后,STAFProc 解析第二个参数来判断哪个服务会被调用。最后,STAFProc 会把第三个参数转发给需要调用的服务,服务处理这个请求。
一些术语的解释:
external services: Services for which the executable code for the service resides outside of STAFProc, and which must be registered in the STAF configuration file. Some external services, such as LOG, are
provided with STAF. Others are available from the STAF web site and must be downloaded and installed.
handle A: unique identifier which is used when submitting requests to STAF.
internal services: Services for which the executable code resides within STAFProc
process: A process is an object which can be executed on a test machine. Examples of processes are:executables, shell scripts, etc.
request: A string, sent to a service, which describes the operation the service is to perform.
services: Reusable components that provide all the capability in STAF. Each STAF service provides a specific set of functionality and defines a set of requests that it will accept.
STAF: An automation framework designed around the idea of reusable components
STAF command: A STAF Command consists of a machine, service, and request. The request is sent to the machine,the service on the machine processes the request, and returns a return code and a result, if any.
STAFPro: The daemon process which runs on each STAF system.
4 STAF的配置文件详解:
默认的配置文件位于STAF安装目录\STAF\bin
你也可以自己选择其他的配置文件,但是使用自己的配置文件的时候再启动的时候必须加上参数名称。
例如:C:\Documents and Settings\Administrator>stafproc C:\STAF\bin\test.cfg
Machine : IBM-R86M1CV.cn.ibm.com
Machine nickname : testmachine1
Startup time : 20110914-14:21:14
STAFProc version 3.4.2 initialized
配置文件中的意义:
trace enable tracepoints "error deprecated".当错误条件发生的时候形成trace信息
interface tcp library STAFTCP:在网络上发送和接受STAF请求,默认端口为6500。如果需要定义自己的端口可以使用interface tcp library STAFTCP option Secure=No option Port=6600
trust machine local://local level: 设置本地机器为full access 信任级别
serviceloader Library STAFDSLS: 注册默认的Service Loader。可以动态加载Log,Monitor等服务
此外:
MACHINENICKNAME 可以用来设置机器的别名
利用set可以设置var变量,查看STAF 的var list:STAF local var list
TRUST LEVEL 5 MACHINE tcp://client1.austin.ibm.com用来设置信任等级。利用命令staf local trust list. 可以查看本机的信任机器。
5 STAF的常用命令:
很多命令已经在前面的内容中讲述过了,不再重复。
1.List handle:STAF local handle list handles
2.查看service的帮助:STAF local service help
C:\Documents and Settings\Administrator>STAF LOCAL SHUTDOWN help
Response
--------
*** SHUTDOWN Service Help ***
SHUTDOWN
NOTIFY REGISTER [MACHINE
[PRIORITY
NOTIFY UNREGISTER [MACHINE
[PRIORITY
NOTIFY LIST
HELP
3ping机器以确定能否通过staf 访问
C:\Documents and Settings\Administrator>staf local ping ping
Response
--------
PONG
C:\Documents and Settings\Administrator>staf 10.6.125.164 ping ping
Response
--------
PONG
4 shutdown staf:
STAF local shutdown shutdown
5 通过命令行提交request:
The syntax of this command is:
STAF
which you wish to make a request
6 最后补充staf的架构:
一句话:点对点
STAF runs as a daemon process (called STAFProc) on each system. So, for example, if you wanted to run STAF on your
office machine and 5 test machines in a lab, you would install STAF on all 6 systems. Then, to use STAF in this
environment, you would start STAFProc on all 6 machines. The collection of machines on which you have installed
STAF is referred to as the STAF Environment.
STAF operates in a peer-to-peer environment; in other words, there is no client-server hierarchy among machines running
STAF. Figure 1 illustrates that the STAFProc daemons serve as the communication mechanism over the network