Windows Automation API和自动化测试

本文探讨了Windows平台上UI自动化测试的历史与发展,从最初的MSAA到Windows Automation API,再到各类自动化测试工具如Silktest、TestComplete及CodeUI的演进。作者分享了基于Windows Automation API自研UI自动化测试库的经验,并预告了后续关于UI自动化测试深入讨论的文章。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://zhuanlan.zhihu.com/p/22083601\

感谢轮子哥点赞,这会儿消息扎堆过来了,轮带逛果然不是随便说说的……

第二篇一个简单的Windows Automation API测试用例已经更新。


之前回答了一个问题,本来是说那个火车票查询软件的,捎带说了一句UI自动化测试,结果评论里大家对Windows怎么用C#做UI自动化测试比较感兴趣。我就写几篇关于UI自动化的文章,顺便也算是对这些年工作的总结吧。这个是第一章,后来会结合代码来深入讲解。文笔老婆说是文盲级别的,大家随便看看。如果哪里讲的不对,还请在评论里指出,谢谢!

首先声明一下,我讲的是UI自动化,而且是进程外操作另外一个程序(进程内怎么做,不在本文覆盖范围,非UI的自动化测试也不在本文覆盖范围)。对于UI自动化测试,我是持谨慎乐观态度,也就是谨慎选择是否要做UI自动化测试,谨慎写自动化测试用例,对于UI自动化测试的效果还是比较乐观的。

要说Windows上边的UI自动化测试,我们就先从底层的Windows API讲起吧,这里不会讲很细,先大概说一下,有兴趣的朋友可以看MSDN的链接。

  • 在最初版本的Windows上(应该是windows8以前吧,如果没有记错的话)是没有专门针对自动化测试的API(虽然不知道微软最初的设计时候,有没有针对自动化测试,我的理解是没有的),只有一套API是针对Accessibility的(MSAA - Microsoft Active Accessibility),也就是针对特殊人群,这些API提供的功能就是帮助程序识别现在鼠标下边的文字、控件类型等,来帮助这些人使用电脑(比如屏幕阅读器等)。而美国政府有一个针对这个的标准,叫Section 508:https://www.section508.gov,微软的所有标准控件都是支持这个标准并实现MSAA的接口。
    我们都知道,人民群众的智慧是无限的,利用这套MSAA API,人们可以做很多有意思的事情,不限于屏幕阅读。比如电子词典的鼠标取词翻译,比如截图软件可以识别控件的区域从而实现精准截图。再比如我们今天的重点,可以通过这个API,实现一个程序控制另外一个程序,并且获得控件的文本和状态来做测试的验证
    从利用这个API做测试的角度来看,测试程序可不就是一个盲人程序,我们写逻辑来帮助这个盲人程序去操作另外一个程序。
  • 然而历史都是在发展的,随着WPF的出现,MSAA在对这类UI的支持就捉襟见肘了。Windows Automation API也应运而生,这套API从名字上看就可以知道是为了Automation而设计的,它支持以前的MSAA控件(win32和winform),并且对WPF也有很好的支持。

从这两套API的角度,我们再来看自动化测试工具的发展(以我用过的工具来说):

  • 最初用的工具是Silktest,比较古老的一个自动化工具。自从有了WPF之后,它就比较捉急了,各种控件不支持,没法做自动化测试,直到WPF发布至少一年之后才有新版本支持。最初我所在的Team要测试的产品就是WPF UI的,只能放弃Silktest了。在当年也没有任何的自动化测试工具可以支持WPF,大家也可以想明白原因,因为以前所有的工具都是基于MSAA的,Windows Automation API大家还都没有开始支持。
  • 对了Silktest不支持,我们暂时也找不到工具来做,所以只能基于Windows Automation API自己做了一套类库来做这个测试。后边有时间我会写一些其它的文章,来讲怎么去实现这个的
  • 后来的工具TestComplete也都是支持WPF了,底层其实都是一样Windows Automation API。TestComplete也就是玩了一下,当时性能很捉急,也就没有继续试了
  • 再后来,就是大公司的通病,什么都想插一脚过来,微软自己也做了CodeUI这套类库,来支持创建UI自动化测试的Testcase。CodeUI这套类库好不好用,我就没有发言权了,因为我们有自己的类库,而且最初尝试了CodeUI,发现不支持正则表达式匹配,也就没继续玩了

后边章节预告 (我现在只有个标题,等工作不是很忙了再一个个补上,大家如果有特别感兴趣的话题,我也可以调整一下顺序……):

    • 一个简单的Windows Automation API测试用例
    • 非UI自动化测试和UI自动化测试
    • 反对盲目的UI自动化测试
    • C#反射在UI自动化测试工具中的应用
    • 什么是一个好的UI自动化测试用例
    • 进程内自动化测试和进程外自动化测试
    • 同步和Sleep的选择
    • 自动化测试应该从软件设计开始
    • 自定义控件支持Windows automation api
    • 专职自动化测试还是兼职自动化测试
    • Python在自动化测试上的应用
    • 谈谈Qt这货
    • 谈谈UI自动化在localization测试中的问题
    • Jenkins跟自动化测试是好基友
    • 基于Cloud的自动化测试系统设想
    • MacOSX平台自动化测试

转载于:https://www.cnblogs.com/dhcn/p/11128166.html

Automation Windows Application with win32com 是 Roy H.Han 在2008年的Python Conference的讲演PPT。 现在的资源只有两个要钱的在线的pdf网站可以查阅。 为了方便阅读,我一个字一个字的给扒了下来。 PDF 自带目录 (我自己设的,不满意可以自己修改) 写的不容易,就收2分吧。 ------------ 看过才知道 ------------ Automation Windows Application with win32com 绝对是不可多的的Python关于Win32com方面的耗资源,拥有大量的实例,至少占文档90%以上,例如: - 从数据库创建Excel页 - 从Excel页更新数据库 - 从数据库创建Word页面 - 在Vim中运行Python语句 - Explore与Dialog boxes - 通过Outlook更新数据库 - 使用Outlook回复邮件 - 通过Lotus Notes回复邮件 - 在Excel中创建工具栏按钮 - 使用win32traceutil进行debugging - 在Excel中创建插件 - 使用SpVoice进行通话 - 使用Skype打电话 - 将文档转换为PDF - 在Matlab中进行运算 - 移动鼠标 - 鼠标的点击与键盘输入 最后的Reference(手册)则是详尽的记录了常用win32com工具的常用函数,常用工具有: - Microsoft Excel - Lotus Notes - Microsoft Outlook - 数据库与数据 ----------------- 若有手误,请查阅在线版: http://www.docstoc.com/docs/40599406/Automating-Windows-Applications-with-win32com http://www.powershow.com/view/974b7-YzE2Y/Automating_Windows_Applications_with_win32com_powerpoint_ppt_presentation
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值