如今软件开发依赖于集体的开发和测试。对于部署和测试人员来说,如何从集中的代码管理工具来获取源代码或者代码的编译包并且自动部署和测试变得非常重要。本文借助于STAF(STAX)和FTP以及CVS工具介绍如何自动从FTP或者CVS下载程序的更新包,并且部署到测试环境中。本文首先对自动化测试框架Software Test Automation Framework (STAF)和Software Test Automation eXecution Engine (STAX)进行简要的介绍,然后简单介绍如何安装和配置STAF(STAX)。其次本文将结合一个场景重点介绍STAF(STAX)如何利用CVS和FTP工具进行源代码的下载、编译、分发、部署和测试。最后本文列出了使用STAF(STAX)的经验和教训。51Testing软件测试网AG`Q9Vv%F
读者可以从本文了解到STAF(STAX)的基本概念和用法。本文适合STAF的初学者。51Testing软件测试网4Y4@4O3l3U%Bz#MU
Software Test Automation Framework (STAF)是开源、跨平台、支持多语言并且基于可重用的组件来构建的自动化测试框架。它为自动化测试建立了基础,并且提供了一种可插拨的机制支持不同的平台和语言。STAF采用点对点的实现机制,被用来减轻自动化测试的工作负担,加快自动化测试的进程。在STAF的环境中,所有的机器都是对等的,没有客户端和服务器的区分。51Testing软件测试网 ~)j*F$\-i?5N
Software Test Automation eXecution Engine (STAX)是基于STAF的执行引擎。它在STAF的基础上,帮助用户实现测试用例的分发、部署、执行以及结果分析。STAX使用了三种技术:STAF, XML和Python。简单来说,STAX在STAF之上提供了一些接口,方便用户来操纵STAF进行自动化测试的实现。
EN}J
PN,i0b0我们将简要介绍一下STAF和STAX中所用到的概念和机制。
Q%A-B.F;texS01.1.1 Services (服务)51Testing软件测试网$e1z)A#RQ-r5Xjm7D
STAF基于可重用的组件来构建自动化测试框架,这些可重用的组件就是Services(服务)。STAF中所有的组件都是服务。服务是一系列功能的集合。STAF本身是一个后台程序(STAFProc),提供一种轻量级的分发机制,负责把请求转发给这些服务。51Testing软件测试网BV"i2Q-P,HJ
STAF中的服务分为两种:internal(内部服务)和external(外部服务)。内部服务被集成进STAFProc中,提供一些关键性的功能,比如数据管理和同步。外部服务由STAFProc动态装入,通过共享库(shared libraries)来访问。
"y`)[+~,F7I@0STAF提供了如下几种常用服务:
p*Iw7Ki.O-xfNm2D0- 程序调用服务(Process Service):内部服务,利用此服务,STAF可以调用外部程序。
- 文件系统服务(FileSystem Service):内部服务,利用此服务,STAF可以对文件系统进行操作,比如复制,删除,查看等操作。
- 日志服务(Log Service):外部服务,帮助用户进行日志的记录和查看。
- 资源池服务(ResPool Service):外部服务,提供了对于资源池的管理和操作,如查看,创建和删除操作。
- 监控服务(Monitor Service):外部服务,提供对于STAF运行时的监控功能。
- 信号量服务(Sem Service):内部服务,提供了两种信号量的操作,mutex和event。
- 压缩服务(Zip Service):外部服务,提供了压缩和解压的功能。
- Ping服务(Ping Service):内部服务,类似于操作系统的ping功能,用于检测远程的STAF是否运行。
- 变量服务(Var Service):内部服务,提供对于系统或者用户级别的环境变量的操作。
STAF还提供了延迟(Delay Service),帮助(Help Service),跟踪(Trace Service)等服务,这里不一一列举。
_ ~/y$I2r*Et$Br1d*O01.1.2请求-响应格式51Testing软件测试网D0^7~rkk
|@+Y
每个服务都定义了它能接受的请求格式。STAF通过请求来调用服务的功能,每个请求都以字符串的形式发送,这样可以保证STAF能够跨平台的运行。每个请求都有三个参数,以系统-服务-参数的形式出现。第一个参数表示此请求需要被发送到的STAF系统,这个参数被STAFProc解析以便确定请求应该被本地处理还是发送到其他的STAF系统。当这个请求被发送到需要处理的STAF系统后,STAFProc解析第二个参数来判断哪个服务会被调用。最后,STAFProc会把第三个参数转发给需要调用的服务,服务处理这个请求。51Testing软件测试网;\^0HH|$_KB
当处理完请求后,服务会返回两种数据:返回码和特定于请求的信息。返回码表示服务处理的结果。特定于请求的信息表示服务返回的具体数据,如果请求成功返回,这些信息将包括这次请求所请求的数据,如果请求出现错误,这些信息将包含额外的诊断信息。51Testing软件测试网#knnB9W~H-f:\1WS
完全使用字符串作为请求响应格式可以简化STAF的很多方面,包括与其他语言的接口,服务之间的通信,跨平台的操作等。其他语言只需要通过一个接口STAFSubmit()来请求STAF的服务,并且只需传递三个字符串参数。服务之间也只需要通过字符串发送接收请求。
;@T!qG?
Z7s6B-Z]01.1.3 STAX
/u*pn)|`S0STAX是基于STAF的执行引擎,它提供了一种XML格式的工作流语言。用户可以编写XML的脚本文件来通过STAX调用STAF的服务已完成自动化测试。用户可以不需要和编程语言打交道就可以开发出自己的自动化测试环境。STAX提供如下的功能:支持并行运行,用户自定义的运行控制粒度,嵌套测试用例,控制运行时间,支持现有的Java和Python模块等。STAX还提供了一个图形化的监控工具,通过这个工具,用户可以清晰的看出测试运行的位置,状态和出错信息等。下面我们将通过与FTP和CVS的协作完成自动化部署来展示STAF和STAX的功能。51Testing软件测试网'P)S4^/CXS/Vk6[$A
STAF的安装文件可以从STAF的网站下载。对于不同的平台和JVM环境有不同的安装文件,请选择合适的文件下载。如果下载的是jar文件,要确保需要安装STAF的机器上已经安装有相应的JRE,然后运行如下命令安装STAF:java -jar STAF
安装文件
.jar
。如果下载的是可执行文件,则直接运行即可。51Testing软件测试网8{1l7F-OpV4X
STAF的安装比较简单,只需要按照向导提示进行操作即可。安装完毕后,可以通过STAFProc命令启动STAF。关闭STAF可以用如下的命令:staf local shutdown shutdown
。从这条命令我们可以看出上面提到的STAF的命令格式。local表示STAF的本地系统,shutdown表示服务,此服务提供了STAF的关闭操作。第二个shutdown表示传递给服务的参数,指示STAF把本地的STAF服务关闭。51Testing软件测试网*@sD:ba SJ8W
STAX的安装文件也可以从STAF的网站下载。STAX本身不需要安装,只需要更改STAF的配置文件以便STAF在启动的时候能够加载STAX服务。从这个角度来说,STAX是STAF的一种外部服务,可以根据需要来决定是否加载它。51Testing软件测试网C(Rh#@/j$C&[&jRH'g
下载完STAX后,将其解压到$STAF_Install_Directory\services\stax目录中,然后更改STAF的配置文件STAF.cfg。此文件在$STAF_Install_Directory\bin目录下。在STAF.cfg文件末尾加上如下的代码,然后重启STAF。
Hi'hKza~4J0代码1:STAX配置51Testing软件测试网,I N|Q[0q&i6A)a+x}
SERVICE STAX LIBRARY JSTAF EXECUTE \ {STAF/Config/STAFRoot}/services/stax/STAX.jar OPTION J2=-Xmx384m SERVICE EVENT LIBRARY JSTAF EXECUTE \ {STAF/Config/STAFRoot}/services/stax/STAFEvent.jar SET MAXQUEUESIZE 10000 |
51Testing软件测试网L
Bs#Q\1tP:P^u6{51Testing软件测试网a2Wa@Zn}_y
STAF重启之后,运行命令staf local service list
,查看输出结果,如果显示有STAX和EVENT,如图1所示,则说明STAX已经成功加载。51Testing软件测试网h1W ?4_:zl
51Testing软件测试网W.V&B)m"?(S,K
SERVICE STAX LIBRARY 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软件测试网 q"`pfv
SERVICE EVENT LIBRARY JSTAF EXECUTE {STAF/Config/STAFRoot}/services/stax/STAFEvent.jar
通知STAF在启动时以名字EVENT来加载STAFEvent.jar。
9VFD!vF#d8I*Z4wZR0如果需要在运行STAX的机器上运行STAX Monitor(STAX任务的监控工具),则需要设置MAXQUEUESIZE,以保证STAXMonitor能够正确运行。
$g)`)T@F.msA#h)A8Ng02.1 STAF Java代码示例
NV:uT6v:M4o_g0代码2所示的是STAF Java代码示例。51Testing软件测试网_
Ae+[6e"[1g
w4ki\9b7r0 Reference:51Testing软件测试网@ _1}3P,l!cf:\3e
http://staf.sourceforge.net/index.php51Testing软件测试网n
PxS5]|\
O3`"W