51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4555|回复: 11
打印 上一主题 下一主题

[原创] QTP场景恢复-不同的激活方式产生的问题

[复制链接]
  • TA的每日心情
    无聊
    2018-2-28 12:22
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]测试排长

    跳转到指定楼层
    1#
    发表于 2010-3-8 18:08:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    场景恢复-不同的激活方式产生的问题

    操作步骤:


    1、增加一个场景恢复(当对象不存在时,关闭一个进程)
    Resources->Recovery Scenario Manager
    Object state->Select Object(选择对象:一“按钮对象”)->Recovery Operations(操作为:关闭一个进程)->Post-Recovery Test Run Options(尝试了Repeat current step and continue、Stop the test run这两种)

    2、在QTP对象库(Object Repository)中,把在Recovery Scenario Manager设置的那个“按钮对象”删除;

    3、加载该“场景恢复”,Test Settings设置如下:
    Test Settings->Recovery->Activate recovery scenarios:On every step
    这时,运行脚本,在使用到“按钮对象”的那行代码处会激活场景恢复操作,即把我设置的那个进程关闭;

    但是,Test Settings中设置如下时:
    Test Settings->Recovery->Activate recovery scenarios:On Error
    运行脚本,在使用到“按钮对象”的那行代码,会提示找不到该对象,但并不执行场景恢复操作;


    根据陈能技下面这篇blog所说,应该是不管我设置为On every step还是On Error,都不会激活场景恢复操作才是正确的啊!!
    疑惑中。。。
    了解的朋友请告知,谢谢了!

    http://www.51testing.com/index.php?uid-130600-action-viewspace-itemid-210202

    Situation #2 - Object Not in Object Repository (OR)   对象不在OR中这种错误也不会触发RS的执行!
    If you try to access a object from the OR and it does not exist in the OR at all, then QTP will throw an error and RS won’t be fired. Object not found in object repository error is treated as a Script. error by QTP and is raised directly.
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2010-3-12 09:52:09 | 只看该作者
    根据个人对于Recovery Scenario(RS)的使用经验来看,你对 RS 的理解有误,或者说是没有真正理解RS.
    RS类似于开发语言中的异常处理,如果你做过Java 或 C++开发就容易理解了。当脚本在运行过程中遇到某些错误,而这些错误又符号某个RS的触发条件(或触发了某个RS),那么RS 就可以正常发挥作用了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
    发表于 2010-3-12 09:54:58 | 只看该作者
    你的设置 Test Settings->Recovery->Activate recovery scenarios:On Error
    这不是RS的触发条件! 你应该在 RS Manager的 Trigger里面选择 Test Run Error

    [ 本帖最后由 walker1020 于 2010-3-12 10:25 编辑 ]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
    发表于 2010-3-12 10:03:29 | 只看该作者
    注意:我在2# 的回复中的“脚本在运行过程中遇到某些错误”这句话。“某些”的含义是,如果QTP遇到了下面的错误,那么QTP不会调用RS,也就无法达到你的预期目标:
    1,对象在OR中不存在,或Action所对应的OR 根本就不存在;
    2,Action  was mising;
    2,脚本中有语法错误,如调用函数的语句中多了或少了一个参数;
    3,被调用的外部文件有错误。如Action调用了某个VBS文件,而这个文件里面的某个Function或Sub Function有语法错误。
    4,。。。。
    如果出现了上面的错误,那么QTP会直接弹出一个对话框,必须进行手工处理才可以。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
    发表于 2010-3-12 10:05:21 | 只看该作者
    目前过内外关于RS的研究比较深入的参考资料不多,因此需要你去研究、实践,才能真正掌握它。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-2-28 12:22
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]测试排长

    6#
     楼主| 发表于 2010-3-12 13:59:32 | 只看该作者

    回复 4# 的帖子

    就我的理解,RS相当于异常处理
    只是有时为了验证这个异常处理是否处理妥当
    所以刻意制造一些异常情况,看其处理是否按所想的进行

    我在这里制造的异常情况是:
    在QTP对象库(Object Repository)中,把在Recovery Scenario Manager设置的那个“按钮对象”删除;

    按“walker1020”4#及陈能技所说,这时,应该都是“QTP会直接弹出一个对话框,必须进行手工处理才可以”



    就我试验的结果:

    1、加载该“场景恢复”,Test Settings设置如下:
    Test Settings->Recovery->Activate recovery scenarios:On every step
    这时,运行脚本,在使用到“按钮对象”的那行代码处会激活场景恢复操作,即把我设置的那个进程关闭;

    2、但是,Test Settings中设置如下时:
    Test Settings->Recovery->Activate recovery scenarios:On Error
    运行脚本,在使用到“按钮对象”的那行代码,会提示找不到该对象,但并不执行场景恢复操作;


    第2种设置,即“walker1020”所说的情况;
    但第1种却是不同的;
    我想弄明白的是,按你们所说,应该都是第2种那样的效果才对;
    为什么不同的设置,会出现第1种的效果呢?

    [ 本帖最后由 fairylly 于 2010-3-12 14:00 编辑 ]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-2-28 12:22
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]测试排长

    7#
     楼主| 发表于 2010-3-15 17:02:34 | 只看该作者
    不解ING。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2011-1-6 09:53:53 | 只看该作者
    为什么我设置了恢复场景但是他不会触发
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2012-9-22 12:16:37 | 只看该作者
    我也试过了,删除对象不会触发,即使选择On any error。
    请哪位高人指点下,什么情况下会触发?举个列字,删除对象不行,那什么可以?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2012-9-22 21:51:24 | 只看该作者
    没看明白lz想要表达什么意思,按照楼主的设置方式,应该是在QTP运行过程中如果object的state与lz指定的values相同则触发RS,现在既然object not found,当然不会触发RS。

    walk 2010说的完全正确。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2012-9-22 21:53:08 | 只看该作者
    回复 6# fairylly

    第二中没有激活RS是正确的,因为你设置的RS触发条件是监视object 的state,而不是test errors,这是两个不同的触发条件
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2012-9-24 22:19:45 | 只看该作者
    没有人知道什么情况下RS会触发吗?等待高手出现。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-23 17:20 , Processed in 0.076385 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表