题外话:CSDN博客不能上传图 片已经有一周多了,以前的博客内容中的图片仍然是“图片审核中...”状态,没关系,咱是中国网民,咱最大的优点就是能忍!图片不能传,咱继续发文字内容 的博客。可是人家外国的Google就忍不了了,这一周要退出中国的传言漫天飞,成了大家茶余饭后的谈资。这周另一件大事就是Haiti发生了7.3级的 大地震,据说伤亡很严重并且还有我们的维和人员,希望救灾工作能够一切顺利。
在上一篇博客《RnP与Coded UI自动化测试》 中,介绍了Visual Studio 2010(以下简称为VS2010)新加入的测试用例录制和播放功能,以一个对计算器加法功能进行测试的例子,体验了完整的使用过程:MTLM创建测试用 例工作项 -> 录制测试手工执行的测试步骤 -> 回放录制结果 -> 生成C#自动测试用例 -> 将自动测试用例关联到测试用例工作项 -> 添加验证。这个功能确实很酷,它将测试计划、手工测试用例和自动测试用例三者有机的结合起来,RnP工作能大大提高了测试用例的执行效率。知其然,更要知 其所以然。到目前为止俺也只是介绍了RnP和Coded UI Test (以下简称为 CUIT)测试的皮毛而已, 还需要继续挖掘一下它们背后的故事。
RnP和CUIT支持的平台/技术
任何技术都不是万能,总有它的适用范围,有所为,有所不为。RnP和CUIT也是如此,所以在使用之前,首先必须要知道它们的使用范围。在MSDN Visual Studio 2010 (Beta 2)的帮助页面《Supported Configurations and Platforms for Coded UI Tests and Action Recordings》 给出了Beta 2中RnP和CUIT所支持的:操作系统、32位和64位、处理器体系结构、.NET Framework版本、语言以及具体的技术和平台。其中,大家最关心的应该是最后一部分的技术和平台,它决定了哪种类型的应用程序可以应用RnP和 CUIT。上面的页面仅给出了Beta 2的支持情况,俺发现在微软测试功能开发团队的博客上,给出了Beta 2、RTM以及RTM之后RnP和CUIT的平台/技术支持路线,下面这张表还是非常直观的:
技术平台 | Beta 2 | RTM | RTM+ | 注释 |
IE7/8 – HTML/AJAX | ||||
Windows Forms 2.0+ | .NET Fx Controls fully supported, working on 3rd party support | |||
WPF 3.5+ | .NET Fx Controls fully supported, working on 3rd party support | |||
SharePoint 2007 | ||||
Windows Win32 | To do – Publish Known issues & Workarounds | |||
MFC | To do – Publish Known issues & Workarounds | |||
FF3 – HTML/AJAX | To do – Publish Release Plan | |||
Dynamics (Ax) | To do – Publish Release Plan | |||
Silverlight | To do – Publish Release Plan | |||
Citrix/Terminal Services | The client (MTLM or VS) need to be on remote machine | |||
Office Client Apps | ||||
IE 6 | Opportunity for partners to add this using the Extensibility support. Docs and samples around extensibility are here. | |||
Chrome/Opera/Safari | ||||
Flash/Java | ||||
SAP |
图例 :完全支持 当前部分支持还有后续工作需要完成 支持但仍存在已知问题 当前不支持但今后会考虑 不支持
基本上覆盖了Windows平台上的主流开发技术,唯一的遗憾是还不支持基于Silverlight的Web应用程序的测试,相信这应该是微软在发布了2010之后,重点应该考虑的一部分内容,因为现在Silverlight技术的应用还是非常广泛的。
RnP和CUIT背后所采用的技术
RnP和CUIT是首次在Visual Studio中出现,其功能还是很炫很酷的,但其实背后的测试自动化实现技术对大家并不陌生,下面列出针对Web、Winfrom和WPF应用的测试技术 基础。对每种技术的支持采用的是插件(Plugin)的形式实现的,VS 2010包括了如下的三种插件:
- Document Object Model(DOM) 插件 : IE 7/8 HTML/AJAX
- User Interface Automation(UIA)插件 : WPF
- Microsoft Active Accessibility(MSAA)插件 : Winform,Win32和MFC 。MSAA插件是默认选项,用来支持出其它两者之外的任何应用。正如上面的表中所列的内容所示,有些是默认MSAA插件也无法支持的,如:Silverlight和Firefox等。
如果你所开发的应用程序当前还不被支持,也不用着急,微软在VS 2010中还提供了开发你自己的Plugin的机制,纤细的内容可以参见Gautam Goenka的博客《Series on Coded UI Test Extensibility》。 虽然是属于高级话题了,但是对于那些想要对CUIT有深入了解和使用测试人员来说,这应该是必读的一篇博客内容。之所以这样说,源自我的切身体会。我在一 开始使用CUIT的时候并没有注意这个话题,随着使用的深入发现有越来越多新问题产生,使我迫切地想知道RnP和CUIT是如何构架。特别是我也遇到了《Configure search properties used by recorder/code generation 》中提到的“录制所产生的无法用来定位空间的动态控件名问题”(Name of the certain control is dynamic and not to use it to identify the control.)。Visual Studio 2010并没有提供Built-in的解决方案,如果再要是不了解CUIT的Extensibility机制,那是无法解决这个问题的。还有其它一些类似 问题,但是建议你在使用了一段CUIT后再来Extensiblity,否则只会是看的一头雾水,呵呵,真的!
Apart from this,产品良好的可扩展性也我喜欢微软的技术的一个重要原因之一,有了扩展技术,为第三方厂商或者爱好者提供了途径来填补这部分空白,也是很好的商机,也许这就是建立Eco-system的一种途径吧,呵呵!
Visual Studio中的RnP和CUIT功能还是比较新的内容,除了看微软发布的VS 2010的MSDN文档,去看VSTT团队和成员的博客是非常不错的资料来源。此外,去 Coded UI Test forum论坛直接提问题,可以更直接地得到相关产品部门的支持和解惑。
参考资料
- MSDN : Testing the User Interface with Automated UI tests
- How does "Coded UI test" finds a control?
- Platform Support for Coded UI Test (and Fast Forward feature of Test Runner)
- Understanding the Window Search and Windowed Properties
- Series on Coded UI Test Extensibility