51Testing软件测试论坛

标题: IE crash如何解决? [打印本页]

作者: DontTest    时间: 2005-8-23 11:45
标题: IE crash如何解决?
各位有没有碰到过用robot回放时,IE crash的问题(就是跳个IE 错误的对话框)...经过分析,我认为是与javascript有关系的.但是没有办法解决.

    比如一个 Checkbox,有onclick的js,此js执行较慢. 可能会有问题(就是说IE不是每次都Crash).
    我尝试了以下办法:
          1.ComboBox Click 前面 ,后面加delayfor.  
          2.在GUI Play options中修改 Delay between commands,变成400,或更多.

    以上办法都无效!!!

所以还请版主及各位高人指点一二.感激不尽!
作者: ilovejolly    时间: 2005-8-23 14:21
这个问题跟延迟没有关系,因为如果是那种要点确定的提示框,你不对它进行操作它是不会因为时间的关系消失的。如果要从脚本去解决的话会比较麻烦,可以每次页面刷新或者浏览新页面的时候作判断,再来操作。
但这个问题最好的解决办法是楼主把这是个什么样的对话框贴出来或者描叙清楚点,因为这个问题应该和robot是没有关系的,从IE本身入手应该比较好解决
作者: DontTest    时间: 2005-8-24 09:24
谢谢版主!

就是一个普通的web page ..不会有对话框(可能我前面描述有误,当点击某个CheckBox时,会执行响应js,比如把其他相关的也选中,或进行一些计算..但没有对话框跳出来的)   

问题是:就在这一"点"的时候, IE坏掉了!
作者: ilovejolly    时间: 2005-8-24 10:10
我刚才试了下,用checkbox的onclick做了个i++到10w和100w的例子,10w速度还算正常,100w就慢,再大ie就报错。说几个问题
1,js在客户端执行,我们通常用来做一些简单的处理,所以速度都是很快的。一般复杂的操作或者计算我们都是放在后台代码而不放在js里面的。
2,js的执行速度也和机器的配置(硬件)有关系的。
3,如果你的环境和配置(软件,如ie等)没什么很大问题,那么对这个程序作功能测试是没有意义的,因为这样的速度客户肯定忍受不了。
4,和你们开发人员谈谈吧。
5,如果可以的话请楼主把那段js代码贴出来看下,在下有点感兴趣。
作者: DontTest    时间: 2005-8-24 11:01
标题: 谢谢版主的关注!
其实个人感觉点一下checkbox,延迟大约是1秒...
所以错可能与js的其他特性有关..并且也不是每次都错.
<INPUT TYPE = "checkbox" NAME = "EPMeetingType11" VALUE = "on" checked onclick = dimAA(this.form,11,13)>


js 如下:
        function dimAA(form,i,meetingtypeid)         {
                setEPMeetingType(form,i, meetingtypeid);
                UpateMeetingTypeSelectItem(form);                        form.Wireless.checked = (form.EPMeetingType2.checked)?true:false;                                                form.SupportRecordPlayback.checked = (form.EPMeetingType2.checked || ( form.EPMeetingType9.checked==false))?true:false;
                form.SupportRecordEditor.checked = (form.EPMeetingType2.checked || (form.EPMeetingType9.checked==false))?true:false;
        }


还有一些function,太多了,传不上来啊...要不我mail给你?
作者: ilovejolly    时间: 2005-8-24 16:25
这个我用自己的机子录了一段,放了几次都没有问题
如果哪个朋友知道这个问题的原因,请告诉大家
作者: DontTest    时间: 2005-8-25 11:22
标题: 肯定有朋友碰到过同样的问题!
真的非常感谢版主的热心帮助!
  我这边问题仍然存在的,并且IE Crash时常会出现(不只是这一段Scripts),,,已经困扰我们TA很久了,但苦于一直找不到真正原因,及解决方案..
   所以到此来求救,希望得到各位的更多的帮助,感激不尽.
   同时也希望能同各位测试界的朋友多多交流,大家一起进步.

  最后再次感谢ilovejolly!
