下午在安装 STAF的过程中感觉此篇比较有用,转载以保存后用
转贴网址: http://qa.blog.163.com/blog/static/1901470022012102494448559/
STAF基本概念
Software Testing Automation Framework 软件测试自动化框架。用以提升测试用例和测试环境的可重用性以及自动化的程度。STAF 为测试人员提供了一个端到端的自动化测试解决方案。
官网:http://staf.sourceforge.net
各个装有staf环境的机器是对等的(Peer to Peer),一个端可直接调用另一个端提供的服务。采用P2P架构,没有服务端,客户端之分,任何一台机器都可以向其它机器发送请求。可以利用STAF的这种特性实现分布式执行的功能。
STAFProc进程
STAF本身是一个后台程序STAFProc,不断监听来自其他对等端点的STAF请求。
STAF服务
STAF所有功能都是通过服务实现的
主要有两种类型的服务:内部服务(Internal Service),外部服务(External Service)。每种服务都可以处理多种请求,每种请求都有安全级别限制
内部服务:开启staf这些服务就可以工作了。一般被集成到STAFProc,一般都是一些比较基本常用的服务。
外部服务:不是staf基本服务,必须将服务注册到staf才可以使用。需要动态载入,可执行代码不在STAFProc中,一般都在jar中或者外部dll库中。
名称 |
属性 |
作用 |
DELAY |
内部服务 |
延时服务,可以提供延时 |
DIAG |
内部服务 |
可以记录一些诊断信息 |
ECHO |
内部服务 |
与PING服务相似,但是可以指定返回值 |
FILE |
内部服务 |
文件服务,可以在不同机器见实现文件创建、查询、拷贝、删除等操作 |
HANDLE |
内部服务 |
句柄服务,可以创建静态句柄,可以删除句柄 |
HELP |
内部服务 |
帮助服务,可以列出很多帮助信息 |
LIFECYCLE |
内部服务 |
可以在STAF启动或者关闭时触发某些事件的发生 |
MISC |
内部服务 |
提供一些杂项信息,如STAF版本,系统基本信息 |
PING |
内部服务 |
判断两台机器是否连通 |
PROCESS |
内部服务 |
开启系统进程 |
QUEUE |
内部服务 |
处理handle中的消息队列 |
SEM |
内部服务 |
信号量服务 |
SERVICE |
内部服务 |
可以查询STAF中所有的服务,可以动态注册或者注销外部服务 |
SHUTDOWN |
内部服务 |
关闭STAF |
TRACE |
内部服务 |
可以跟踪请求提交过程,方便信息查询 |
TRUST |
内部服务 |
信任等级服务,在机器间设置不同的信任等级 |
VAR |
内部服务 |
变量服务,处理STAF中的变量 |
LOG |
外部服务 |
日志服务,可以记录、查询日志信息 |
MONITOR |
外部服务 |
监测服务,监测STAF执行状态 |
RESPOOL |
外部服务 |
资源池服务,可以提供资源 |
ZIP |
外部服务 |
提供ZIP格式的压缩包,压缩、解压缩 |
CRON |
外部服务 |
可以触发一个事件周期发生 |
|
外部服务 |
可以发送邮件 |
EVENT |
外部服务 |
注册触发事件,当触发事件发生时可以有响应事件 |
EVENTMANAGER |
外部服务 |
注册响应事件,当触发事件发生时,执行响应事件 |
FSEXT |
外部服务 |
增强的FS服务 |
FTP |
外部服务 |
可以处理FTP相关请求 |
HTTP |
外部服务 |
可以处理HTTP相关请求 |
NAMEDCOUNTER |
外部服务 |
提供了计数器功能 |
NAMESPACE |
外部服务 |
提供了命名控件功能 |
SXE |
外部服务 |
可以将所有STAF指令写在文件中,然后顺序执行 |
TIMER |
外部服务 |
提供了定时器动能 |
STAX |
外部服务 |
STAF上的一个执行引擎 |
STAF服务请求格式
STAF
STAF命令举例
查看本机STAF环境中的服务列表 STAF Local Service List
测试IP地址为192.168.0.2的机器的STAF服务是否存活,存活的话显示如下图
STAF 192.168.0.2 PING PING
查看目标机器文件夹是否存在
staf qa2-pri.server.163.org fs query entry /home/qatest/PerformanceTest
复制脚本到目标机器
staf local fs copy file /home/qatest/testscript.py todirectory /home/qatest/ tomachine qa2-pri.server.163.org
目标机器执行对应shell命令操作
staf qa2-pri.server.163.org process start shell command mkdir testdir1 workdir /home/qatest
更详细的命令使用可以参考
http://staf.sourceforge.net/current/STAFUG.htm#HDROVERVIEW
各种编程语言调用STAF格式(Python为例)
1)向STAF注册一个handle,以后所有请求都使用这个handle
handle = STAFHandle(“My Application”)
2)利用这个handle发送请求,并且处理返回结果
result = handle.sumit(“192.168.0.2”,”ping”,”ping”)
3)所有请求结果处理完,最后要注销handle
handle.unregister()
staf提交请求时必须注册一个句柄,请求完成后要注销掉这个句柄
STAF支持以下语言:C C++ Rexx JAVA Perl Python Tcl,程序中可以规定请求使用同一个句柄
STAF安全级别
每种请求都有安全级别的限制,只有你达到这种安全级别才能发送这种请求。
分为六级,级别0-5,0最低,5最高
内部测试环境,方便起见,信任级别可以都设置成5
设置某机器信任级别的方法:
修改staf/bin目录下文件staf.cfg:trust machine 192.168.0.2 level 5
STAF在linux下安装配置
Linux下的STAF有两种安装模式,一种是直接下载bin包进行安装,另一种则是下载tar包进行安装。
(1)修改安装配置文件installer.properties,其中几项需要修改:
USER_INSTALL_DIR=/home/qatest/staf 安装路径
USE_PERL_VERSION=5.10 目标机器的perl版本
USE_PYTHON_VERSION=2.6 目标机器的python版本
STAF_INSTANCE_NAME=STAF-APP67 目标机器名
(2)执行安装 ./STAF3410-setup-linux-amd64.bin -f installer.properties
(3)修改STAF安装目录staf/bin目录下的STAF.cfg文件,配置机器间的信任关系
# Set default local trust
trust machine local://local level 5
trust machine 10.2.5.101 level 5
(4)配置环境变量
PATH=/home/qatest/staf/bin:${PATH:-}
LD_LIBRARY_PATH=/home/qatest/staf/lib:${LD_LIBRARY_PATH:-}
CLASSPATH=/home/qatest/staf/lib/JSTAF.jar:/home/qatest/staf/samples/demo/STAFDemo.jar:${CLASSPATH:-}
STAFCONVDIR=/home/qatest/staf/codepage
(5)启动STAFProc
./staf/bin/ STAFProc &
(6)确定STAF已经安装正确
staf local service list