Windows平台自动化测试工具基于的一些技术简介(笔记)
来源:互联网 发布:蓝思网络杨帆 编辑:程序博客网 时间:2024/05/22 05:51
GUI: 用户图形接口。
1. Windows API
FindWindow, EnumWindows可用于查找到窗口句柄。
GetWindowText, GetWindowRect, GetWindowLong可用于获取窗口属性。
SetWindowText, GetWindowText可用于操作控件上显示的文字。
SetForegroundWindow用于设置顶层窗口。
GetForegroundWindow用于获取当前的顶层窗口。
GetActiveWindow
SetActiveWindow
...
优点:对标准Windows的控件支持还不错,较底层。
缺点:底层意味着复杂,需要多层的封装,开发效率低下,对Windows API的完全依赖。对非标准(自定义)控件,较难实现自动化,就算实现了代码不稳定,维护和分析结果的成本也很高。
2. MSAA——Microsoft Active Accessibility
IAccessible,本身是一个Com组件,最主要的是其接口提供的方法可以获取控件更详细的信息,也可以通过一些方法对控件进行简单的操作。
优点:用户只需跟IAccessible打交道,通过这个接口能获得的控件信息相对丰富,基本操作也不需要通过Windows Message的方式来实现。另外一个较大优点是自定义控件的支持。开发自定义控件时可以实现IAccessible的接口,并且通过这个接口,把一些属性的操作暴露出来,测试人员就可以将这个控件当做标准控件,并用MSAA来自动化。
缺点:并非为自动化测试设计,获取到的控件信息比Windows API多,但仍对自动化测试不够,仅支持一个基本操作,其它的仍需Windows Message。
3. UIAutomation
从架构上说UIA针对标准控件时通过UI Automation Proxy调用了MSAA Server,基本覆盖了MSAA功能。
UI Spy是UIA的一个小工具。
与MSAA比较:
1)Tree.broken Exception,维护成本提高
2)只能用.Net语言来写,运行在.Net托管堆中->性能差异
3)MSAA支持进程内操作
UIA未定义支持,使用可能有性能问题
4)自定义控件支持好
4. Window Automation API 3.0
是对UIA和MSAA的升级。
Windows 7对自动化测试的支持将会更好。可用Managed Code和Unmanaged Code,基本解决上面UIA的问题。
Managed Code(托管代码) vs Unmanaged Code(非托管代码):
在公共语言运行库环境的外部,由操作系统直接执行的代码称为非托管代码,它必须提供自己的垃圾回收、类型检查、安全支持等服务,它与托管代码不同,后者从公共语言运行库中获得这些服务,而非托管代码是在运行库之外运行的代码。例如Com组件、Active X接口、和Win32 API这些都是非托管代码的示例。
自动化测试的实质是为了快速、高效地发现和预防回归缺陷,并非发现新缺陷(Test Monkey除外)。旨在解决成本问题。
UIAutomation无法产生鼠标、键盘事件->可用Win API
UI Spy使用:
焦点跟踪、悬停,注意run as Admin,可获得以下内容:
1)UI项和UI自动化属性值
2)控件模式实现
3)UI自动化事件信息
4)导航和键盘焦点
注意IE 8以上版本IE打开会有两个进程,大的为主进程,用于正在浏览的网页,小的是辅助进程,用于网页错误时恢复并reopen。
从UI 测试自动化的角度来看,意味着所测试的应用程序被称为服务器,测试工具被视为客户端。
UIAutomationClient.dll库实际上就是UI自动化客户端使用的测试自动化库。
UIAutomationTypes.dll库包含UIAutomationClient.dll和其它自动化服务器库使用的各种类型的定义。
UIAutomationClientSideProvider.dll包含一组与构建时不支持自动化的控件配件配合使用的代码,这些控件可能包括旧式控件和自定义的.NET控件。
UIAutomationProvider.dll库是一组接口定义,可供创建自定义UI控件和希望控件被UI自动化库访问的开发人员使用。
TreeScope是个枚举类型:
Element, Children, Descendants, Parent, Ancestors, Subtree(包含搜索的根和全部子代)
System.Windows.Automation.AndCondition代表一个与条件
System.Windows.Automation.NotCondition
System.Windows.Automation.OrCondition
System.Windows.Automation.PropertyCondition测试属性是否具有指定的值
- Windows平台自动化测试工具基于的一些技术简介(笔记)
- 基于《Selenium 2自动化测试实战》的学习笔记(2)—— 适合自动化测试的项目及自动化测试工具简介
- 自动化测试工具简介
- 自动化测试工具简介
- Squish简介——跨平台自动化GUI测试工具
- 常用的一些自动化测试工具列表
- 常用的一些自动化测试工具列表
- 移动平台测试自动化工具Appium试用笔记(一)
- 移动平台测试自动化工具Appium试用笔记(二)
- android自动化测试工具简介
- Android自动化测试工具简介
- android自动化测试工具简介
- android自动化测试工具简介
- 基于《Selenium 2自动化测试实战》的学习笔记(3)—— selenium 工具介绍
- 基于LINUX平台的自动化测试的研究与应用
- 基于Tcl/Tk语言的自动化测试平台的实现
- 基于openstack的自动化测试平台设计头脑风暴
- 基于Android平台应用程序的关键字驱动自动化测试
- sip info 方法 发起 h264关键帧请求
- VS2010给对话框上添加浏览器显示网页
- 1.Go环境配置
- mpi+openmp程序需要注意事项
- windows和linux socket端口复用特性不一样
- Windows平台自动化测试工具基于的一些技术简介(笔记)
- 解决“不能读取 AppletViewer 的属性文件”的问题
- CHARFORMAT
- 关于23种设计模式的有趣见解
- mplayer的相关播放参数说明
- 【转载】C++ ofstream和ifstream详细用法
- WebDriver2.32 IllegalStateException: The path to the driver executable
- N!及其后面有多少个零
- 使用ssh记住密码