12

我对Test Automation这种事情很陌生。最近,我被分配到一个项目,我必须编写一个应用程序(或者,我不确定可能是一个脚本),它将自动执行一个类似 CAD 的 WPF 应用程序的 UI 测试,该应用程序缺少很多AutomationIds。

在 MSDN 和其他资源上做了一些搜索后,我有点困惑是否应该使用VS2010 中包含Microsoft UI Automation Library的新功能。Coded UI Test我不清楚这两种情况中的哪一种适用于哪种情况,一种比另一种有什么优势,哪种适合我的目的。

如果您对此事有经验/知识,请遮住一些光。提前致谢。

4

4 回答 4

19

基本上,Microsoft UIA 是 .Net 4.0 中的新辅助功能库。WPF 应用程序和控件通过 AutomationPeer 类内置了对 UIA 的支持。

Coded-UI 测试是一个 Record & Play 自动化工具,它使用下面的 Microsoft UIA 库。由于与在 C# 中编写代码相比,它是一种工具,因此它提高了 QA 生产力以记录更多测试用例。

对于计划包含自动化支持的应用程序,Coded-Ui 应该就足够了。如果缺少自动化 ID,请确保控件具有一些独特的属性,例如名称。使用 UIVerify 或 Inspect 进行检查。

如果没有唯一属性可用,您可以将下面提到的其他技术与 Coded-UI 结合使用。

  • 来自事件 当您的应用程序接收到 UI 自动化事件时,传递给您的事件处理程序的源对象是一个 AutomationElement。例如,如果您订阅了焦点更改事件,则传递给您的 AutomationFocusChangedEventHandler 的源是接收焦点的元素。有关详细信息,请参阅订阅 UI 自动化事件。

  • From a Point:如果您有屏幕坐标(例如,光标位置),则可以使用静态 FromPoint 方法检索 AutomationElement。

  • 从窗口句柄:要从 HWND 检索 AutomationElement,请使用静态 FromHandle 方法。

  • 从焦点控件:您可以从静态 FocusedElement 属性检索表示焦点控件的 AutomationElement。

于 2012-01-18T11:03:08.087 回答
8

如果您可以利用和使用编码的 UI 测试,那么请走这条路。确保验证您的给定配置是否受支持

UI 自动化库解析后面代码中的所有内容。然后,这会迫使您使用 UISpy 之类的工具来访问控件内部,以便您可以构建您的测试。

另一方面,编码的 UI 测试仍然有代码,但是它允许记录您正在测试的给定应用程序的步骤,这将大大增加您可以创建的测试数量。

于 2011-02-05T21:14:26.640 回答
4

UI 自动化库是一个低级库。通常,您不想直接针对它编写测试,因为它需要相当多的工作。

我建议查看更多高级库。您提到了其中之一 - 编码 UI;另一个不错的选择是来自 TestStack 的 White。它们都适合不同类型的项目。当您不想在测试套件中投入大量精力时,编码 UI 是很好的选择。同时,它的规模不大,所以如果你要写很多测试,你最好选择白色。

在这里,我更详细地比较了这两个框架:Coded UI vs White

于 2015-09-22T11:24:01.067 回答
2

为了补充上述回复,请查看CUITE,它对您有很大帮助,并且可能是适合您的方法。

我开始使用 CodedUITest 库“滚动我自己的”“半框架”,并设计了一个将自动化细节与(C#)代码分离的范例。基本上,我正在创建一个驱动程序,它从电子表格中读取需要完成的工作,其中每一行都是测试步骤(或指向不同工作表中场景的指针)。目前,不完整,但很有希望,我让它针对 WPF 应用程序工作并取得了部分成功。主要问题之一是开发人员忽略了唯一且一致地识别控件。

于 2013-02-14T03:47:49.730 回答