作者: DontTest    时间: 2005-9-1 21:21
在一个老外的网站上找到了一点提示:2003.06.**版的IE Crash的问题比较多。
所以请问最新是什么版本了?
作者: 司空公子    时间: 2005-9-2 00:01
碰到crash了,就在log里记录一下,然后调用windows API,把窗口关闭,重新打开个新的,进行下面的测试好了
作者: ilovejolly    时间: 2005-9-2 00:09
他的crash,好象不是抛出异常的意思
作者: 司空公子    时间: 2005-9-2 00:30
Checkbox,有onclick的js,此js执行较慢. 可能会有问题(就是说IE不是每次都Crash)

首先不是robot脚本的问题,不然可以用on error解决。那么不管是IE弹出警告框,还是出现页面错误,甚至直接就消失了,只要没有出现预期的目标,那么只需要记录下这个情况,想办法绕过它,继续进行下面的测试就行了。
测试人员的任务就是尽量多的发现问题,在测试过程中捕获到这里出现了问题,交给开发人员解决好了。测试过程中出现的某些问题并没有影响到其它功能的测试,那么只需要记录下当时的情况后,绕过它继续进行下一个case的测试。总不能自动化脚本就停在那了?
作者: DontTest    时间: 2005-9-2 11:12
标题: 谢谢两位斑竹!
只是"只需要记录下这个情况,想办法绕过它", 这个办法难想啊..
1.怎么记录? 是关键!

2.怎么绕过?
"IE弹出警告框,还是出现页面错误,甚至直接就消失了",基本就是这三中情况, 如何记录他们? 要用其他工具吗? 如过不用, Robot会一直停在那里, 根本就不会往下执行,所以你在最有可能出现意外的情况 的语句 下面 就处理可能的异常, 但是它就停在 出现意外的情况 的语句 了, 你想处理也没有办法, 因为它根本不会执行到那里...

还请 司空, ilovejolly 及各位高人明言.
作者: ilovejolly    时间: 2005-9-2 11:22
主要是没碰到这样的问题,又不知道到底是怎么产生的
1 IE弹出警告框,怎么以前说没有对话框?还是理解不一样?弹出来的,是不是需要点确定才能继续的那种?
2 页面错误,是指状态拦显示错误(这种错误多半是js的问题),还是ie直接崩溃掉?
3 页面消失? 这个...
作者: 司空公子    时间: 2005-9-2 13:42
我前面说过了,你的每次操作之后,总会有一个返回的结果告诉你你的操作完成了。比如换了页面或者页面上的某些文字变化了,还是其它一些什么,这些都是属于你的期望值。那么你只需要判断有没有出现这些期望值就可以知道你测试的功能是否正常,这些都应该在需求里有定义的。你可以用SQAWaitObject或者SQAWaitProperty之类的来检查你的期望值是否存在。除此之外的,可能就是软件或者其它原因造成的问题,那么用SQALogMessage在log里记录下这个地方存在问题,然后就执行相应的处理的代码。

在我的测试过程中,上面说的三种问题都碰到过
1。弹出警告框。有时候是IE的,有时候是java的。大多数对话框在取消之后,都不影响后续功能的测试,那么在脚本中一旦捕获到这类对话框,那么就执行相应的取消操作,同时在log里记录下来这个case fail掉了。然后直接就关闭这个case的脚本,继续执行后续脚本。
2。页面错误。在自动化测试过程中,有时会遇到点了某个链接,等待它刷新页面的,结果等了老半天,结果返回给我一堆页面错误的信息,有时候是java的异常信息,有时候是页面找不到之类的。那么发现没有期望值了,这个case也就直接fail掉了。而且由于不存在可以绕过去继续使用软件的情况,那么只好调用windows API关于所有的窗口,然后再次打开web页面,再进行后面的测试。碰到这种情况还可以自己调个API函数,把当时的情况给截个图,方便开发人员研究。
像我碰到的这种情况,都是在自动化过程中出现的,手工测试从来没有发生过。后来在跟开发人员研究的过程中,发现是代码里的RPC的部分有问题。前面一个RPC请求发出去后,虽然有可能获得了结果,但它的线程没有释放掉,而后面一个RPC请求又发出去了,结果造成死循环,页面没有相应了,结果就显示错误了。之所以自动化会出现这种问题,而手动的没有,可能就是因为自动化每个操作太快了,间隔太短了,以至于它还没来得及释放线程呢。不过倒也通过这个发现了软件中存在的问题,呵呵,自动化的又一个优点^_^。
3。页面直接就消失了。这个。。。。。。。就比较严重了,碰到这个,当前的case就不执行了,直接再打开web进行下面的测试吧。

