摘要:
1.框架的重要性.
2.什么是框架?
3.框架的特征.
4.如何实现框架.
1.首先先提出疑问: 什么是框架呢?
框架,即Famework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演; 一个没思想的机械人。而且,框架一般是成熟的,不断升级的。
2.测试为什么要用框架?
回归测试每个版本发布都包括新增加的功能和已有的功能,已有的功能已经在以前的版本中进行过测试,但是还需要在此版本中执行回归测试。在这种情况下,测试部门往往会考虑到,既然回归测试的测试用例都已经存在并且已经在上一个版本中执行过,那么在新版本中能否自动的执行这些测试?如果能这样的话,将极大的节省时间和资源,将有限的资源投入到新功能的测试上,缓解测试的压力。那我们就会想到用自动化功能测试代替手工测试.
当用工具进行自动化功能测试时,每个测试用例对应N个测试脚本,那算起来,脚本真是N多呀.那录制及维护这些脚本的测试人员就会叫苦连天,另一方面项目进度及成本的压力,根本没有太多余的时间给测试人员去花时间在自动化功能测试.
测试其实好多东西都能重用,假想我们把这个舞台都搭好了,你只需要集中精力完成系统的业务逻辑的测试,把这此业务逻辑转化成一批数据,那框架只需要读取数据就可以实现你的逻辑测试.例子就正如我们希望机械人给我们测试,那你只需要告诉他对象,动作,他就能实现你的工作,而不需要你去写脚本。智能吧。继续看下来吧。
那这个机械人是如何运作的呢。人类应该给他怎样的指令,他才能读懂并工作呢?
使用Robot的SQABasic脚本开发的Robot测试技术框架。此Robot测试技术框架以表驱动为指导思想,读入动态结构,解释并执行动态结构中的每一项,这是自动化测试的引擎。
(图1: 三者交互工作图)
下面我会以Window Calculator 作为例子解释,而测试目的是:测试Calculator所以功能的正确性。
数据驱动:Datapool及外部数据表驱动
Datapool是Robot的数据存贮文件,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)
上图8为sub-function”ProcessPushButton”. 是对PushButton这种控件的不同动作的进行处理.
另外在图2 数据表图中,还有部分是Verify Result的动作,其目的是判断实际值与数据表中期望值不一致时传到 Robot回放结果窗体显示。
Function如下: