基于WPF的UI自动化测试[2] 自动化测试工具
注意,控制类型和控制模式之间并不是一一对应的关系。一个控制模式可以被多种控制类型支持,一个控制类型也可以支持多种控制模式,每一个组合都展现其不同的行为样式。比如,一个下拉框类型(Combo Box)具有至少两种控制模式:一个是呈现其折叠和展开能力的模式(ExpandCollapsePattern),另一个是呈现其选择项的可选择模式 (SelectionItemPattern)。
WPF的UI自动化测试
我们知道,现有技术条件下实现UI自动化测试系统开发需要分别实现不同技术条件下的UI元素的鉴别和控制,实现复杂而且有效性不高。而借助于WPF的UI自动化所提供的统一的控制模式就可以轻松实现。
作为UI自动化服务提供者,在开发一个应用程序的时候,必须注意最终用户通过标准键盘和鼠标操作UI对象进行交互的行为。一旦这些关键行为被确定,则其相应的反映UI元素功能和行为的UI自动化控制模式就需要被应用程序实现。比如,要实现一个组合框对象,就需要确定用户对组合框所进行的操作控制模式,用户通常需要调用组合框的折叠和展开模式去隐藏和显示其可选择项列表,也需要调用其编辑模式通过键盘输入增加一个新的选择项。UI自动化服务提供者实现控制模式的接口位于System.Windows.Automation.Provider 名字空间中,其所有控制模式接口都包含后缀“Provider”,比如调用模式接口 IInvokeProvider,文本模式接口ITextProvider等。所有标准WPF控制项自动支持UI自动化,应用程序自定义的控制项必须提供支持UI自动化的访问类和接口。
作为UI自动化客户端,通过调用UI自动化的控制模式类提供的方法和属性得到UI元素的控制信息和内容信息,达到对UI操作和控制目的。这些控制模式类位于System.Windows.Automation名字空间,其所有控制模式类都包含后缀 “Pattern” ,比如调用模式类InvokePattern,文本模式类TextPattern等。
控制模式将一个界面元素对象所支持的结构,方法,属性和事件结合在一起。控制模式对于UI元素的关系相比于接口对于COM对象的关系。对于COM,我们可以通过询问COM对象得到它所支持的接口,然后通过接口调用对应的COM功能。对于UI自动化对象,客户端可以通过询问UI对象得到它所支持的控制模式,然后通过其控制模式调用得到其结构、方法、属性和事件,从而实现和UI的交互。
例如,提供者实现了多行文本编辑控制的滚动模式接口 IScrollProvider,当一个客户端程序探测到这个界面元素支持滚动模式,则可以通过调用滚动模式类ScrollPattern得到这个文本编辑框的属性、方法和事件来收集所支持的文本滚动信息,通过程序化的方法实现文本编辑框内容的滚动。
综上所述,WPF的UI自动化技术旨在提供一个统一的UI控制访问方式,由UI自动化服务提供者 (UI Automation Providers) 实现控制模式接口,UI自动化客户程序 (UI Automation Clients) 则通过调用相应的控制模式类来实现UI自动化操作和控制。
软件测试的花费往往很高。自动化是一个节省时间和成本的好办法。但是软件自动化测试的工具和技术,往往缺乏通用的适用性和伸缩性。为了实现测试过程的自动化,我们依据软件需求或规格设计说明书,针对测试对象,自动生成测试用例,使测试能自动执行,自动验证其正确性。
在整个软件测试过程中,由于UI在提升用户体验方面的特殊作用,UI级别的测试不但在于验证系统的正确性和有效性,而且在验证整个系统的易用性、行为一致性和稳定性方面有着非常重要的作用。 软件测试
但UI自动化测试历来困难。一般来说,一个系统大量的UI人为干预,都需要测试。今天我们还没有一个完全能达到此一目标而颇具规模的系统。UI自动化程度仍停留在自动化测试脚本的水平。