分布式自动化测试平台设计

上一篇 / 下一篇  2011-08-01 17:54:22 / 个人分类:自动化测试—框架思想

 

 序言:经过了一段时间的探索,对于自动化测试平台项目的设计,已经进入了一个初步阶段,即自动化测试平台的基本形式已经实现,想想,自动化测试平台从无到有,自动化测试框架从基于需求环境的探索到基本实现真的是一个很值得玩味的日子,且将实现方式与大家分享一下,希望大家有什么好的想法或者好的建议也一起分享和讨论一番。

感觉,这篇文算算是我自动化测试工作以来对自动化测试设计和理解的一个阶段性过程吧,分享出来与大家共勉吧。

 

一、自动化测试平台定位

 

  我一直崇尚的自动化测试观点是“需求引导设计”,只有将需求分析清楚,将需求定位好,才能着手去进行所谓的自动化测试框架与平台的设计。

而所谓的自动化测试平台(也可以认为是一个集成的自动化测试框架),我认为可是是若干个小型框架的组成,而每个小型框架有各自独有的作用,他们都是作为自动化测试平台的一个组件或者可以说是一个服务。

因此,其自动化测试平台的原则就是

1) 1普遍的可适用性。

2)  2灵活的可插拔性。

二、自动化测试分布式平台设计

 

  自动化测试分布式平台设计基本整体架构图如下:

  

 

  按照层次分的话,可以分为:

 1)      用例抽象层,此层功能为:

   a)      可以进行测试驱动,即调用测试用例驱动表进行测试(测试用例驱动表可以存储在本地端,存储方式可以为EXECL表格形式或者数据库形式)

    b)      可以在本地客户端进行用例脚本的编写和生成。生成的脚本可以通过转换至与外部工具调用层次中的工具想对应的脚本。(其统一的脚本形式可以为XML实现)

 2)      业务实现层,此层功能为:

   a)      可以实现各种业务,即抽象出业务,通过不同的业务实现方式调用不同的测试框架实现。

   b)      可以通过不同的业务实现方式调用不同的测试外部工具实现。

 3)      分布式交互层

   a)      客户端与服务器端进行交互的通道

   b)      各种外部服务的接入的通道,例如:日志服务、测试监控服务、邮件通知服务等。

 4)      外部工具调用层

   a)      运行不同的驱动命令,调用不同的外部工具进行测试。

 

三、自动化测试服务器端设计

1) 自动化测试服务器端的功能

a)      本地服务器保存测试集脚本。(也可以说各种工具的小型框架都是保存在其上的,例如我将RFT分成的三层框架,都是保存在服务器上的)

b)      本地服务器调用外部工具进行测试(外部工具安装在服务端)

c)      进行用户的权限识别。

2) 自动化测试服务器端的设计

设计一个服务器,可以接收分布式框架发过来的请求信息,并且此服务器端依靠“多线程”处理机制,集成了各种外部工具的操作命令。

 

四、自动化测试客户端设计

1) 自动化测试客户端的功能

a)      进行用例驱动表的解析。

b)      进行自动化测试用例脚本的编辑和生成。(采用关键字驱动,即测试人员可撰写和识别的脚本)

c)      统一结果的导入与查看。

d)      详细日志的导入与查看。

2) 自动化测试本地客户端设计

设计一个客户端,main程序是实现一个界面,通过其界面进行测试用例的选择,测试用例脚本的撰写和生成、结果和日志查看等。

 

五、自动化测试平台应用分析

优点:

1) 通过此平台,层次定位清楚,将测试执行与测试驱动分隔。

2) 通过此平台,流程结合容易,在流程上可以和产品的测试周期相结合,把握好其进度。

3) 通过此平台,职责细分清晰,最重要的是能够将职责细分,这个在后期的想写的一篇文章将阐述。

4) 通过此平台,用例复用性高,统一用例适用于各种不同的语言。

5) 通过此平台,业务拓展灵活,可以任意进行各种工具调用,能够进行各种业务的测试。

