1. 概述
本文针对QTP提供的运行时错误处理机制进行详细描述。内容包括各种错误处理方式的功能的介绍,各种机制的作用范围的分析,以及错误处理机制同时作用时的优先级别的分析。
2. 三种错误处理方式介绍
Quick Test Professional 中有三种错误处理机制,在这里定义为:
全局错误响应: Test Setting 中Run 设置
VBScript On Error 错误处理: On Error Resume Next
错误恢复场景: Recovery Scenarios
2.1 全局错误响应
全局错误响应在Test Setting 的Run 选项中进行设置:【File】—>【Settings】—>【Run】—>【When error occurs during run session】
QTP四种全局错误响应设置选项如下:
pop up message box: Quick Test 在出现错误时显示一个错误消息对话框
process to next action iteration:Quick Test 出现错误时继续下一个Action 循环
stop run: Quick Test 在出现错误时停止测试
process to next step:Quick Test 在出现错误时跳过错误语句,继续下一步骤
全局错误响应是QTP 的系统缺省错误处理,就是说当没有使用其他错误处理方式时,系统会自动调用在这里指定的方式进行错误处理
2.2 VBScript 的On Error 错误处理方式
由于QTP 使用了VBScript 作为脚本语言,自然地,VBScrip 的错误处理方式在QTP 中都适用。在VBScript中,与错误处理相关的三者为:
On Error Resume Next 语句
On Error GoTo 0 语句
Err 对象
2.2.1 On Error Resume Next
一旦这个语句已被处理,脚本引擎将继续运行后面的程序,而不理会已经发现的任何错误。
2.2.2 On Error GoTo 0
使用On Error Goto 0 语句恢复缺省的错误处理行为。在运行这个语句后,发生的运行期错误将导致缺省错误处理。在QTP 中,缺省错误处理就是全局错误响应。
2.2.3 Err 对象
Err 对象重要的属性有三个:Number, Source, Description,分别是错误号,错误来源,错误描述.Err 对象会在运行时错误发生的时候赋予新的值,旧的值会被舍弃。Err 对象不会受到函数调用的影响,它完全是全局的。Err 对象可以用Clear 方法清空,任何时候调用On Error Resume Next 或者On Error GoTo 0 的时候,都会清空Err 对象。
2.3 恢复场景Recovery Scenarios
Resources_Recovery Scenarios Manager…可以创建恢复场景。具体请参考帮助文档,这里只是说明对于运行错误的处理。在恢复场景中触发事件TriggerEvent 中的一个选项是Test Run Error,表示在运行过程中遇到错误时所采取的恢复处理方式。我们看一看下面对哪几种错误进行恢复处理,即错误恢复的触发条件:
Any Error
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
恢复处理(Recovery Operation)有以下几种方式:
Keyboard or mouse operation
Close application process
Function call
Restart Microsoft Windows
从恢复场景的触发条件可以看出,所有错误处理都是针对测试对象发生的错误而言的(Any Error 指列表中所有的其他错误类型),它并不处理被零除、非法赋值,内存分配错误等等VBScript 的运行时错误。这是和其它两种错误处理方式不同之处。为了说明这一点,我们不妨再看看Recovery Operation 中OperationType 如果选择Function Call,函数原型定义如下所示,所有的函数参数都必须包含有被测对象,触发函数必须遵循原型定义,否则函数无法执行。
再来看错误恢复的后处理方式(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视频技术
这是个真正的屏幕录制技术,采取的是自动化测试执行与屏幕录制平台操作的过程, 来录制自动化测试的一个过程。但是这个技术最大的问题在于,需要的空间比较大,如果空间小的话,就将
http://www.cnblogs.com/sirrah/archive/2011/06/15/2349172.html
相关推荐
### QTP错误处理机制概述 #### 一、概述 本文主要探讨QuickTest Professional(以下简称QTP)中的错误处理机制,旨在深入理解QTP如何管理运行时可能出现的各种错误,以确保测试脚本的稳定性和可靠性。文章将涵盖...
《QTP错误处理机制概述》 QuickTest Professional (QTP) 是一款自动化测试工具,用于创建和执行自动化测试脚本来模拟用户的操作行为,以验证软件应用程序的功能和性能。QTP 提供了多种错误处理机制来确保测试脚本的...
### QTP错误恢复机制-场景恢复功能 #### QTP错误恢复机制概述 QTP(Quick Test Professional)是一款广泛应用于自动化测试领域的工具,主要用于帮助软件测试工程师实现自动化测试脚本的编写与执行。QTP错误恢复...
QTP(Quick Test Professional),作为一款广泛使用的自动化测试工具,提供了丰富的错误处理机制,帮助用户更好地控制测试流程中的异常情况。本文将详细介绍QTP中提供的四种全局错误处理模式:Popupmessagebox、...
本文将深入探讨QTP中的错误处理机制,以及如何根据错误优先级进行有效管理。 首先,QTP的错误处理机制主要包括三种方式:测试运行时的错误处理、测试步骤级别的错误处理和自定义错误处理。这些方法都有其特定的适用...
这个工具可能提供了更多的定制选项,如自定义执行策略、测试套件的组合、错误处理机制等,以满足更复杂的测试需求。使用这样的工具,用户可以进一步提升测试效率,优化测试流程。 总之,QTP批处理处理测试脚本的...
错误处理机制是任何测试框架的核心组成部分,QTP也不例外。在QTP中,我们可以设定全局错误处理设置,以便在测试运行时捕获并处理预期或非预期的错误。这通常通过Test Settings进行配置,允许我们定义在遇到错误时...
QTP还支持高级特性,如增强型对象定位(Smart Identification)、对象存储库管理、测试的分层结构、异常处理和错误处理机制等。此外,QTP还提供了强大的API,允许用户自定义扩展和集成到其他系统中。 总结来说,QTP...
QTP的脚本主要基于VBScript语言编写,因此理解VBScript中的错误处理机制对于编写健壮的测试脚本至关重要。在本文中,我们将深入探讨“On Error”语句在VBScript中的应用,以及它如何在QTP测试代码中实现错误处理。 ...
QTP提供了三种错误处理机制: 1. **全局错误响应**:在测试设置的运行选项中可以配置全局错误处理策略,它适用于整个脚本,如果在函数库中发生错误,错误号仅存在于该库中。 2. **VBScript的"On Error"机制**:...
- 设计测试用例来模拟不同网络环境下的传真发送,以及错误处理机制。 - 通过QTP记录和模拟传真发送过程,验证是否能正确触发传真并接收反馈。 4. **删除订单**: - 检查用户是否有权限删除订单,以及删除后的...
3. **错误处理**:掌握异常处理方法,确保测试脚本能妥善处理意外情况。 4. **数据驱动测试**:有效利用数据表和其他数据源,实现测试案例的参数化。 5. **调试技巧**:了解如何使用调试工具定位问题所在,提高调试...
QTP的Error Handling机制允许在脚本中插入错误处理代码,以便在测试过程中遇到问题时能够进行适当的处理。理解并合理使用Try...Catch结构,可以提高测试的稳定性和可靠性。 六、对象智能识别与增强 QTP的Smart ...
8. **错误处理和调试**:QTP提供了丰富的错误处理机制,如try-catch结构,以及调试工具,便于找出和修复脚本中的问题。 9. **多语言支持**:虽然不是所有帮助都是中文,但中文帮助文档的存在使非英语使用者能更好地...
- `VCTE_L207_QTP_Theory05_v1[1].0.doc`:可能讲解QTP的高级功能,如错误处理、对象间关联、脚本调试等。 5. **学习建议** - 系统学习每个文档的内容,理解QTP的核心概念和技术。 - 实践操作,通过录制和回放...
5. **错误处理**:在编写代码时,应加入适当的错误处理机制,例如`On Error Resume Next`和`On Error GoTo 0`,来捕获和处理可能出现的运行时错误。 6. **脚本调试**:使用QTP的内置调试工具,如设置断点、单步执行...
7. **错误处理与断言**:QTP提供内置的错误处理机制,当测试过程中出现预期之外的结果时,可以设置断言来验证测试结果是否符合预期。 8. **关联与参数化**:关联用于处理动态对象,参数化则是将脚本中的硬编码值...
- **异常处理和错误恢复**:学习如何在脚本中添加错误处理机制,确保测试的稳定性和可靠性。 - **对象间关联**:学习如何处理对象之间的关联,特别是在对象属性变化时保证测试的准确性。 - **测试结果分析**:理解...
QTP提供了丰富的错误处理机制,如Try...Catch...Finally结构,以及调试工具,如断点、步进执行等,这些都能帮助你在遇到问题时快速定位并解决问题。 最后,本指南可能还会涉及QTP的扩展性,如VBS(Visual Basic ...