以上是我在测试过程中碰到的实际情况,欢迎讨论
作者: ilovejolly    时间: 2005-9-2 14:06
公子说的情况,我都知道
这个问题我和DontTest很久以前讨论的,主要是我不明白他的意思。
到底DontTest所说的IE坏掉了,或者crash,是个什么状态,我目前还没有一个清晰的概念。
作者: DontTest    时间: 2005-9-2 14:08
标题: 谢谢斑竹s.
ilovejolly,
   "IE弹出警告框" 我见的其实不多见 ,这种情况相对好解决,司空已经说了.
我最的障碍是 跳出IE错误对话框 ,(就是还询问你是否发送错误报告给 Microsoft的那个框框)  , 这个跟一般的 页面错误是不一样的. 还有就是IE关掉...

To 司空
    先谢谢你如此耐心的解答!
    问题的关键在于:"你的每次操作之后,总会有一个返回的结果告诉你你的操作完成了"-----如果是IE 错误(IE关掉也是), 脚本根本就不可能再往下执行了! 似乎它认为这步没完成似的, 就是永远的停着不动.  根本不能做任何处理...
作者: ilovejolly    时间: 2005-9-2 14:11
发送错误报告可以关闭的!就是可以设置让系统碰到这种情况忽略掉
不过错误还是会发生,一般是程序或者系统有问题才会老这样啊!
建议重装系统!
作者: DontTest    时间: 2005-9-2 14:15
标题: ilovejolly原谅我的表述不清啊...
澄清:
我的IE Crash定义 ,如下二者之一
   1.跳出IE错误对话框 ,(就是还询问你是否发送错误报告给 Microsoft的那个框框)
   2.IE自己关掉. (看到公子的回复,我认为也是Crash的一种)

-----------
出现以上二者之一, Script将不可往下执行,故没有办法处理, 这也是难点所在.
作者: DontTest    时间: 2005-9-2 14:21
"设置让系统碰到这种情况忽略掉",你是说在 IE中设置, 还是在 Robot中设置?
Robot中,你应该就是说Playback Options-->Unexpected Active window中选择Send WM_CLOSE to window吧? 此方法有试过的,有效否却不知.

并且我认为与系统没关系的,10多台机器都有可能出现这个问题, 并且手工测试没有碰到过, 原因可能如上面公子所说..
作者: ilovejolly    时间: 2005-9-2 14:21
主要是我自己想多了,理解能力有待提高  -_-!!
好像发送错误报告之后也会关闭吧
作者: DontTest    时间: 2005-9-2 14:26
"发送错误报告之后也会关闭", 关闭或是打开新窗口是可选的.
   但是你要在那个框框上点一下啊...不能点啊,因为脚本不会往下执行! 问题的关键在这里!
作者: ilovejolly    时间: 2005-9-2 14:36
在注册表中,HLM\ Software\Microsoft\Internet Explorer\Main,在右侧窗格中创建一个名为IEWatsonEnabled的双字节值(即DWORD值,16进制),将值设置为0

试试!要是xp,就很方便,直接就可以改了!
作者: DontTest    时间: 2005-9-2 14:41
谢谢ilovejolly, 我试试看, 我会把测试结果回报的..




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