6) 通过此平台,结果分析简单,可以方便进行结果查看和日志调用查看。

缺点:

1) 因为服务器端安装的工具,所以在测试人员在调试上很麻烦。

2) 根据详细的日志往往不能够清楚定位问题,还需要测试人员人工定位,不能一次性定位出问题。

3)还有很多问题等待大家挖掘,提出宝贵的意见……

 

六、自动化测试平台设计心得

1) 这次设计,对编程而言,是个很大的挑战,其实个人觉得,java的设计模式与其自动化测试框架的思想很是相近,其在这次自动化测试本地客户端设计上就采用了其模式的思想,因为java设计模式的理念就是降低耦合,增强灵活性和复用性。所以,学习软件思想对于自动化测试设计很重要

2) 自动化测试,就算有了平台,但是在进行自动化测试效用分析上上才是一个很大的难点,因为只有将效用定位清楚,才能将平台用到实处。

3) 实践指导理论,再多的理论只有实践之后才知道,而且不能过多的追求技术完美,不然等到技术研究透彻,黄花菜都要凉了

如果有测试同行对自动化测测试有兴趣,欢迎一起学习探讨,谢谢  —散步的SUN

 


TAG:

xiaosi203的个人空间 引用 删除 xiaosi203   /   2015-04-10 16:33:50
5
引用 删除 wangkuibj   /   2014-11-28 15:58:31
5
文青山 引用 删除 wolaizhinidexin   /   2011-08-05 11:53:02
自动化测试重要的是分析问题和解决问题的思想

要想知道软件思想,我觉得最重要还是自己去做,去多学习吧,有的东西只能自己有一些领悟才叫领悟吧

深表赞同。现在这个公司,N多新手才做测试一年,就急着要搞自动化,经常问我为什么这个不行,那个不行。自动化不就是录制吗?我的那个天。
xin_晴的个人空间 引用 删除 xin_晴   /   2011-08-02 13:49:21
您好,我是51Testing软件测试网的编辑,您的本篇博文被推荐至51Testing软件测试网首页发表:http://www.51testing.com/html/25/n-242325.html
感谢您关注并支持51Testing博客,期待您更多的优秀原创博文。
wn0112的个人空间 引用 删除 wn0112   /   2011-08-02 10:35:02
很好,支持
散步的SUN的个人空间 引用 删除 散步的SUN   /   2011-08-02 09:22:59
呵呵,要我具体说,也说不上来,我只能根据自动化测试设计方面想想,以下个人观点:
1、软件实现注重其架构,其架构方面注重于API的开发方式,而其思想有一点就是保证其软件模块之间的低耦合性与高内聚性,即如何使软件各API重用性高,互相影响性小,这样才能保证维护性和灵活性高。
2、而软件开发方面,如:面向对象的思想(继承、多态、封装)、所谓接口、抽象保证方法统一高度、所谓设计模式(java的23种设计模式)也是为其复用性服务的
3、所以,所谓软件思想,就是保证软件架构,提高软件使用性、重用性、维护性的一系列方法的集合吧。(呵呵,个人瞎扯)
3、所以,自动化测试重要的是分析问题和解决问题的思想,而软件设计也是如此,其实自动化测试就是一种软件设计。
5、一个例子,可以看看RFT的代理模式,其实也可以说是Java设计模式的一种
6、要想知道软件思想,我觉得最重要还是自己去做,去多学习吧,有的东西只能自己有一些领悟才叫领悟吧
希望没有误导你,谢谢
原帖由zhengxi于2011-08-01 22:38:25发表
学习学习!请教软件思想是什么?
找茬小子的缺陷空间 引用 删除 zhengxi   /   2011-08-01 22:38:25
学习学习!请教软件思想是什么?
search_good的个人空间 引用 删除 search_good   /   2011-08-01 18:31:42
好像很强大,研究...
 

评分:0

我来说两句

Open Toolbar