文档章节

软件自动化测试框架STAF

xxjbs001
 xxjbs001
发布于 2014/07/18 17:34
字数 2829
阅读 92
收藏 1

    工作当中接触到这个开源的软件自动化测试框架,特此上线扯个蛋,不感冒的自觉走开,呵呵~

一、什么是STAF

      STAF(Software Testing Automation Framework)是一个由IBM开发的开源、跨平台、支持多语言且基于可重用的组件来构建的自动化测试框架,而这一系列的组件都是一些可以处理调用、资源管理、监视等一些列的服务组成,后面将会介绍这些概念。STAF框架为自动化测试建立了基础,在高层解决方案提供一种可插拨的机制,支持多种平台与多种语言。   

 

二、我们真的需要这个框架么 

      当然,我不是一个推销员,也更不肯能是。但是,我想说的是,单从软件产品测试的角度来看,产品的平台兼容性是一个不可忽视的问题。对于Windows平台上,软件产品需要能够完美的兼容早期的Win98、WinNT系统,还得兼容表现优秀的WinXP、Windows Server系统,更要支持用户群扩大的Win7。 如果产品做的好,甚至还需要兼容Linux、Mac OS。注意了,其实对于每种系统还可以继续分为32位系统与64位系统,而每次产品在Release之前都需要在在上述各个平台上测试N遍。如果纯手工的测试,那么在投入的人力、设备、以及时间成本上是很惊人的,那么一种自动化测试需求便应运而生了,而STAF便是满足这种需求的一种框架。

 

三、怎么运用STAF来解决我们的需求 

      那么,你可能会疑问,STAF框架怎么解决上述这个问题的呢?一种合理的解决方案是,一般公司都会有一些性能配置优越的服务器(暂且称为Lab机器),而我们工作人员一般的机器性能都仅仅满足我们的日常工作(暂且称为Office机器),做一些日常的开发和文档处理绰绰有余,但是同时开多台虚拟机跑测试的话,估计机器也就卡的半死不活了,到时候我们只能大眼瞪小眼了,而逐个平台的测试的话,时间却又是我们所不能接受的。所以我们可以将跑测试的工作交由处理能力很强的Lab机器,而我们测试人员的Office机器需要做的则是告诉Lab机器需要做什么,然后Lab机器在执行完测试任务后会将测试结果返回到Office机器上。

     在上述的描述中,Office机器与Lab机器都必须装有STAF,需要指出的是,各个装有STAF环境的机器之间的关系是对等的(Peer to Peer),也就是没有服务器与客户端区别。Office机器端上的STAF可以通过与Lab机器上的STAF进行通信,从而调用Lab机器上STAF提供的各种服务(例如可以要求Lab机器启动NotePad这个进程或者调用某个测试脚本程序)。为了方便大家理解,可以参考下图进行理解:                

                 

                                                                        图中一些概念下文会做详细讲解

 

四、理解STAF中的一些概念 

        1、STAFProc进程

         STAFProc进程这个概念很重要,在上图中就是STAF Daemo进程(守护进程)。熟悉Linux或者Java的朋友可能对于守护进程这个概念不陌生,守护进程一般是一些运行在后台,进程级别很低的进程,且生命周期一般很长,主要监视系统的一些状态并在适当的时机做出一些操作。如JVM(Java虚拟机)中的垃圾回收器进程,则是运行在虚拟机里面的守护进程,其随着JVM启动而存在,不断的检测是否存在可回收的内存资源,并在适当的时候进行垃圾内存的回收。而在STAF中,也存在这种类型的进程,它就是STAFProc进程,这种进程一般随着系统启动就开始运行,不断的监听来自其他对等断点STAF的请求,并在收到请求后调用相应的服务加载器(ServiceLoader)来加载相应的服务,如调用STAF中的Process服务来启动一个本地进程。

 

       2、STAF服务(Service)

      STAF是基于服务来构建自动化框架的,每个服务就是STAF的可重用组件,其通过STAFProc分派来的任务来实现其"人生价值"。在STAF中主要分为两种类型的服务,一种是内部服务(Internal Service),一种为外部服务(External Service)。

      那么,上述两种服务有什么区别呢?内部服务的话则一般被集成到STAFProc,一般都是一些比较基本而常用的服务;而外部服务则是需要动态载入,其可执行码不在STAFProc中,一般都在外部Jar中或者外部DLL库中。其实,这个对于Java熟悉的朋友比较好理解,我们Java程序JdK装完后可以使用的那些包(Package)就相当于内部服务,而当我们需要进行一些特殊开发的时候,往往需要引入一些第三方库(如开发蓝牙服务的BlueCover.jar),这些就好比外部服务。

      

      3、内部服务

       有如下常见内部服务:         

服务名称

作用

DELAY

可以使得服务得到延迟一段时间。应用场景:在执行一个耗费时间的任务时候,在进行下一步操作前,需要延迟等待一段时间

PROCESS

可以启动、停止或者查询进程,如执行一个指定的测试脚本程序等

PING

通过该服务检测远程或者本地机器是够通讯的上

SERVICE

该服务可以列出机器上可以使用的服务

SHUTDOWN

该服务用来关闭STAFProc进程,好处在于通过该命令关闭STAFProc,可以释放进程的所占用的资源

FILE SYSTEM

该服务提供网络之间的文件拷贝服务,例如从本机拷贝一些文件到目标测试机上

      

       4外部服务

       外部服务一般需要到STAF官网去下载服务组件包(网址为http://staf.sourceforge.net/),一般服务组件包下完后还需要一些配置,这个在下篇文章会以STAX为例介绍

,先列出一些常用的外部服务       

服务名称

作用

STAX

一个基于XML的执行引擎,在XML中定义测试工作流,可以实现并行执行、嵌套测试用例、控制运行时间等,STAX支持Java  Python 模块

ResPool 

用于日志的记录和查看

Monitor

提供查看、创建、删除等针对资源池的管理或操作

 Zip

提供压缩与解压

 

      5、服务请求格式

      STAF的服务组件之间通过发送STAF请求(Request)完成各类工作,一个STAF请求格式一般为:STAF Command+EndPoint+Service Name+Request Content四个组成部分(注意将加号换成空格)其中,STAF Command就是STAF ; EndPoint部分可以是远程机器IP或者Localhost ; Service Name则是Endpoint端机器上STAF环境中的服务名称(这个可以通过STAF命令来查看,如查看本机STAF环境中的服务列表,可以通过STAF Local Service List命令查看);  Request Content则是请求的内容,举几个例子方便大家理解:

      1)请求IP地址为10.3.1.160机器中的STAF的Process服务执行关机的命令:

           STAF 10.3.1.160 process start command shutdown -s -t 60 (不同部分用颜色区分开了)

           备注:对于关机这类具有一定Destructive的操作,我们有时执行上述命令会失败。这是因为在STAF中有安全等级制度,总共分为5个安全等级,在后面会具       体讲到。这时候,我们可能需要在10.3.1.160这台机器的STAF环境中修改下其配置文件,将本地机器或者所在网段的受信任等级提升,并重启服务,在后面的         STAF安全机制会提到。 

      

      2)测试IP地址为10.3.1.145的机器中的STAF服务是否存活(Alive)

           STAF 10.3.1.145 PING PING

           备注:该命令主要是向远程机器的PING服务提交内容为PING的Request,如果对方机器中的STAF环境是存活的话,则本机STAF端回接受到回应,在本机表       现为命令行回显:

           Resonse

           -------------

           PONG

      看到上述命令,就知道对方机器的STAF环境已经是准备就绪的了。在此,提醒初学者要区分直接在命令行中运用Ping命令和上述命令,不要傻乎乎的打开Cmd然后输入Ping 10.3.1.145,要知道,此Ping非彼Ping也。

      

      6、STAF实例 

      在同一个操作系统中,其实我们可以同时运行多个STAF实例,而STAF实例名则成为了每个STAF实例的标示。默认的实例名为STAF,当然我们也可以修改实例名,通过设置环境变量STAF/Config/InstanceName可以改变实例名称(STAF中的环境变量在下面会讲述)。

    

      7、STAF中句柄 

      STAF中的句柄是个唯一的标识,在提交STAF的Request的时候,一般以句柄为颗粒单位提交。一般句柄标识是结合了STAF的实例名和对应进程的部分唯一标识构成。   

 

      8、 STAF中的变量

      在STAF启动之后,其实在内存中就存在一些STAF变量,这些变量主要用来存储一些配置信息、运行时信息以及系统环境信息。由于这些都是加载在内存中的,所以对这些STAF变量的更改会立即生效而无需重启服务。我们可以通过命令STAF Local Var List命令查看本地STAF启动后有哪些变量。

      从官方开放的文档中,还可以看出STAF有变量池的概念,主要分为下列三种变量池:

     1)会维持一个系统(System)变量池(Pool),在这个变量池中的所有变量对于所有的句柄都是可以访问且共用的(可以使用命令STAF Local Var List System命令查看)

     2)同时STAF中存在变量共享池(Shared Pool),除了具有系统变量的特征之外,共享池中的变量可以跨网络共享,即本机可以使用远程机器STAF环境中的共享变量池中的变量(可以使用命令STAF Local Var List Shared查看)

     3)除了上述两种变量,STAF中的每个句柄也拥有自己的变量池,这其中的变量都是私有的:

         查看某个句柄变量池中的变量命令:STAF Local  Var List Handle 1

         备注:注意这儿的1是句柄的标识ID,可以通过命令STAF Local Handle List查看各个句柄对应的标识ID      

  

     9、STAF中的安全机制 

     未完待续~

