自动化测试环境拓扑管理

上一篇 / 下一篇  2011-09-23 14:15:25 / 个人分类:自动化测试—框架思想

               简易自动化测试设计 之(四)

       ——自动化测试环境拓扑管理设计

 序言:不知道大家有没有对自动化测试环境拓扑管理方面有所涉及,但是这往往是自动化测试规模化一个难点,这也是作为自动化测试平台中的一个模块(服务),以下的解决方案更多的是不成熟,分享出来,希望大家能够帮助开动自己的想法,提出见解,当然,其实这些东西不一定受限于你的技术认知,相反,脱离了技术的束缚,你才能从更高的角度提出问题和建议,所以,希望大家提出应用的需求,帮助我开拓眼界,大家也许也能够提高思考能力。

一、   自动化测试环境拓扑管理简介

 在电信项目中,自动化测试环境拓扑的管理往往是一个难点,刚开始进行自动化测试项目时,因为用例过少,所以环境信息一般都是硬编码在脚本中,后来随着项目的增多,就采用了脚本分层的方法,将经常变动的业务配置提了出来,写到了一个单独的脚本中,随着拓扑的越来越大,各种产品线都有各自的测试拓扑,而对于其都是测试人员去进行管理的,缺乏了一种部门级的统一管理这些拓扑的机制,并且对于单个项目来说,其项目的拓扑并没有抽象出来成一个连接关系,因而不方便后期的项目拓扑的维护和管理。

而在软件测试中,其实原理也是一样,软件测试中有一个概念称为:自动化部署,这是持续集成中的概念,个人觉得,当然也适用于各个自动化测试,持续集成是脱离不了自动化测试的,部署是指将软件移动到它被测试的地方,或用户指定的某个位置,准备送给客户。最早前的部署都是手工过程,部署工程师从某处拿到部署文件,再把它放到目标机器上,然后开始正式的安装过程。然而,这种手工过程会比较慢,而且部署失败率也可能要高一些。自动化部署的目标是持续部署,即自动部署到生产环境中而无需手工干预:得到一个版本后,自动部署到一系列的测试环境中。经过整个构建管道中的所有阶段,并且能通过所有的测试后,自动部署该版本到生产环境中,而且具有自动回滚和相应的监控手段。

与上述自动化部署类似,自动化测试环境拓扑管理也能够自动根据项目综合拓扑中的环境参数与设备信息自动的生成脚本所需的环境配置文件,脚本运行时会读取这些环境参数和设备信息调用相应设备进行测试。

 

二、   自动化测试环境拓扑管理挑战

  1、 如何保证统一测试拓扑。

  2、 如何保证映射更新条件。

  3、 检测版本,进行版本的自动检测和升级。

  4、如何与设备进行联系,即拓扑中的节点如何与实际设备的控制信息关联起来。

 

三、   自动化测试环境拓扑方案

           

  1、采用拓扑映射机制,即将项目的测试拓扑抽象出来,不具体表明端口,只是表明一种连接关系,然后采用映射匹配算法(匹配的条件可以根据自己需要进行设定,可以按设备的连接关系、设备型号、测试版本型号等进行匹配)。将标准拓扑中所需要用到的连接关系在综合拓扑中找到,然后生成一个设备匹配表。

  2、匹配到相应拓扑之后,则测试项目可以调用其拓扑关联生成一系列的配置信息。

  3、之前,一直思考如何将拓扑管理与设备关联起来,后来思考,即,采用软件工程中的思想,将一款共性的产品线作为一个高度抽象的类,然后下面派生成一系列的具体的产品类。产品线类拥有共性的属性(例如:设备的端口号等可以作为一个共性属性,还有一些共有的命令行),然后产品派生类拥有自己特性属性。当然,还有一个共享的基本类(里面包含拓扑中每个产品线共有的属性,例如,IP地址、串口号等)。

  4、拓扑中的产品节点可以依靠产品线类型与具体产品型号关联实际环境拓扑中的一款设备,当测试项目调用这款设备时,测试项目就可以找到相应的配置文件。

  5、配置文件相当于一个中间件,需要在每次映射时进行自动的更新。

  6、拓扑的表现形式可以用XML节点的形式或者UML图的形式进行表示,个人觉得,图的表现形式是个发展。

  7、软件自动化测试中的环境部署也可以应用此关联的方式,不过还是需要具体情况具体分析。

 

四、   相关软件产品分析

  对一些相关的产品进行了使用研究:

