UI Automation在功能自动化测试中的应用

发表于:2013-4-23 11:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:郭盈    来源:51Testing软件测试网原创

  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内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号