QTP 异常处理及场景恢复

发表于:2012-1-30 11:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:819longjiayan    来源:51Testing软件测试网采编

  在测试脚本执行过程中,由于所测试的软件可能会发生非预期测试检查点的异常,如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

21/212>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • 赵见华
    2012-2-08 15:41:45

    mantis 是什么

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号