QTP自动化框架建设

其实自动化测试框架就是一种规范的集合体,在自动化测试团队开发过程中,经常会遇到很多这样和那样的问题,例如:

(1)测试脚本不统一,出现很多重复脚本;
(2)在对象库中含有很多重复对象,导致对象混乱;
(3)测试脚本全部为Hard Code,没有实现部分可配置,导致维护成本过大。

以上这些只是一些比较常见的问题,其实在自动化测试过程当中遇到的问题还远远不止这些,那么要解决这些问题,就必须要为其定义适合项目的规范。例如,脚本不统一,可以对每个脚本写法定义严格的规范,定制共享函数库;对象库重复混乱,可以使用共享对象库来解决;测试脚本全部为Hard Code,则可以把部分的关键字进行分离。

下面我主要通过三个方面来阐述我的一点框架测试建议。

1. 测试数据
对于规模不大的自动化测试,我建议采用Excel来组织你的测试数据。当然,我们还是要采取分层的方式,有一张总表以及具体的细表。每条test data都有它自己的工作流。工作方式类似的如下方式:

QTP载入Excel数据文件,通过遍历总表所有行来执行所有的test cases。在这个大循环内,通过总表的索引取出细表的数据,然后以列名为key存放在VBS里的字典里,在脚本中用的时候直接TestDataDictionary.Item(“Column_Name”)取出即可。

2. 工作流
建议采用XML来组织你的workflow,下面是个简单的例子:

<flow_forA>
     <function> function_step1</function>
     <function> function_step2</function>
     <function> function_step3</function>
</flow_forA>

比如我们在测试数据中给该test cases定的工作流是flow_forA,则QTP在执行的时候会去work flows里找到名字叫flow_forA的节点,并遍历执行它的子节点函数来完成这个工作流。每个函数都有一个返回值来表示执行结果,当其中某个结果为fail的时候,QTP应该退出执行。

3. 多进程

QTP有两个不好的地方,一个是它的脚本执行/对象识别速度过慢。另一个是它的独占性,一台PC只能有一个QTP实例。第一个缺点我们还能通过优化对象识别方法来克服,而第二个我们就无能为力了。。。。

这样一来,为了加快测试执行,我们通常需要同时在几台PC上运行QTP。那怎么来分配我们的test cases给QTP以及收集测试结果呢?

最原始的方法可能是给每台PC分配独有的test cases,最后把这些PC上的运行结果收集在一起。这样做有几个缺点:(1)PC使用率不够高。因为分配到的test cases数量和运行时间的差异,总有些PC会在其他PC还在运行时结束,这就造成了测试资源的闲置。(2)需要额外的精力来收集各PC的运行结果。(3)当某些PC意外停止运行的时候(QTP错误,PC死机等),分配给它的test cases就无法被执行了。

基于上述考虑,我建议使用shared folder或者数据库来同步各PC.每台PC都有完整的test cases列表,在loop这个列表时去取该test case当时的状态,是还没被执行,正在被执行还是已经执行完毕了。同时,在运行这个test case的时候更新它的状态。下面以share folder方式为例子来具体讲下。

(1)每台PC的测试脚本以及测试数据都是一样的,都配置了test cases status的shared folder路径。比如\\testing_pc\test_case_status
(2)各PC载入完整的测试数据(测试用例列表),在Loop这个列表的时候,去shared folder查询当前要执行的test case的状态,如果没有任何信息,说明还没被执行过,这时创建一个文件来更新该test case的状态,比如创建\\testing_pc\test_case_status\\testcase_A.lock。如果该test case是lock状态说明正在被执行,于是放弃执行,转至下一个test case。
(3)当某test case执行完毕或者错误退出时,删除lock状态。

1 month ago, this page was being read.

,

Subscribe to Comments