本文转载自:http://www.cnblogs.com/royenhome/archive/2010/07/29/1787454.html

共有 人打赏支持
xxjbs001
粉丝 55
博文 749
码字总数 215621
作品 0
浦东
QA/测试工程师
私信 提问
用 STAF+Selenium 实现并行的自动化测试框架

我们有很多理由去开展自动化测试的工作,例如自动化测试可以节省时间、简化手工测试、提高测试覆盖率等等,这也充分说明实现软件自动化是非常重要的。自动 化测试时一个很吸引人的技术问题是...

IBMdW
2012/03/08
3.3K
2
自动化测试框架--STAF

STAF (SW Test Automation Framework) 是一个自动化测试框架,用以提升测试用例和测试环境的可重用性以及自动化的程度。STAF 为测试人员提供了一个端到端的自动化测试解决方案。...

匿名
2008/12/10
13.6K
0
自动化测试框架之robot framework的应用分析

 序言:很多人都对自动化测试框架痴迷,我曾经也痴迷过一段时间,以前觉得自己对框架说的头头是道,现在回过头来看以前,说归说,但在如何应用还是欠缺,这一段时间,自己经历了一系列框架的...

yifan326
2015/11/30
260
0
利用 STAF 实现程序更新包的自动部署测试

http://www.ibm.com/developerworks/cn/opensource/os-cn-staf/

红薯
2009/01/17
1K
0
Watij - 面向 Web 的自动化测试工具

简介: 随着应用程序渐渐脱离独立的宿主模型并进入到云中,可靠性和可预测性的测试变得更加重要。在云环境中,有许多 因素是我们无法控制的,因此编写健壮的、经过测试的代码比以往更加迫切。...

IBMdW
2011/11/10
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue- 对象语法 v-bind:class与对象语法的使用

我们可以传给 v-bind:class 一个对象,以动态地切换 class 。 <div v-bind:class="{ active: isActive }"></div>//对象语法也就是在v-bind:class绑定一个对象的时候,里面的值将影响最终取值...

文文1
30分钟前
1
0
epoll中使用

1、一个线程epoll_wait时,另一个线程调用epoll_ctl是安全的。 2、使用edge触发,在socket有数据到来后,不收取数据,再次调用epoll_ctl将socket加入,仍会触发下一次动作。 asio用该方法来发...

gelare
58分钟前
1
0
PHP规范PSR2

PSR标准 - PSR-2 为了尽可能的提升阅读其他人代码时的效率,下面例举了一系列的通用规则,特别是有关于PHP代码风格的。 各个成员项目间的共性组成了这组代码规范。当开发者们在多个项目中合作...

geek土拨鼠
今天
5
0
【极简】如何在服务器上安装SSL证书?

本文适合任何人了解,图形化操作。下面以腾讯云为例,并且服务器(linux)也安装了宝塔面板。 1.登陆腾讯云账号进入控制台,找到SSL的产品 2.按要求申请并填写表单,记住私钥密码 3.提交后,待...

皇冠小丑
今天
1
0
深入理解编译器

深入理解编译器 原文出处 欢迎向Rust中文社区投稿,投稿地址,好文将在以下地方直接展示 1 Rust中文社区首页 2 Rust中文社区Rust文章栏目 3 知乎专栏Rust语言 编程语言是如何工作的 从内部理解...

krircc
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部