STAF这个测试框架,不仅仅是平时所谓的自动化测试框架,比如关键字驱动还是数据驱动的那种类型的。他分两部分功能:1.跨平台服务2.自动化测试服务。 跨平台服务,比如用一台机器,来把你的build部署到各种不同的平台,比如linux, windows等等。然后,并可以把相应的测试结果收回来,在一台机器上面做分析。所以,可以用这个加上你自己的对被测系统本身的测试框架,联合运作。当然,也可以就用这个来做所有的,但是我感觉,对测试本身的自动化方面的操作不是很方便。要写不少的xml case,很麻烦。51Testing软件测试网1S:EU!nd9@5q6P
其他参考文档: http://staf.sourceforge.net/docs.php51Testing软件测试网 pCamG,i)y(k
下面的文字,主要copy自Baidu百科,是我感觉相对其他地方的而言,总结的比较好的一份文档,里面稍微做了点改动。51Testing软件测试网jx.A1R6mcyM
=====================================================
L|;rAPY*`0STAF
]sS,{8S|\j
}0Software Test Automation Framework (STAF)是由IBM开发的开源、跨平台、支持多语言并且基于可重用的组件来构建的自动化测试框架。它封装了不同平台和不同语言间通信的复杂性,提供了消息、互斥、同步、日志等可复用的服务,使用户可以在此基础上方便快速地构建自动化测试解决方案。STAF在功能级别实施服务调用,51Testing软件测试网miOA^b]M
d4^
各个服务端点(称作STAF客户端)是对等的,从一个端点可直接调用另一端点(在另一台机器运行的程序)提供的服务。
R3ML1~7\{Ta0二、技术特点51Testing软件测试网%]qe#Z,U4DM#`*h$Q
1.将环境需求最小化(包括硬件与软件)
N Z9rT F#z?l0 2.在各种语言中都很容易使用,包括Java,C/C++,Rexx,Perl,TCL,及命令行shell环境51Testing软件测试网b\ wGHd6X8BT
3.易于扩展,让用户能方便的创建一个服务插入到STAF体系中
q/l[t+pde0 STAF比较适应需要构造复杂测试环境的场合,复杂测试环境通常是分布式的,通过STAF将测试任务分发到不同的测试环境去执行,可以方便的测试机的测试 脚本,可以方便的收集测试结果,另外,执行引擎STAX(Software Test Automation eXecution Engine)让STAF的使用变得更简单,测试人员只需要配置XML文件便实现STAF任务管理。51Testing软件测试网(z4~s#d
B2d.ms`
三、Services (服务)
F-Z-}#GxJ-WW|1Y0 [1][2]STAF基于可重用的组件来构建自动化测试框架,这些可重用的组件就是Services(服务)。STAF中所有的组件都是服务。服务是一系列功能的集合。STAF本身是一个后台程序(STAFProc),提供一种轻量级的分发机制,负责把请求转发给这些服务。51Testing软件测试网6W!JX)G+l
STAF中的服务分为两种:internal(内部服务)和external(外部服务)。内部服务被集成进STAFProc中,提供一些关键性的功能,比如数据管理和同步。外部服务由STAFProc动态装入,通过共享库(shared libraries)来访问。51Testing软件测试网5is I
o1Ac
STAF提供了如下几种常用服务:51Testing软件测试网C2b&ub(J!??
程序调用服务(Process Service):内部服务,利用此服务,STAF可以调用外部程序。文件系统服务(FileSystem Service):内部服务,利用此服务,STAF可以对文件系统进行操作,比如复制,删除,查看等操作。
r(K;H w}]0日志服务(Log Service):外部服务,帮助用户进行日志的记录和查看。51Testing软件测试网h5as9\E
DX.\n9ra
资源池服务(ResPool Service):外部服务,提供了对于资源池的管理和操作,如查看,创建和删除操作。51Testing软件测试网n$X0t*V5bW_
监控服务(Monitor Service):外部服务,提供对于STAF运行时的监控功能。
_}(Um7Af] ~7fp0信号量服务(Sem Service):内部服务,提供了两种信号量的操作,mutex和event。
X7~7c7V f0压缩服务(Zip Service):外部服务,提供了压缩和解压的功能。
'`cY$n3rt/x0Ping服务(Ping Service):内部服务,类似于操作系统的ping功能,用于检测远程的STAF是否运行。
@${Icl'CV
p*h0变量服务(Var Service):内部服务,提供对于系统或者用户级别的环境变量的操作。STAF还提供了延迟(Delay Service),帮助(Help Service),跟踪(Trace Service)等服务,这里不一一列举。
/[4||qEb0V%s0 每个服务都定义了它能接受的请求格式。STAF通过请求来调用服务的功能,每个请求都以字符串的形式发送,这样可以保证STAF能够跨平台的运行。 每个请求都有三个参数,以系统-服务-参数的形式出现。第一个参数表示此请求需要被发送到的STAF系统,这个参数被STAFProc解析以便确定请求应该被本地处理还是发送到其他的STAF系统。 当这个请求被发送到需要处理的STAF系统后,STAFProc解析第二个参数来判断哪个服务会被调用。最后,STAFProc会把第三个参数转发给需要调用的服务,服务处理这个请求。
bg$N
~'g(fCt
G0 当处理完请求后,服务会返回两种数据:返回码和特定于请求的信息。返回码表示服务处理的结果。特定于请求的信息表示服务返回的具体数据,如果请求成功返回,这些信息将包括这次请求所请求的数据,如果请求出现错误,这些信息将包含额外的诊断信息。
x:^'h:|+wu0 完全使用字符串作为请求响应格式可以简化STAF的很多方面,包括与其他语言的接口,服务之间的通信,跨平台的操作等。其他语言只需要通过一个接口STAFSubmit()来请求STAF的服务,并且只需传递三个字符串参数。服务之间也只需要通过字符串发送接收请求。51Testing软件测试网2t._&dYSj0p*b
STAX是基于STAF的执行引擎,它提供了一种XML格式的工作流语言。用户可以编写XML的脚本文件来通过STAX调用STAF的服务已完成自动化测试。用户可以不需要和编程语言打交道就可以开发出自己的自动化测试环境。STAX提供如下的功能:支持并行运行,用户自定义的运行控制粒度,嵌套测试用例,控制运行时间,支持现有的Java和Python模块等。STAX还提供了一个图形化的监控工具,通过这个工具,用户可以清晰的看出测试运行的位置,状态和出错信息等。51Testing软件测试网Le_8^ G"v1o8L
STAF的安装文件可以从STAF的网站下载。对于不同的平台和JVM环境有不同的安装文件,请选择合适的文件下载。如果下载的是jar文件,要确保需要安装STAF的机器上已经安装有相应的JRE,然后运行如下命令安装STAF:java -jar STAF安装文件.jar。 如果下载的是可执行文件,则直接运行即可。
*V-`b(k%yVe)A)@k0 STAF的安装比较简单,只需要按照向导提示进行操作即可。安装完毕后,可以通过STAFProc命令启动STAF。关闭STAF可以用如下的命令:staf local shutdown shutdown。从这条命令我们可以看出上面提到的STAF的命令格式。local表示STAF的本地系统,shutdown表示服务, 此服务提供了STAF的关闭操作。第二个shutdown表示传递给服务的参数,指示STAF把本地的STAF服务关闭。51Testing软件测试网|0N tK4dn
STAX的安装文件也可以从STAF的网站下载。STAX本身不需要安装,只需要更改STAF的配置文件以便STAF在启动的时候能够加载STAX服务。 从这个角度来说,STAX是STAF的一种外部服务,可以根据需要来决定是否加载它。51Testing软件测试网&b-@n8@Lo]8e
v
下载完STAX后,将其解压到$STAF_Install_Directory\services\stax目录中,然后更改STAF的配置文件STAF.cfg。此文件在$STAF_Install_Directory\bin目录下。 在STAF.cfg文件末尾加上如下的代码,然后重启STAF。51Testing软件测试网*Ku2WV-R cPe
代码1:STAX配置51Testing软件测试网LJB1Akm
M3z;u
SERVICE STAX LIBRARY JSTAF EXECUTE \
VX~H|0 {STAF/Config/STAFRoot}/services/stax/STAX.jar OPTION J2=-Xmx384m51Testing软件测试网le6?2lb
J
SERVICE EVENT LIBRARY JSTAF EXECUTE \
5Dv)FAC'\"M0 {STAF/Config/STAFRoot}/services/stax/STAFEvent.jar51Testing软件测试网6C[g:IJy[
SET MAXQUEUESIZE STAF重启之后,运行命令staf local service list,查看输出结果,如果显示有STAX和EVENT,如图1所示,则说明STAX已经成功加载。51Testing软件测试网 y?$B4dP\6m
图1. STAF服务列表51Testing软件测试网s Z4W(Y5X TdFG
)T2c9l!|m#\*o"`/v1G0 SERVICESTAXLIBRARY JSTAF EXECUTE {STAF/Config/STAFRoot}/services/stax/STAX.jar通知STAF在启动时以名字STAX(这样在STAF服务列表中,我们看到的STAX的服务名字就叫做STAX)来加载STAX.jar,也就是STAX服务。传递的参数J2=-Xmx384m表示更改JVM的堆栈大小。如果STAX会出现OutOfMemory错误,则需要调整这个参数,增加JVM的堆栈大小。建议在加载STAX时总是指定这个参数,并且根据系统环境来调整参数大小。51Testing软件测试网S2er6OF*Z3[_]7Xh Hg8G
SERVICEEVENTLIBRARY JSTAF EXECUTE {STAF/Config/STAFRoot}/services/stax/STAFEvent.jar通知STAF在启动时以名字EVENT来加载STAFEvent.jar。51Testing软件测试网7e[CR,Ai"j%OE"^
如果需要在运行STAX的机器上运行STAX Monitor(STAX任务的监控工具),则需要设置MAXQUEUESIZE,以保证STAXMonitor能够正确运行。
E)[T qeuH:yF0 6.1 STAF Java代码示例51Testing软件测试网1{d\,gA0]9]:v
代码2所示的是STAF Java代码示例。
A;Hf/Bc3p"n
Z0 代码2:STAF Java代码示例
%|7u
pVO8V$Z_0 STAFHandle handle = null;51Testing软件测试网#p
qeD!J
try {51Testing软件测试网i0{;y8V)p vI8j6q]
handle = new STAFHandle("Java_Sample_Test");51Testing软件测试网V1_$bx,\E:}7MYzE
} catch (STAFException e) {
ts
`O/]~0 System.exit(1);
_*N
ID}0 }
cNV2ko{
W0 STAFResult result = handle.submit2("Linux1", "process",51Testing软件测试网"Ra
X4u?#C)P y]K
"start command ls parms -l wait stdout /root/lsjava.log");
%bz$zc3IK0