收藏本站 收藏本站
积木网首页 - 技术学院 - 软件测试 - 网站黄页 - 常用手册 - 站长工具 - 技术社区
软件测试 > QTP > 正文

首页 | 领域细分: 游戏测试 安全测试 手机测试 Web测试 | 技术研究: 单元测试 入门教程 用例设计 性能测试 功能测试 | 测试职场: 面试精选 职场发展 面试试题

测试管理: 配置及流程 - 需求管理 - 质量验收 - 缺陷管理 - 其它管理相关 | 开发语言: PHP技巧 - PHP基础 - PHP实例 - PHP错误代码

测试工具: LoadRunner JiRa QuickTestPro RoBot WinRunner TestDirector 其它测试工具 | 数据库: Mysql数据库 Oracle数据库 CSS/DIV基础 HTML基础

QTP 异常处理及场景恢复

来源:互联网 日期:2013-09-29 11:00

  在测试脚本执行过程中,由于所测试的软件可能会发生非预期测试检查点的异常,如UI报错退出、莫名的窗体提示等,登陆的WEB页面也会经常出现刷新异常,这样会直接导致脚本找不到UI、对象而运行失败。因为是未知地、随机地发生此异常,而不是测试设计的检查点异常,所以在自动化测试的角度无法确定测试失败的原因和步骤,更无法实施Bug查找。在无人值守的情况下,此类异常还会导致后面的自动化测试工作无法进行。为了解决次为题,可以使用异常处理及场景恢复机制来弥补当前QTP的测试缺陷。场景恢复存在的目的在于避免测试过程中因为异常而引起的中断。并不是所有测试脚本都需要场景恢复,设计完美的测试脚本不仅可以让自动化测试过程更顺畅,同事还能够捕获可能产生的程序缺陷。

  1、异常处理的解决方案

  在QTP中,异常处理的方法很多,而且不同软件公司的使用情况也不尽相同。这里介绍一种常用的方法,供大家学习

  1)设计思路

  (1)VBScript脚本中的“On Error Resume Next”意为,当脚本发生错误时自动运行下一行代码。可以利用此语句来解决QTP代码异常的问题。

  (2)通过VBScript脚本中得“Err.number”可以得出发生错误的信息代码,即通过判断当前程序是否发生了错误来进行Bug捕获。可以编写ErrorHandle()函数置于组件函数库中,用于捕获异常及相应处理。

  (3)处理的内容包括调用常规处理函数及场景恢复函数。

  异常处理流程如下:

  启动程序代码异常忽略—->程序声明—> 测试代码—->是否有异常:1.有,捕获异常&调用场景恢复;2.没有,执行下一个action

  2、异常处理机制伪代码及使用指南

  建议在QTP安装目录中得Dat目录下新建文本文件,命名为“ActionTemplate.mst ”,在QTp新建Test或Action时自动读取这个模板内容作为Action代码的一部分,可以利用这一特性来进行异常捕获。例如,可以在ActionTemplate.mst下写入如下代码。

On Error Resume Next
‘代码编辑区______________________________

‘结束编辑___________________________

call ErrorHandle()
捕获异常及异常处理函数
‘**********************************************************************************
‘函数作者:
‘函数功能:错误句柄处理
‘输入参数:无
‘返回值:日志文件、错误抓图
‘调用函数:LogPrint、SceneResume
‘*******************************************************************

Public Function ErrorHandle()

if Err.Number0 Then
‘ 打印记录详细Bug信息
LogPrint TestName&””&ActName&”Error Num: ” &Err.Number & “; Error Src:” & Err.Source & “; Error Desc: “& err.Description

Err.Clear
Setting.WebPackage(ReplayType”)=2 ‘Default is 1
Desktop.CaptureBitmap Environment(“Dir”) & “错误抓图”&TestName&”_”&ActName&”.bmp”,True
Setting.WebPackage(“ReplayType”)=1
SceneResume(LinkText) ‘调用场景恢复函数,后面会对此函数进行说明
End If

End Function

  3、场景恢复函数说明

  场景恢复函数是由几个函数组合而成的,包含了日志函数、系统自动抓图函数、场景恢复调用的业务组件函数等。

  在执行测试程序的某个功能模块前,需要进行应用程序登录。

  场景恢复函数的作用如下。

  * 禁用被测试系统的所有相关进程。

  * 调用登录模块的业务组件。

  * 判断是否登录成功,并尝试连接5次。

  针对场景恢复函数特别说明如下:

  (1)在第一个Action发生一次而关闭的时候,用一个变量记录当前测试的页面。在场景恢复执行登录应用程序成功后,会自动根据发生异常时记录的变量,连接到异常发生时候的页面,并进行下一个Action的操作。

  (2)设置在登录的时候每隔5分钟尝试一次登录,并且总计尝试5次登录。这样设置的好处是,当网络由于某些原因突然连接不上,又无法确定网络连通的时间,在25分钟内尝试了5次后仍然登录不成功,那么久可以认为异常恢复失败而退出整体自动化测试的执行,并且记录日志”可能由于网络问题或其它原因,应用程序当前无法正常登录“。此时就需要人工查找网络断开的原因并恢复自动化测试的整体运行。

  以下函数的代码段为伪代码,思路叫清晰。由于每个项目不同,登录环节也会不同,因此大家可以根据不同项目对以下函数进行修改使用。

‘**********************************************************************************************
‘函数作者:
‘函数功能:当程序发送异常,进行场景恢复
‘输入参数:LinkName:Action发生异常时候,变量记录的模块链接名称
‘返回值:无
‘调用函数:业务组件函数
‘调用函数:业务组件函数
’************************************************************************************
Function SceneResume(LinkText)
For check=0 to 4
‘以IE为例,禁止用所有的IE进程
WQL=”SELECT * FROM Win32_Process WhereName=’IEXPLORE.EXE’”
Set objServices=GetObject(“WinMgmts:”)
Set colobjSevicesSet=objServices.ExecQuery(WQL)
For Each objSWbemObject In colobjServicesSet
obWbemObject.Terminate
Next
‘登录应用程序(业务组件函数)
If 登录成功 Then
Exit For
else
TryID=5
End if
wait(300)
Next
If TryID=5 then
LogPrint “可能由于网络问题或其它原因,应用程序当前无法正常登录”
End If
End Function

  大家还有什么其它的异常处理方法及场景恢复的方法都在评论的地方回复出来吧,大家一起学习。

本周排行

别人正在浏览

强悍的草根IT技术社区,这里应该有您想要的! 友情链接:b2b电子商务
Copyright © 2010 Gimoo.Net. All Rights Rreserved  京ICP备05050695号