注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭研自动组

快乐耕耘,收获成长!

 
 
 

日志

 
 

基于White+NUnit的客户端测试框架——Windows GUI测试技术简介  

2011-02-25 13:47:43|  分类: 技术调研 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
作者:都都

在正式介绍White框架之前,我们先来看一下针对UI的自动化测试技术一般需要支持的内容:

1.        识别窗口:能够识别尽量多的窗口种类,支持尽量多的UI技术。比如win32winFormWPF等的控件类型

2.        操作窗口:对各种控件方法的支持,如按下按钮、下拉框、选择等

3.        验证结果:实质就是能够拿到控件的状态以及控件相关的信息,其实还是基于对控件的识别。

综上,都是基于识别窗口(或控件)的基础上进行的。而目前各种工具识别窗口的技术主要有以下4种:

1.        Windows API:通过获得窗口句柄调用window API来操作窗口。只能识别标准控件,而且过于依赖底层API,用作自动化测试的实用性不是很高,但基本上所有的自动化测试工具都会或多或少的直接或间接调用windows API

2.        MSAA - Microsoft Active AccessbilityMSAA又叫做IAccessible,它本身是个COM组件,主要是实现了IAccessible的接口,它提供了一些获取控件详细信息的方法,通过这种方法实现对控件的简单操作。目前Windows gui的所有标准组件都已经实现了该接口,而对于非标准控件,需要开发人员实现IAccessible接口,测试人员就可以将非标准控件当作标准控件进行识别。相对于Windows API来说,测试人员只需要关注IAccesible接口。但是由于MSAA本身并不是为自动化测试设计的,其获取的控件信息虽然比Windows API多,但对自动化测试的需求来说还远远不够。而且在微软推出WPF以后,由于WPF的控件属性更加丰富、更具定制性等原因,使得MSAA难以描述,其局限性更加明显。由此微软推出了UIAutomation。目前已有的silktest,winRunner, QAliber等都是基于MSAA技术实现,并且都已经发展的较为成熟。

3.        UIAutomationUIAutomation是微软为自动化测试的需要实现的一套自动化体系。目的是为取代MSAA成为自动化测试的标准类库。其架构如下图所示:

基于White+NUnit的客户端测试框架——Windows GUI测试技术简介 - 网易杭研自动组 - 网易杭研自动组
 

从理论上来说,UIAutomation应该是可以完全代替MSAA的。而且在自定义控件的支持上,UIA具有先天的优势,不过这些需要开发人员的支持。但是到目前为止,UIA仍然存在几个比较明显的问题:

a)        UIAException:由于该Exception,导致UISpy无法识别很多控件,特别是自定义控件多的时候,会吞掉很多控件,就需要在很多地方写代码绕过该问题,同时也提高了维护成本。

b)        性能问题:UIA的类库是作为.Net3.0的一部分发布,所以只能使用.Net语言来写,并且运行在.Net托管堆中,性能就会成为一个问题。另外其有很多测试需要在进程内操作,也影响了一定的性能,另外还可以导致一些未知的问题。

4.   Windows Automation API3.0:这个其实是对UIAutomationMSAA的升级,基本解决了UIA的各种问题,不过其只支持win7,在XP/vista上支持不是很好,存在着各种问题,就目前来说使用还不是很广泛。

  评论这张
 
阅读(1557)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018