• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

自动化测试框架之控制界面的关键

发布: 2008-5-08 10:54 | 作者: 网络转载 | 来源: 网络转载 | 查看: 134次 | 进入软件测试论坛讨论

领测软件测试网

  要做一体化自动化测试框架,那么,最重要的是要解决什么呢?相信了解windows编程的人员,都能发现这个问题所在。在窗体中,写下代码,控制每一个控件的输入是非常简单的事。但是,一旦显示了一个模态窗体,原有的流程代码会不再往下执行,而是停留在新窗体中,等待消息相应。这就是我们代码控制界面的关键问题。

  前面讲到要做一体化自动化测试框架,那么,最重要的是要解决什么呢?

  相信了解windows编程的人员,都能发现这个问题所在。在窗体中,写下代码,控制每一个控件的输入是非常简单的事。但是,一旦显示了一个模态窗体,原有的流程代码会不再往下执行,而是停留在新窗体中,等待消息相应。这就是我们代码控制界面的关键问题。

  这是什么道理呢?

  我使用的是delphi系统,所以我可能使用vcl框架来解释这个问题。但是其他语言同样适用。

  在windows程序中,winmain是入口。而winmain的处理,就是一个典型的死循环,先从消息队列中取出消息,然后再给各窗体派发消息。

  为了方便理解,我们将这个模型简化,就是一个死循环a。中间在处理任意的代码。

  现在,由于调用了某一段处理,进入了另外一个死循环b。当代码从a函数进入了b,那么当然,a循环下面的代码当然只能停留下来,直到b循环结束。

  而在windows界面中,模态窗体就是一个消息死循环。当windows弹出一个模态窗体的时候,其消息队列独立处理,不再走整个应用程序的消息循环。

  现在比较明白了,不能方便控制界面的原因在于windows应用程序并不是流程化的,而是消息驱动的。

  明白了这个道理,就有可能找到突破口。我想到了钩子。在delphi中使用钩子,推荐使用fastcode。

  既然程序从a循环进入到b循环,我不能继续执行a循环的代码,那么,可不可以在进入b循环后,继续执行a的代码呢?

  这应该是可行的。关键在于我必须做到b循环中,能够调用到我的代码。

 

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 关键 界面 框架 自动化

21/212>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网