qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

STAF测试框架的应用总结和分析

之STAF的应用总结和分析

  序言:我想主要从实际原理和应用上来说说测试框架,这些框架包括:关键字测试框架robot,基于各种语言的分布式STAF框架,集成测试框架Fit(husdon),以及elipse TPTPd性能测试框架等。这不是一套工具教程,而是一套应用的简单思想,个人难免有局限性,见谅。

  一、STAF介绍

  STAF全名叫Software Testing Automation Framework,即软件自动化测试框架,我觉得,STAF可以完全称得为一个测试框架,其基于软件开发中 “系统+组件”的思想,系统是一个架子,各个组件都可以插入到架子中成为其功能一部分。即,STAF是一个这么一个架子,提供了组件插入的规则,不管你的 组件是用什么语言写的,只要符合STAF的组件规范,就都能做为STAF的组件服务与其他的组件服务进行通信,即其提供了轻量级分发机制,负责将请求转发 给服务,从而调用这些服务的功能。

  二、staf原理

  staf的基本运作原理如下:

   1、启动STAF时,STAF做为系统的一个守护进程开启,然后同时加载其架构中的服务,这些服务可以是DLL文件、JAR文件。当你设计一个STAF 的外部服务的时候,即继承STAF提供你的接口,你只需要撰写一个类实现接口的方法即可。也可以这么理解,STAF就像一个操作系统,而这些服务就像这些操作系统上的应用功能软件,每个软件之间可以通过内存或者管道或者网络通道进行互相通信。所以,你若是设计一个测试框架时,可以参考STAF或者操作系统的这种理念,定义一套规范接口,以便于框架的灵活拓展和实现,而不是将一套框架写的死死的。

  2、STAF在加载服务的时候,为每个服务分配了一个句柄,即STAFHandle,这个句柄即作为服务的唯一标识。类比于操作系统会给每一个进程一个进程ID,你打开系统的任务管理器,能看到很多进程在运作,而你可以通过每个进程的ID对这些进程进行操作。

  3、STAF之间服务的交互则可以通过命令行的形式或者向服务的队列读写的形式进行。命令行可以看做为每个服务向外公开的消息接口。

  三、staf的应用

  staf的缺陷在于掌握困难,你需要很清楚它的机制以及其提供的一些服务的作用后,你才能真正的把他用好

  1、分布式多执行端应用:STAF采用P2P架构,即没有服务器和客户端之分,任何安装了STAF的机器之间可以互相通信,可以利用STAF的这种特性实现分布式执行的功能,例如:你有10个测试用例, 一般都会将10个测试仪用例在一台执行机器上串行运行,脚本少的话当然不会有什么问题,但是当脚本数量庞大到一定程度时,那么你需要一个分配机制,能够将 这些脚本分配到不同的空闲执行端运行,那么STAF可以帮助你实现这些机制,可以指定一台STAF机器为脚本任务分配端,然后指定一些STAF机器为执行 端,那么任务分配端收到任务,即一系列测试脚本后,它可以寻找到空闲执行端,应用STAF之间的通信,将这些测试脚本分配下去,在每一台机器上执行,然后 返回结果。这样,就可以大大节约一些测试时间了。当然,你也可以自己开发属于自己的网络分配系统,可以采用socket机制实现。

  2、STAF几个比较常用的的内外服务:

  文件系统服务:即FS服务,你可以采用FS服务进行不同机器之间或者一台机器上的文件之间的传递。例如:一些测试脚本和测试结果、日志等都可以采用这种方式传递。

  时间驱动服务:即调用此服务来按特定的时间间隔发送STAF命令,从而调用别的STAF功能服务,这其实相当于在自动化测试中,每隔多少时间,进行一次测试,这种概念跟持续集成的按时间间隔进行build有些相似。

  事件驱动服务:即由发生的事件来驱动进行通信,从而执行STAF命令,事件是通过队列形式发送,每个服务都有自己的一个队列,服务通过接收队列中的请求从而进行功能操作;这种概念跟持续集成的按事件驱动进行build有些相似。

  邮件服务:即发送邮件的服务,当测试完成或者失败时可以触发这个服务发送邮件。

  日志服务:即可以将一些测试结果或者日志信息按照表格序列的形式存在指定的STAF机器上,然后可以随时进行读取。这样可以当一台STAF机器的测试执行完毕后,将测试结果存在本机或者专门存放日志的STAF机器上,然后随时可以读取显示。

  压缩服务:调用STAF命令对文件进行压缩。

  名字空间服务:这个服务挺重要的,就是可以将一些数据存在STAF的指定内存中,然后独特的名字对应着独特的数据,这个与哈希表有些类似,你可以随时取得这些数据,这些数据在后台都是保存在本地XML文件中的。

  当然,这些服务只是一些基本服务,为了拓展你自己定制性的测试框架或者平台,你可以很好的利用这些基本功能。

  3、STAX,很多人都不清楚STAX和STAF的关系,其实从本质上而言,STAX和STAF本身没有太大关系,即STAX只是调用了STAF的内外部服务来构造了一个测试执行引擎。STAX整体机制是:你通过在按照STAX的XML格式定义测试工作流, 可在其中嵌套要执行的测试用例,然后由STAX导入,然后执行STAF命令,调用相关的执行服务执行测试,STAX能够监测服务的状态,并且读取指定机器 的日志服务并显示。不过我认为:STAX在执行操作上太过于繁琐,不用也罢。你可以自己设计控制界面,来下发脚本,并且可以读取日志服务或者可以获得 STAF的一个句柄,从而可以接收STAF发送过来的回应,将结果和执行状态显示在界面上。

  4、总而言之,STAF只是一个请求消息的分发机制,而那些基于STAF规则的服务才是实现整个测试的重点。你需要拓建多大的测试框架,那么你就得找到更多的需求,将其转化为服务,并且定义好他们之间的请求消息,让它们很好的协同合作。

  总结:

  1、一个好的测试工具或者框架,简单的使用并不难,如果真想在自动化测试领域得到进一步的发展,那么学习这些框架的思想,因为这些框架都是前人在实践基础上构建出来的,学习其思想,不仅能掌握自动化测试的理念,更能在软件思想上更进一步。

  2、想当时学习STAF框架时,实践很少,对于自动化测试框架一些认识都限于理论,所以学习了很长时间,但是在一段时间后,再去学习robot框架以及别的框架,都很快的从里到外认识,所以,学习很多工具不如先把一个学通。

版权声明:本文出自 散步的SUN 的51Testing软件测试博客:http://www.51testing.com/?382641

原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

posted on 2012-05-18 10:21 顺其自然EVO 阅读(2142) 评论(0)  编辑  收藏 所属分类: qtpselenium and watir webdrivers 自动化测试学习


只有注册用户登录后才能发表评论。


网站导航:
 
<2012年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