也论QA职责

发表于:2013-4-10 10:38

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:DanceWithAutomation    来源:51Testing软件测试网采编

分享:

  搞来搞去,离夜深越来越近,我们不犯困,却有点更加迷惑了,不make sense呀!

  那笨人有笨招,细化问题吧!

  实验一:

  我把COM组件的工程单独领出来,修改工程的属性,启用编译后自动注册开关,编译成功,看注册表应该注册成功;在创建一个新的工程来调用COM组件:

1:                  Type comType = Type.GetTypeFromProgID("COM ProgID");
2:                  object comObj = System.Activator.CreateInstance(comType);
3:                  Type[] t = comType.GetInterfaces();
4:
5:                  object x=comType.InvokeMember("MethodName", BindingFlags.InvokeMethod, null, comObj, new object[3] { null,null,null});
6:                  MethodInfo[] method = comType.GetMethods();
7:                  if (method != null)
8:                  {
9:
10:                  }

  执行程序,在第2出错,和之前的安装程序的错误日制一致。(COM异常就不说了,不影响理解问题)

  这个实验只能在此证明问题还没有解决,不在那里,就在这里

  紧接着:

  实验二:

  我把COM组件中的具体实现代码全部注释掉,如果函数需要返回值,就仅仅返回一个fake的值,这样我的COM近似等于一个空壳,不依赖于任何第三方,编译,注册成功,在用上面的代码创建COM对象的实例。

  实验结果:成功!

  这是一大进步,通过实验二可以大胆确定问题出在COM对象的实现代码里,那究竟是哪一块代码呢,很明显,应该是类的构造函数里,这意味着COM对象在构造的时候抛出未捕获异常,导致最终显示给我们的那段错误日志信息!

  这时候,再去review构造函数,发现构造函数是有try catch的,只不过。。只不过。。构造函数的第一行没有包含在try catch block里,这一行只不过是打印了一条调试日志而已啊,真不敢相信这就是元凶,这行代码like:

  utilDebug.Log(.....)

  我相信你不是无辜的。

  现在,再来看看这个utilDebug到底是啥玩意:

32/3<123>
精选软件测试好文,快来阅读吧~

精彩评论

  • bsbolg
    2013-4-11 10:34:55

    Bug 隔离和修复过程非常精彩!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号