51Testing软件测试论坛

标题: 脚本运行中随机产生错误如何处理 [打印本页]

作者: lingxin5013    时间: 2008-9-1 11:28
标题: 脚本运行中随机产生错误如何处理
如一个脚本可能在脚本的某一处随机出现错误.这样脚本就不运行了.
问题
  当出现不可预测的错误,但是我想继续正常下一步骤如何实现?
         
作者: lingxin5013    时间: 2008-9-1 11:54
高手帮忙
作者: zte_boy    时间: 2008-9-1 12:00
这个要看你的函数的组织形式了,你的意思是单个case内错误了还要继续运行这个case,还是但一个case出错后退出运行下一个case?
个人觉得前者没有意义
后者可以利用动态执行函数的方法加上on error resume next和on error goto 0 在主控action中来控制
当然,要求业务脚本用function形式组织
作者: lingxin5013    时间: 2008-9-1 12:09
我的意思就是单个ACTION内运行错误,与下一个ACTION无关,每个ACTION没有影响,我会在一个业务结束后结束场景.
所以我的意思就是你指的无意义的那种,第一种
假设我现在有5个CASE每个CASE中都出现了随机的错误导致无法运行,但是这些错误不是我预见的,但我知道这个地方可能出现错误.如何处理?
非常感谢LS
作者: fengmingbao    时间: 2008-9-1 12:18
原帖由 zte_boy 于 2008-9-1 12:00 发表
这个要看你的函数的组织形式了,你的意思是单个case内错误了还要继续运行这个case,还是但一个case出错后退出运行下一个case?
个人觉得前者没有意义
后者可以利用动态执行函数的方法加上on error resume next和on ...


on error resume next or

on error goto [Line number]
作者: lingxin5013    时间: 2008-9-1 14:40
详细点
作者: rcpp    时间: 2008-9-1 15:28
最简单的方式就是设置一下:
File->Settings
run选项卡
[attach]45061[/attach]
出错的处理可以自己选择
可以错误弹出框、停止运行、继续下一步语句、继续下一次action循环
作者: hsjzfling    时间: 2008-9-1 15:41
原帖由 lingxin5013 于 2008-9-1 12:09 发表
我的意思就是单个ACTION内运行错误,与下一个ACTION无关,每个ACTION没有影响,我会在一个业务结束后结束场景.
所以我的意思就是你指的无意义的那种,第一种
假设我现在有5个CASE每个CA ...


1. 对于在脚本的某个位置可能出现某种异常的情况,并且可以预知对这类异常的通用处理方法,这时可以用Exist方法,或者对某个对象的某个属性进行检查。 举个例子,已知在脚本某处可能会弹出某些异常的对话框,但只要点掉就行,并不影响程序运行,这时就能用Exist。

2. 单个Action内运行错误,希望结束掉本Action去执行下一个Action,这就轮到场景恢复(Scenario Recovery)功能大显身手了。新建一个场景,On Error的时候才启用,场景恢复的方式就是调用一个函数,来ExitAction,就能实现目的。
当然,场景恢复的功能并不局限于此,它也能对每一步执行后的状态进行校验,一旦满足了预先设定的某个条件,那么就可以执行预先设定好的步骤,使得测试能继续进行。

3. 程序中不确定的异常较多,或者懒得去对单个错误进行控制,那么可以用一种通用的野蛮的错误处理,即只要有一步执行出错,就结束本Test,去执行下一个Test Case。具体方法很多人都说过很多次了,不再赘述。

BTW,俺也是懒人,所以一直用第3种方法咯~

[ 本帖最后由 hsjzfling 于 2008-9-1 15:43 编辑 ]
作者: lingxin5013    时间: 2008-9-1 16:27
LS很辛苦 谢谢! 但这都不是我要的效果 仍然感谢!
LS的LS 你使用全局的方法总会在一些场合不食用但是仍然感谢
作者: hsjzfling    时间: 2008-9-1 17:31
原帖由 lingxin5013 于 2008-9-1 16:27 发表
LS很辛苦 谢谢! 但这都不是我要的效果 仍然感谢!
LS的LS 你使用全局的方法总会在一些场合不食用但是仍然感谢


那就再详细点描述你想要的效果好了

你在4楼的描述仍然不够清晰。
作者: rcpp    时间: 2008-9-1 18:16
原帖由 lingxin5013 于 2008-9-1 16:27 发表
LS很辛苦 谢谢! 但这都不是我要的效果 仍然感谢!
LS的LS 你使用全局的方法总会在一些场合不食用但是仍然感谢

lz想要的是啥效果啊?
settings是对单个脚本起作用的
作者: lingxin5013    时间: 2008-9-2 10:48
概括下我的问题是出现一些异常错误并且这 些错误我不能预料到结果,但是我知道发生在哪一行,那么如何处理???
比如现在我只有一个action 在这个action的24行 30行处有可能会发生一些异常错误,这些错误是我不能预计的,也就是错误的情况我也不是很清楚,假设出现错误我想继续完成接下来的代码内容.如和实现?
如果你要说使用场景那么假设现在我发现很多地方都可能出现错误,那么到处使用场景忙的过来吗?而且很是麻烦?
作者: rcpp    时间: 2008-9-2 12:05
我转述一下我的理解你看是不是:
“你知道错误的位置,但不知道是什么错误(希望记录下错误吗?)
发生了错误以后,希望从错误代码下一行继续执行。”

如果是上面这种,对脚本内可以用On Error Resume Next
针对不含调用的脚本,这样做跟在settings里when error occurs during run session设置为proceed to next step等效
作者: lingxin5013    时间: 2008-9-2 15:02
非常感谢LS 我在实验下
作者: centurystone    时间: 2008-9-2 18:04
on error resume next
...




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2