1、   1、FanFareiTEST,现在被spirent收购,在其拓扑关联方面,提供了一个Topology功能。其应用Port连接来表示设备的互连关系,每个设备对应一个或者多个session,可以直接在拓扑图里,根据这个session,管理到设备,但是并没有与case关联起来,所以其主要功能在于拓扑的直观性。

2、   2、IBMRSARTC产品,其理念是模型驱动理念,用过UML的人应该知道,其将测试拓扑中的设备抽象成一个个模型,然后每个模型关联一个脚本模块,具体情况还没有过于去研究,有兴趣的人可以了解参考一下。还有一款软件Insight,是可以应用在智能数据分析,从而选取最佳的测试优先级,这个一直觉得好复杂,对数据存储和挖掘分析要求很高。

3、  3、以上只是自己的一点简单总结,因为是很匆忙,所以不一定正确,需要自己去进行使用分析。

4、4、个人觉得,以上工具,因为需要涉及到应用普遍性,再加上做自动化测试的特殊性,所以也许你能用到的少之又少,但是你可以根据自己需求,结合其工具的设计来得出适合自己的自动化测试方案。适合自己的才是最好的。

 

   总之,自动化测试拓扑解决方案很难有一个完美点的方案,所以如果对这方面有兴趣或者有研究的人,可以一起讨论下,提出一下想法,感激不尽。

更多测试技能在线学习,更多测试文章,请访问http://www.zhibokeji.com/


TAG:

引用 删除 wangkuibj   /   2014-12-01 15:45:07
5
引用 删除 63634336   /   2012-01-08 16:43:54
5
ricky_zhang的个人空间 引用 删除 ricky_zhang   /   2012-01-07 13:54:36
5
灰太狼测试 引用 删除 yuxinlong2006   /   2011-12-06 12:45:10
我的QQ:81705066,一起研究自动化测试的加我。
散步的SUN的个人空间 引用 删除 散步的SUN   /   2011-09-29 21:10:59
原帖由rossini23于2011-09-23 17:08:18发表
写的很好,也来凑个热闹。
一般来说,测试环境的管理会经过几个阶段:
1. 未意识到需要进行测试环境管.

恩,看样子阁下对拓扑管理这方面 研究很深啊,今天看了一个公司的电信解决方案,好像有点门道,下次一起讨论下~~
xin_晴的个人空间 引用 删除 xin_晴   /   2011-09-26 14:05:48
您好,我是51Testing软件测试网的编辑,您的本篇博文被推荐至51Testing软件测试网首页发表:http://www.51testing.com/html/57/n-246157.html
感谢您关注并支持51Testing博客,期待您更多的优秀原创博文。
odella_yuan的个人空间 引用 删除 odella_yuan   /   2011-09-24 08:56:27
5
@槽神刘叫兽 引用 删除 lyscser   /   2011-09-23 17:28:30
5
引用 删除 rossini23   /   2011-09-23 17:08:18
写的很好,也来凑个热闹。
一般来说,测试环境的管理会经过几个阶段:
1. 未意识到需要进行测试环境管理,测试环境硬编码在脚本里。这种脚本可移植性比较差,某天,其它测试人员想用你的脚本在他的环境上跑,就傻眼了。每个脚本里涉及到的环境信息都得修改,脚本越多,移植的困难越大。
2. 开始有意识的设计环境。自动化之初就需要确定我这些测试需要哪些设备,哪些组网方式,设计后的环境就固定了,自动化就运行在这些设计的环境之上,运行过程中环境是固定的。 至于设计的结果,就像文中讲的,可以是类,或者其它方式。脚本中看到的是这个类的属性,比如Env.Board.Ip,Ip最后的值,是存在配置文件中的,与脚本分离。
更进一步,可以在配置文件中有多个Env实例,每个实例对应一套环境,比如Env1是A员工的,Env2是B员工的。在需要执行脚本的时候修改Env1到Env的赋值,这样,切换环境基本只需要一行赋值语句。
3. 动态组网。每天下班后实验室里有很多设备空闲,另一边,很多自动化的脚本要跑,只有一套固定自动化环境,不够用。如果能把空闲设备重新组网用起来就好了。这时候就需要用到动态组网。脚本执行过程中根据需要动态调整组网方式,把空闲设备利用起来。对于以太网来说,Spirent和苏州盛科网络这两家公司有通过自动化脚本控制组网的物理层交换机,能实现上面的需求,某H公司好像也有这样的应用。
 

评分:0

我来说两句

Open Toolbar