- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微软UI动化测试的技术演变
微软UI自动化测试的技术演变(上)发布时间: 2010-1-28 16:07 ?? 作者: 熊力 ?? 来源: /stbchina字体:? 小? 中? 大? | 上一篇下一篇 | 打印? | 我要投稿? | 每周一问,答贴有奖 Windows平台的桌面开发技术,从最原始的Win32 SDK,发展到.NET WinForm,一直到今天的WPF和Silverlight,发生了翻天覆地的变化,相对应的UI自动化测试技术,也随之演变。 微软UI自动化技术揭秘将分两个部分介绍Windows平台桌面程序的自动化技术。上篇将介绍从Win32 SDK至今的UI自动化技术演变,下篇将着重介绍最新的UI Automation(UIA)的内部实现和使用技巧。 自动测试是指用一个程序自动地控制另外一个程序,模拟用户的操作进行测试。通常自动化测试涉及到下面三个步骤: 测试源侦测 测试源侦测是定位测试目标元素的过程。比如要测试Windows附件中的计算器,首先要把计算器窗口和其他程序比如写字板区分开。进一步测试计算器窗口菜单的时候,需要首先定位菜单条的位置,获取第二层子菜单等等。简单地说,自动化测试首先要能够获取从桌面开始的整个UI树结构,定位到特定测试目标。 用户行为模拟 用户行为模拟指模拟用户的输入,比如鼠标、键盘和触摸笔的操作,中间可能会涉及IME输入法、组合键、特定用户习惯,比如输入速度的模拟等。 测试目标检查 指获取测试元素的属性,比如读取窗口标题,Listbox的子元素, Checkbox的状态等等,以便进行测试检查。 Win32 SDK和Windows Message 在.NET问世以前,Windows平台上的UI程序无外乎两种技术:Win32 Windows SDK 或者DirectX。由于DirectX多用于专业领域如游戏和CAD,本文并不讨论。 无论是MFC,VCL还是VB6,Win32 SDK都是其根本,最终打交道的其实都是HWND和Windows Message。实现上述自动化的三个步骤无外乎三件法宝,Win32 API,Windows Message和Windows Hook。 测试程序首先通过FindWindowEx和EnumWindow遍历窗口和子窗口,找到测试元素比如某个按钮,然后可以通过Windows Message或者API检查测试目标。比如通过WM_GETTEXT或者GetWindowText读取窗口标题,通过GetWindowRect读取按钮坐标位置等等。对于用户行为模拟,可以直接通过SendKey API来完成,当然也可以发送WM_CHAR或者WM_KEYDOWN通知等等。 除此以外,Windows Hook更加丰富了技术的选取。通过Windows Hook,测试人员还可以直接监控、截取、模拟目标程序的Windows消息,实现更灵活的模拟,检查甚至录制的功能。 Windows Spy++(图一)虽然不是测试工具,也算是使用这套技术的典型例子。通过Windows Spy++可以定位任意窗口,读取窗口属性,监视窗口消息等等。图一: Microsoft Spy++采用Win32 SDK和Windows Message的优点是直接,灵活。由于直接使用Win32 API,没有额外的学习曲线,遇上问题可以直接参考Win32 SDK解决。使用Message Hook使得测试程序可以灵活实现,直接对Window Message的操作不仅可以把很多情况化繁为简,还方便test hook的实现。(所谓test hook,是指产品中为了方便测试而专门设计的隐藏功能,该功能对普通用户不可见,只是为了方便测试。) 缺点包括以下三个方面: 使用复杂,实现成本高。Win32 AP的使用上有很多需要特别注意的细节,比如有的Win32 API不能跨进程工作,有的Windows Message只能发给当前线程所创建的窗口,稍有不慎,就导致测试程序不稳定。 过于底层,不便使用。为了方便测试用例调用,需要对API进行封装,增加了实现成本。同时 Win32 API的也使得很多VB程序员不便调用。再者,不同的开发工具,比如MFC, VCL,以及后来的.NET Framework,在内部实现上对Win32 API有很多细节的处理,要实现出针对各种情况都通用的测试框架,并非易事。比如, .NET 中的WinForm Control对Win32 HWND的维护是动态的,同一个WinForm Control的HWND在程序的生命周期内是可能发生改变的,这一点对于依赖HWND作为唯一标识的Win32 API就是一个致命伤。 无法操作自绘窗口。比如打开Excel的工作表,会发现表格中的每一个Cell并没有对应到HWND上。Exce
您可能关注的文档
- 应用心理(非师范类)专业本科教学计划.doc
- 应用心理实验室简介1.doc
- 应用回归析 第五章习题.doc
- 应用文写_习题集(含答案).doc
- 应用几何板设计初中数学知识点动画的探究.doc
- 应用学院科专业介绍.doc
- 应用文写复习题及答案.doc
- 应用文写授课计划.doc
- 应用文写课程标准.doc
- 应用电子业设计题目.doc
- 中考语文复习专题二整本书阅读课件.ppt
- 中考语文复习积累与运用课件.ppt
- 2025年初中学业水平考试模拟试题(二)课件.ppt
- 四川省2015届理科综合试题48套第12套.pdf
- 【课件】战争与和平—美术作品反映战争+课件-2024-2025学年高中美术湘美版(2019)美术鉴赏.pptx
- 【课件】青春牢筑国家安全防线 课件 2024-2025学年高中树立总体国家安全观主题班会.pptx
- 【课件】原始人的创造+课件高中美术湘美版(2019)美术鉴赏.pptx
- 上海证券-美容护理行业周报:流量加快去中心化,强运营头部品牌影响较小 -2024-.pdf
- T_CSEIA 1005—2023_能源工业互联网平台数据治理要求.pdf
- T_CDSA 504.16-2023_急流救援技术培训与考核要求.pdf
文档评论(0)