51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2873|回复: 1
打印 上一主题 下一主题

自动化测试框架 设计的重构

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-8-12 15:02:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近对测试框架进行了重构,也对其中原有的一些设计进行了反思。其中不免有一些自我感觉得意之处

,因此写出来和大家分享。这是一个重构的过程,所以将以重构的思路来讲述。
       先来说说为什么会重构。原先的框架系统,思路是将自动化代码,通过调用控件的适配接口,最

终完成对界面的操作。而这些代码,中国IT室验实也被

编译到DLL中。这里面就有一些问题:
       1.每一次修改,都必须重新编译。
       2.由于DLL被程序Load,不可直接覆盖,所以必须重新启动被测试系统。
       3.基本上不可以部分执行脚本。
       4.自动化代码和自动化框架代码同时暴露给用户。
       再一次说明一下原先的设计。原先的设计中,自动化代码将作为DLL的一部分被编译进去,而这

个DLL会作为程序系统的一部分被装载。本来我想用图形来表示,突然感觉其实可以多多用表达式来表示

,我想做一个尝试,这样可以免去图片的麻烦。
       被测试系统(自动化框架(自动化代码))
       其中括号表示包含关系。最终只有一个系统在运行。为了解决这些问题,我们思考从脚本入手,

进行自动化测试框架的重构。
       首先重构的对象是,将自动化代码的编写改变为XML的配置。自动化框架通过读取配置,并解析

每一段脚本,自动执行。我们先不谈其中的实现技术细节,而是先来谈谈这样的好处。
       1.脚本是解释性的,因此框架DLL不需要重新编译。
       2.脚本由于成为配置,那么其管理也就变得更加容易和简单。
       3.可以让测试人员,完全只是关心业务上的脚本。
       4.从配置中,可以方便地记录每一步的执行内容。原先的编译方式,失去了很多信息。
       5.配置可以动态组织,这样有可能实现部分脚本的执行。
       重构,就是发现问题到解决问题的过程。相对于设计的不同,在于重构是在现有设计的基础上发

现问题。
       下面说说实现过程中的细节。在这个过程中,最关键的是脚本的解析。由于之前,针对所有控件

,都已经有了封装的接口,因此在这个基础上,我们考虑到采用SOAP的实现思想,通过对接口方法的

Invoke,来实现最终的脚本执行。
       要实现这个Invoke的过程,就必须深入了解一下Delphi是如何实现SOAP的。这当然是另外一个话

题了。有兴趣的可以看一下Invoker.pas中的代码。要实现Invoke的过程,可以有两个选择:
       1.完全参考SOAP的调用约束
       2.自己定义结构,自己解析转换参数,实现Invoke
       我实际是选择了后者,虽然说对于我理解Invoke原理有了很大帮助,但后来还是证实我的选择不

是最好的。先不管这个了。
       完成了Invoke的过程,下面就是脚本的设计了。我为脚本的设计,增加了几方面的内容:
       1.定义TestWindow的概念,表示每一个被测试和编码的窗体。
       2.定义TestStep的概念,表示对用户界面发出的每一次命令。
       3.定义TestPackage概念,表示多个TestStep的组合。
       4.定义TestWindow和TestStep之间的关系。TestWindow包含多个TestStep。每一个TestStep包

含多个TestWindow,表示这个命令可能触发的新的测试窗体。
       定义这些概念是非常有意义的。可以帮助我们清晰地理解系统,也非常便于以后的技术交流。这

也说明了自动化测试框架本身设计的完善和进步。
       在定义完成这些概念后,就是完成一个脚本的配置工具。并在这个编辑器上实现脚本的调试和日

志功能。调试方面,我们选择了HTTP的调用方式。其实可以选择很多其他方式。一来HTTP的方式,实现

起来很简单。二来支持HTTP后,调用自动化测试,只需要通过HTTP就可以了。FinalBuilder和一些Shell

都支持这种方式。这对于以后的自动化调用是非常有意义的。
       现在系统的架构变了。不再是原先的一个系统了,因为这里引入了一个辅助系统,可以称之为自

动化的IDE。再使用上面的方式,我们描述以下系统:
       被测试系统(自动化框架)= IDE(自动化脚本)
       等号表示系统交互是双方向的。IDE向系统发送脚本,系统向IDE发送LOG。
       好了,这次重构基本都完成了。中国IT室验实

整个过程的中心在于脚本的结构迁移。而重构的前因和结果也都进行了对比。虽然说很多方面的细节也

许并没有考虑清除。但是这次框架设计的重构,其实更是框架本身的完善过程。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-8-27 22:39:02 | 只看该作者
看了一下,有些感触,顶起,继续深入学习
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-28 05:57 , Processed in 0.068548 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表