VS 2010 测试功能学习(八) - RnP与Coded UI测试(继续篇)

题外话: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包括了如下的三种插件:

  1. Document Object Model(DOM) 插件  IE 7/8 HTML/AJAX 
  2. User Interface Automation(UIA)插件  :  WPF
  3. 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论坛直接提问题,可以更直接地得到相关产品部门的支持和解惑。

 

参考资料

  1. MSDN : Testing the User Interface with Automated UI tests
  2. How does "Coded UI test" finds a control?
  3. Platform Support for Coded UI Test (and Fast Forward feature of Test Runner)
  4. Understanding the Window Search and Windowed Properties
  5. Series on Coded UI Test Extensibility

你可能感兴趣的:(UI,测试,silverlight,interface,平台,2010)