QTP同步机制解决办法

2011-12-29 00:00:00郝爱语雷晖
考试周刊 2011年67期


  摘 要: QTP是一种自动化测试工具,它支持脚本的录制和回放的功能。在脚本回放时,有时可能由于页面没有加载完成,会出现找不到控件的提示信息,解决这样的问题实际上就是解决QTP同步处理的问题。作者结合实例总结归纳出五种QTP同步机制解决办法。
  关键词: 自动化测试 QTP同步机制 解决方法
  
  1.引言
  说到QTP,不得不提及Synchronization。在自动化测试中,同步等待是一个很重要的问题,特别是Ajax的出现,使这个问题更为复杂。在QTP工具平台中实际上可以统一设置同步等待时间,比如20秒。但这样做效率并不高,如果遇到需要同步等待的情况时,20秒有可能不够;但如果遇到根本不需要同步等待的情况,则变成了无效等待,延长了脚本运行时间。所以利用设置相同的同步等待时间,脚本效率并不高,一般我们不采用这种办法。QTP同步机制解决办法有多种,而且每一种办法所适用的情况也不尽相同。
  2.QTP同步机制简介
  (1)QTP简介
  QTP全称为HP QuickTest Professional software,最新的版本为HP QuickTest Professional 10.0。HP QuickTest Professional提供符合所有主要应用软件环境的功能测试和回归测试的自动化。采用关键字驱动的理念已简化测试用例的创建和维护。它让用户可以直接录制屏幕上的操作流程,自动生成功能测试或者回归测试用例。专业的测试者也可以通过提供的内置脚本和调试环境来取得对测试和对象属性的完全控制。QTP进行功能测试的测试流程分五个步骤:制订测试计划→创建测试脚本→增强测试脚本功能→运行测试→分析测试结果。
  (2)QTP同步机制介绍
  什么是同步?举一个简单的例子,如图1所示。在Flight Reservation系统中预订一张机票,参数设置见表1。预订机票过程的滚动条移动就是QTP同步等待的过程。
  图1 Flight Reservation系统中预订一张机票时同步问题截图
  表1 Flight Reservation系统中预订一张机票的参数设置
  (3)需要增加同步等待时间的几种情况
  ·当一个进度条需要达到100%完成时
  ·当一个状态消息出现时
  ·当命令按钮的状态更改为可用状态时
  ·一个窗口的打开需要数据输入时
  ·一个操作后会对应弹出一个消息时
  3.五种QTP同步机制解决办法
  (1)对象的默认等待时间
  这是QTP本身自带的同步机制,运行QTP脚本过程中要对某个对象进行操作时,QTP会根据对象库中对象的属性或是对象描述的属性对进行搜索此对象,如果在一段时间内仍未找到相应对象则认为些对象不存在。而这个时间则是对象的默认等待时间,可以在File→Settings→Run→Object Synchronization中设置,默认时间是20秒。
  这种办法虽然可以避免错误提示,但当等待时间超过20秒,只能设置更长大的时间,理论上只要时间足够长就可以解决问题,但执行效率也会十分低,而且在大多数情况下不需要等待这么长的时间。
  对于C/S项目,等待时间以同步方法为准;对于B/S项目,等待时间系统会取并集,把自带同步时间和自定义同步时间相加。
  (2)对象的Exist属性
  这种方法用在if...then语句块中。每个对象都会有Exist属性以判定些对象是否存在,其可以设置一个参数即是等待时间,在这个时间进行对象搜查。使用时需要注意两个问题,一是这是个对象属性而不是对象方法,它有返回值,是一个布尔值。所以不能将"Browser("苏工院").Page("苏工").WebEdit("wd").Exist(5)"作为一个语句,必须接受其返回值,不然会提示引对象不支持此方法;二是其参数是秒而非QTP tutorial上提示的毫秒。
  (3)对象的waitProperty(“property”,“expect Vaue”,timeout)方法
  在QTP中几乎每个对象都有这个方法,此方法是指在timeout时间内等待此对象的某个属性值为期望值。如果在timeout内属性期望值出现则立刻执行下一步,否则等待timeout。这种办法使用时需要注意问题是QTP设置同步点的方法:在录制状态下,选择Insert→Synchronization Point,选择要同步的对象,设置要同步的属性则可设置一个同步点了。
  (4)Synce方法
  这种方法主要针对Web系统,是网站测试中的专用方法,主要用于页面载入时,使用范围较小,且简单实用。
  (5)wait()函数
  执行脚本遇到wait()函数时,暂停执行脚本,然后等待定义的时间,时间满后继续执行下一步。Wait(timeout),等待时间是此方法的唯一参数,它由秒和毫秒组成。基于Ajax局部刷新的Web测试通常采用这种方法解决同步问题。Wait()函数的缺点是脚本运行时间长,假设一般中大型项目的自动化测试用例有500多个,对应有500多个脚本,如果每个脚本都等待50秒的话,那么,所有脚本运行一次的等待时间将会很长。
  4.结语
  通过以上归纳和总结,我们可以看到根据不同实际同步处理所采用的办法也不相同,在特定的案例中,采用恰当的同步处理办法才能提高QTP脚本的执行效率。QTP同步机制解决办法在一般的自动化测试相关书籍中提及的并不多。本文结合实际项目总结归纳出的五种QTP同步机制解决方法,对于自动化测试初学者具有一定的指导意义和参考价值。
  
  参考文献:
  [1]常广炎.QTP8.2自动化测试工具技术实践[J].标准与技术追踪,2008,(4):44-46.
  [2]杜斌.QTP脚本参数化的应用方法[J].中国金融电脑,2010,(6):67-71.
  [3]李金凤.基于QTP的软件功能测试与案例研究[J].信息技术,2009,(10):85-93.
  [4]田艳琴.QTP从实践到精通[M].北京:电子工业出版社,2010.
  [5][美]Ron Patton.软件测试[M].北京:机械工业出版社,2010.