CMMI on line

做中国最专业的CMMI网站!
欢迎光临 CMMI on line 登录 | 注册 | 帮助
in 搜索

非一般的测试

Rational Robot 自动测试框架(Robot Autotest Framework)

作者:关滨飞
摘自
http://www.cmmionline.net
摘要

1.框架的重要性.
2.什么是框架?
3.框架的特征.
4.如何实现框架.

1.首先先提出疑问: 什么是框架呢?

框架,即Famework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演; 一个没思想的机械人。而且,框架一般是成熟的,不断升级的。

 

2.测试为什么要用框架?

回归测试每个版本发布都包括新增加的功能和已有的功能,已有的功能已经在以前的版本中进行过测试,但是还需要在此版本中执行回归测试。在这种情况下,测试部门往往会考虑到,既然回归测试的测试用例都已经存在并且已经在上一个版本中执行过,那么在新版本中能否自动的执行这些测试?如果能这样的话,将极大的节省时间和资源,将有限的资源投入到新功能的测试上,缓解测试的压力。那我们就会想到用自动化功能测试代替手工测试.

 

当用工具进行自动化功能测试时,每个测试用例对应N个测试脚本,那算起来,脚本真是N多呀.那录制及维护这些脚本的测试人员就会叫苦连天,另一方面项目进度及成本的压力,根本没有太多余的时间给测试人员去花时间在自动化功能测试.

 

测试其实好多东西都能重用,假想我们把这个舞台都搭好了,你只需要集中精力完成系统的业务逻辑的测试,把这此业务逻辑转化成一批数据,那框架只需要读取数据就可以实现你的逻辑测试.例子就正如我们希望机械人给我们测试,那你只需要告诉他对象,动作,他就能实现你的工作,而不需要你去写脚本。智能吧。继续看下来吧。

 

3.Robot测试框架

那这个机械人是如何运作的呢。人类应该给他怎样的指令,他才能读懂并工作呢?

使用RobotSQABasic脚本开发的Robot测试技术框架。此Robot测试技术框架以表驱动为指导思想,读入动态结构,解释并执行动态结构中的每一项,这是自动化测试的引擎。


(图
1: 三者交互工作图)

下面我会以Window Calculator 作为例子解释,而测试目的是:测试Calculator所以功能的正确性。

 

数据驱动:Datapool及外部数据表驱动

DatapoolRobot的数据存贮文件,Robot可对它进行读写。

这里的表是指Robot 外部表,如EXCEL表,它可以嵌套(OLE)在Robot里,Robot可对它进行读写。

数据表是测试人员向Robot下达业务测试命令的媒体。传送的内容有:对象(窗体及控件)、动作、期望值。如下表所示:


(图
2: 数据表图)

这个表中这里一共针对Calculator工具中三种不同的控件进行操作:Menu, PushButton, EditBox.

每一行代表是要求Robot操作的一个动作。这个表的动作逻辑就是:

1).计算1+80=?,然后判断值是否正确

2).Sqrt(81)=?, 然后判断值是否正确

3). 点击不同的菜单。然后判断。

 

ROBOT如何脚本实现框架化?

把脚本分两部分维护即可:主程序(sub main+子程序(sub-function/sub)

主程序要实现功能是把“指定表名”传入到子程序中。

Sub-function是实现对主程序传入的数据表名的内容进行不同动作处理。分为两层,第一层读取主程序传入数据表名,读取数据表的内容,判断数据表的控件是什么,并对号入座到不同处理过程(第二层)。第二层就是对不同的动作进行相关操作。

为什么要判断控件呢:原因是robot对不同的控件类型所做一系列动作都是不同,那可它放动不同的sub-function中处理。如Robot对一个PushButton控制进行Click 操作和DBClick对都不同的,所以分类处理.


(图
3: 交互图)

以上图可以清楚地看到主程序和子程序和计算器之间的交互.


(
4: 活动图)


(
5: 活动图)

以上图可以看到主程序及子程序的内部处理动作.

 

ROBOT语言说明:

以下实例将以读取datapool的数据为例。


(
6: 为主程序)

ApplicationDatapoolData这些是sub-function. 读取名为”FWCalcData”的数据表名 名到sub-function.

 


(
7:ApplicationDatapoolData)

这个sub-function的作用是打开数据表,读取数据内容,按不同的控件类型转到不以sub-function如当控件类型是PushButton,就调用sub-function “processPushButton”.

所有这些子程序应放到Global.shl文件作为公共调用,这样就会方便多了。

 


(
8)

上图8sub-function”ProcessPushButton”. 是对PushButton这种控件的不同动作的进行处理.

 

另外在图2 数据表图中,还有部分是Verify Result的动作,其目的是判断实际值与数据表中期望值不一致时传到 Robot回放结果窗体显示。

Function如下:


总结

我分别使用了交互图、活动图去表达了1)人与Robot是主要是通过数据表数据驱动交互;2)主程序与子程序之间是如何嵌套实现测试框架,以及Robot程序的一系列动作有哪些。其实实现这些框架并不困难,只需要把握好以数据表数据驱动设计框架,不段补充数据表的动作,及不同异常的处理。相信以后你的机械人可越来越聪明。

 

-----全文完-----

特别声明:
如需转载此文,请给出指向本网站的连接,如下:
作者:关滨飞
摘自:http://www.cmmionline.net
如不能按此要求,请不要转载此文。

已发表 2008年3月30日 1:05 作者 faye

评论

 

zhangcb said:

很久没有见到过实践性如此强的自动化测试指导文章了!
自动化测试是很多公司的追求,但往往因为各种原因不能推动,其中一个重要的原因就是文中所提到的迫于进度和时间压力、无办法维护测试脚本,很多公司没有能解决这个问题,这样就陷入了想用自动化测试但又迫于无赖继续手工测试的怪圈中。
本文作者是想办法适应这样的挑战,总结出一套自动化测试的”框架“,这样脚本写好后,脚本维护工作量大大降低,测试人员需要做的就是把”数据表“填好就行了!

要做高级测试人员,更加需要编程的智慧,在这点上可能比开发人员的要求更高!强烈支持各位测试人员努力提高测试水平!
三月 30, 2008 16:29
 

xyuan007 said:

对于自动化测试框架来说,有两个难点。
第一,技术上的,对象识别。如果要想做好自动化测试,这个技术难题必须解决。而且我觉得ROBOT在这方面比QTP等工具还是要差一些。
第二,脚本的维护,我觉得这是导致很多公司自动化测试失败的很重要的原因。
七月 11, 2008 9:52
禁止匿名发表评论

日历

<2008年3月>
星期星期星期星期星期星期星期
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

聚合

Powered by Community Server, by Telligent Systems