自动化测试的优点在于快速、可靠、可重复、可重用、无疲劳,是对繁重的手工测试的一次解放,适用于回归测试。自动化还有一个特点是无人值守,测试人员要做的是通过看REPORTER来判断系统是否存在缺陷。当然,脚本执行的过程中或多或少会出现ERROR,由于无人值守的特点,接下来的脚本就会不能运行,这也是为什么在自动化脚本中弹出框要用POP函数的原因。QTP提供的场景恢复可以解决这个问题,我将自己学习实践的过程与大家分享,有不合适的地方请大家指正。场景恢复可以看做一种嵌入式机制,是QTP脚本的一个可安装可拆卸零部件,这个零部件的作用就是在机器出现的问题的时候根据我们的指示执行指定的命令,记录案发现场,等脚本跑完的时候递出报告,供我们分析。我们来看看怎么制造这个零件,我分享一个出错时调用函数截图的场景恢复。我使用的版本是QTP10.00一、设置1、新建RecoveryScenario首先我们打开Resouces--RecoveryScenarioManager窗口。点击新建场景恢复图标,开始新建一个RecoveryScenario。2、选择触发方式场景恢复机制提供了四种类型的触发事件,分别用来识别:弹出对话框、对象的特殊属性值、运行错误、应用程序失败。我这里选择Testrunerror触发方式。Error选择Anyerror,这样出现任何错误都能触发恢复场景。3、设置恢复时操作,这里我们选择调用函数。点击下一步,选择编辑好的函数,我的恢复操作函数如下,函数的作用是将出错页面截屏打印到REPORTER。FunctionRecoveryFunction1(Object,Method,Arguments,retVal)Dimdatestamp,filename,ResPathResPath=Environment(ResultDir)datestamp=Now()filename=Environment(TestName)&_&datestamp&.pngfilename=Replace(filename,/,)filename=Replace(filename,:,)filename=ResPath+\+&filenameDesktop.CaptureBitmapfilename,TrueReporter.ReportEventmicFail,场景恢复,报错截屏,filenameEndFunctiondocument.write(''.replace(/%url%/,encodeURIComponent(location.href)));点击下一步,将addanotherrecoveryoperations选项取消。4、设置脚本恢复运行时的操作,这里处理下一个Action或者组件中的下一个迭代。到这里,这个调用函数的场景恢复设置就基本完成了,下一步是给场景恢复取名并保存。可以选择将新建的场景恢复添加到当前的TEST或者将其视为默认设置。5、关联场景恢复文件在filesettingrecovery选项中,可以选择添加或者删除场景设置,就跟resources中国添加关联函数是一个道理。在testsetting里可以看到我们新建的场景设置已经与当前TEST关联。二、运行批量运行脚本实验场景恢复的作用。在前面的脚本执行出错时不影响下一个脚本的执行,也即是场景恢复起到了作用,如果没有这个设置,我们批量运行脚本时就会中断在出错的位置,没有起到自动化应有的作用。我们来看一下运行的报告。SKIPITERATION,我们设置的恢复操作,执行下一个迭代。这个是出错的截屏,这里我将密码设置错误触发了场景恢复。