QTP错误处理机制

发表于:2014-1-28 11:15

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

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

  再来看错误恢复的后处理方式(Post-Recovery Test Run Options)有以下几种:
  Repeat current step and continue
  Proceed to next step
  Proceed to next action or component iteration
  Proceed to next test iteration
  Restart current test run
  Stop the test run
  我们看到Proceed to next step/ Proceed to next action or component iteration/ Stop the test run这三种方式在全局错误处响应理方式中也是存在的,Proceed to next step 这种方式更是和On ErrorResume Next 处理方式也是相同的。稍后会就此作进一步叙述。
  3. 三种错误处理方式的作用域
  本节阐述三种错误处理方式的作用范围,为了方便比较说明,这里假设三种错误处理方式为:
  · 全局错误响应: Process to next step
  · VBScript 错误处理: On Error Resume Next
  · 错误恢复后处理方式: Proceed to next step
  因为这三种处理方式效果一样,以后没有特殊说明,都采用以上设置,可以方便比较
  3.1 全局错误响应
  原则: 对该test 中的所有Action 均生效。也就是说在Action 里没有其他错误处理方式的时候,脚本运行过程中遇到的错误都会按照全局错误响应的设置进行处理
  3.1.1 对 Action 中直接定义的函数:
  对所有函数生效。如下例,如果全局错误响应设置成process to next step 函数testA 中的被零除语句 i=1/0 会跳过,三个msgbox 均可以执行。错误代码会逐级返回。
  3.1.2 对用ExecuteFile 引入的函数:
  与Action 中直接定义的函数处理方式完全一样
  3.1.3 对于Function Library 中定义的函数
  与Action 中直接定义的函数处理方式基本一致,对所有函数生效。但不同的是,对于错误代码,只能在Function Library 中传递,而不会传递到Action 中来。
  3.1.4 对于Action 的嵌套调用
  如之前所述,对Test 中的所有Action 均生效,自然嵌套调用的Action 也不例外。同Function Library一样,错误码只能在Action 内部传递,也就是说被调用Action 中产生的错误码不能传递到调用Action 中去。
  3.2 VBScript 的On Error 错误处理方式
  原则: 只对语句所在函数或Action 中该语句之后的代码生效,对子函数,调用Action 均无效。
  3.2.1 对 Action 中直接定义的函数:
  函数中错误抛出,不会继续执行错误代码。一个错误在函数/子程序中出现时,如果没有运行On Error Resume Next 语句,那么错误将被交给调用它的环境,这个过程一直重复到找到运行On Error Resume Next 语句的环境继续运行,或者找到缺省的脚本错误处理器。
  3.2.2 对用ExecuteFile 引入的函数:
  与对Action 中直接定义的函数的处理完全一致
  3.2.3 对于Function Library 中定义的函数
  Function Library 中定义的函数遇到错误抛出,执行系统缺省错误处理
  3.2.4 对于Action 的嵌套调用
  被调用Action 中的语句遇到错误抛出,执行系统缺省错误处理
  3.3 错误恢复场景 Recovery Scenarios
  原则: 任何函数调用和Action 中,只要满足触发条件,就会触发错误恢复处理和后处理
  前面讲过,错误恢复场景的触发条件是以下6 种
  Item in list or menu is not unique
  Item in list or menu not found
  More than one object responds to the physical description
  Object is disable
  Object not found
  Object not visible
  对于VBScript 的其他运行时错误,并不会触发错误恢复场景,当然也不存在错误恢复处理及后处理。但一旦在任何函数或者action 中满足触发条件,都会进行错误恢复处理及后处理,也就是说,其作用范围为所有Action 和函数/子程序中。当错误恢复完成后(包括错误处理及后处理),错误会被清0。如果错误恢复的后处理方式为Proceed to next step,处理完成后再次碰到VBScript 错误时如何处理呢?如新产生错误并不能满足触发条件,则原错误恢复中设置后处理方式不会继续生效,此时会遵循缺省错误响应或其他指定的错误处理。值得注意的是,如果错误恢复的后处理方式为Repeat current step and continue 或者Restart currenttest run,再次运行到该语句仍重复同样的错误,可能会导致死循环。
  4. 三种错误处理方式的优先级别
  错误恢复场景中的错误处理优先级最高 (Recovery Operation)
  On Error Resume Next 优先级次之
  错误恢复场景中的后处理方式优先级别再次之 (Post-Recovery Test Run Options)
  缺省错误响应优先级别最低
  也就是说,只要满足恢复场景的触发条件,就会进行错误恢复处理(Recovery Operation)。但是其后处理方式的优先级别和错误恢复处理的优先级别是不同的。如果触发错误恢复处理的语句之前有On ErrorResume Next,就不会执行错误恢复后处理中所定义的处理方式。当没有找到以上任何错误处理方式的定义时,才执行缺省错误处理。
  注意: On Error GoTo 0 其实就是指采用缺省错误处理,不可和On Error Resume Next 处理的优先级别等同起来。
  5. 自动化框架测试与实践
  5.1错误处理模式三种测试设计技术
  为了解决传统错误处理模式的不足,现在错误处理的技术往往采取如下的手段。
  图片处理技术
  伪视频技术
  视频技术
  5.1.1图片处理技术
  图片处理技术主要是基于原先的图片截图上进行扩展的,只要的目的是采取简便的方式来展示错误信息的显示,一般的操作过程如下:
  出现错误的时候开始截屏
  记录错误的控件的位置
  在图片上标示控件
  在控件附近标示错误的信息
  这样设计的目的就是希望方便测试人员或者开发人员能够很方便的了解导致程序出错的过程,接下来我会针对图片处理技术来进行实践。
  5.1.2伪视频技术
  伪视频的技术是为了展现因为测试过程而导致出现错误的现象。它所实现的过程是采取对每个操作过程的截屏,然后生成Gif格式的文件,类似一个动画的效果。伪视频的技术操作过程如下:
  自动化测试脚本在运行之初,初始化一段缓冲区来保存即将捕获的截图
  自动化测试脚本按照顺序进行逻辑顺序执行
  “伪视频程序”也在按照一定的频率进行截图处理,并把图片保存在缓冲区
  如果缓冲区达到最大容量,尽早的截图将会被新的图片代替
  一旦错误出现,自动化脚本通知“伪视频程序”,“伪视频程序”将手机缓冲区的截图,然后形成动态图片
  脚本运行停止
  5.1.3视频技术
  这是个真正的屏幕录制技术,采取的是自动化测试执行与屏幕录制平台操作的过程, 来录制自动化测试的一个过程。但是这个技术最大的问题在于,需要的空间比较大,如果空间小的话,就将会导致出错的过程难以有效地展现.
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号