06月12, 2014

QTP 脚本健壮性处理

在现在的自动化测试领域QTP依然占据着较大的比重,然后脚本的健壮性也一直是影响整个自动化项目成功与失败的重要因素。在之前工作中也整理了一些提高QTP脚本健壮性的建议,希望对大家有用;

环境

  1. 只开启一个IE浏览器且只有一个标签页(其它浏览器最好不开启)
  2. 最好是一个干净的运行环境(不启用其它多余程序)
  3. 没有人工鼠标操作或是键盘操作。
  4. 用例与用例间没有环境依赖。
  5. 环境预处理和后续处理,保证在运行完成后与初始环境一致。

脚本内部处理

  1. 适当在脚本内部添加wait等待时间(最好使用动态等待,在一定的超时时间内等待事物的成功与失败)。

  2. 当跳转到新的页面时使用Sync方法(建议每个跳转页面都使用)。

Eg: Browser(“360云盘 – 登录”).Page(“360云盘 – 我的云盘”).Sync

  1. 适当使用页面刷新。

Eg:Browser(“历史任务”).Refresh

  1. 在脚本运行过程中屏弊鼠标键盘操作。

SystemUtil.BlockInput ‘开始处
这里是你的脚本
SystemUtil.UnblockInput ’结尾处

  1. 在脚本运行过程中可以关闭其它有影响的进程。

关闭进程的方法:Systemutil.closeprocessbyname “GreenBrowser.exe”

  1. 如果是按钮首先要检查该按钮是否可用

Eg: yanzheng = Browser(“360云盘 – 登录”).Page(“360云盘 – 登录”).WebButton(“登录”) .GetTOProperty(“disabled”)

用GetTOProperty(“disabled”)获得对象disabled 的属性值,如果为1,则不可用,为0 则可用

  1. 当一个页面有多个WebTable对象时可以添加index属性获得唯一对象(有时不存在index属性)

  2. 当有检查超连接或是Link时可用检查链接属性的方法。

QTP错误处理机制

  1. 全局错误响应: Test setting中run设置

全局错误响应是qtp的系统缺省错误处理,当没有使用其他错误处理方式时,系统会自动调用这里指定的方式进行错误处理。

在整个脚本有效。 若是出错在Function Library,则错误号只存在library,不会传到Action中。

  1. VBscrīpt on Error错误处理: On Error Resume Next

VBscrīpt的错误处理方式,三种相关方式为:

a)On Error Resume Next: 一旦这个语句已经被处理,脚本将继续后面的程序,不理会已经出现的错误。

b)On Error GoTo 0: 使用On Error GoTo 0语句恢复缺省的错误处理行为, 在运行这个语句后, 发生的运行期错误将导致缺省错误处理,在qtp中,缺省的出错处理就是全局错误响应。

c)Err对象: Err对象有三个属性 Number, Source, Descrīption. Err对象在运行时错误发生的时候赋予新的值,原来的值将被丢弃。 Err对象是全局的, 不受函数调用的影响。 Err对象可以使用clear方法清空。 任何时候使用On Error Resume Next或者On Error GoTo 0都会清空Err对象。

只对语句所在的函数或Action中该语句之后的代码生效,对于子函数,调用Action均无效。若On Error 语句存在Action中而出错在Function Library则系统会调用全局错误响应处理。若是Action中函数调用,则会返回到使用On Error 语句的环境中。

  1. 错误恢复场景: Recovery Scenario.

触发条件有:

a) Pop-up Windowb) Object state

c) Test run error.

d) Application Crash.

错误恢复有以下几种方式:

a) Keyboard or mouse operationb) Close Application process

c) Function Call

d) Restart Microsoft Windows

本文链接:http://blogs.360.cn/post/qtp-脚本健壮性处理.html

-- EOF --

Comments