1、引言
目前,在软件测试领域掌握了功能测试和性能测试的精髓,就能在测试市场中占据技术制高点。功能测试已跨越了单靠手工敲敲键盘、点点鼠标就可以完成的阶段,正朝着自动化和智能化的方向发展。市场上涌现了一大批功能测试自动化工具,提高了测试工程师的效率。但是当遇到工具本身的功能与测试工程师的需求发生偏离时,给使用工具带来了较大的挑战。而UI Automation作为一个应用程序接口,主要提供对UI控件的信息收集与控制访问,它提供的自动化库可以准确识别windows平台下的UI控件,提供了自定义方式进行自动化测试的方式,弥补了上述的不足。本文主要针对微软提供的UI Automation自动化测试技术进行研究分析,首先介绍了并分析UI Automation的体系结构,在此基础上给出了UI Automation的自动化库进行自动化测试的基本流程,最后基于此基本流程结合windows自带的计算器程序给出测试的具体实施步骤。
2、UI Automation体系结构
UI Automation,微软提供的UI自动化库。它包括在.NET Framework 3.0中,是Windows Presentation Foundation(WPF)的一部分,可进行UI测试自动化。此自动化库一开始就是为可访问性和UI测试自动化任务而专门设计的,使用UI自动化库来测试运行支持.NET Framework3.0的操作系统,例如Windows XP、Windows Vista、Windows Server 2003和Windows Server 2008的主机上Win32应用程序、.NET Windows的窗体应用程序和WPF应用程序。
在UI Automation中,所有的窗体、控件都表现为一个AutomationElement、AutomationElement中包含此控件或窗体的属性,在实现自动化的过程中,通过其相关属性进行对控件自动化操作。对于UI用户界面而言,所用显示的桌面上的UI,其实际上是一个UI Tree,根节点是Desktop。在UI Automation中,根节点表示为AutomationElement RootElement。通过根节点,可以通过窗体或控件的Process Id、Process Names或者Windows Name找到相应的子AutomationElement,例如Dialog、Button、TextBox、CheckBox等标准控件,通过控件所对应的Pattern进行相关的操作。
UI Automation的体系结构如图1:
图1 UI Automation的体系结构
1)在服务器端由UIAutomationProvider.dll 和 UIAutomat-
ionTypes.dll 提供;
2)在客户端由UIAutomationClient.dll 和 UIAutomationT-
ypes.dll提供;
3)UIAutomationCore.dll 为UI自动化的核心部分,负责
服务器端和客户端的交互;
……………………
查看全文请点击下载:http://www.51testing.com/html/76/n-844176.html
7)关闭所测试的应用程序,例如
WindowPattern wpCloseForm = (WindowPattern) aeForm.GetCurrentPattern(WindowPattern.Pattern); wpCloseForm.Close(); |
注意:InvokePattern是一种AutomationPattern类型,用于控件的触发,了解AutomationPattern类是了解如何使用UI执行测试的关键。常用的模式有ExpandCollapsePattern、GridPattern、GridItemPattern、InvokePattern、MultipleViewPattern、RangeValuePattern、ScrollPattern、SelectionPattern、SelectionItemPattern、TablePattern、TableItemPattern、TextPattern、TogglePattern、TransformPattern、ValuePattern、WindowPattern。
4、实例分析
我们结合windows自带的计算器小程序讲述如何基于UI Automation技术来实施功能自动化测试。
图2 windows自带的计算器小程序
测试需求描述:测试图中红色标记的功能,加法功能测试,即7+8=15。
Process p = Process.Start("calc.exe");
AutomationElement aeDesktop = AutomationElement.RootElement; //触发“7”键,“8”、“+”和“=”键类似代码 AutomationElement Button_7 = aeForm.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "7")); InvokePattern ipClickButton7 =(InvokePattern)Button_7.GetCurrentPattern(InvokePattern.Pattern); ipClickButton7.Invoke(); aeForm.FindAll(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit)); string Result= TextBox.GetCurrentPropertyValue(ValuePattern.ValueProperty); //判别上句的字符串是否为15,是输出pass,否输出fail。 |
5、结束语
本文研究了UI Automation的自动化测试技术,给出了详细的实施流程,给相关的UI功能测试领域起到了抛砖引玉的作用,还有待更深层次的理论研究和实践上的突破,在这种技术的支撑下,使企业可以更好基于此搭建自定义的UI功能自动化测试框架。
查看全文请点击下载:http://www.51testing.com/html/76/n-844176.html
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。