Microsoft UI自动化库与编码的UI测试

时间:2011-02-05 19:39:14

标签: wpf coded-ui-tests ui-testing microsoft-ui-automation

我在测试或测试自动化方面非常陌生。现在我最近被分配到一个自动化UIF测试WPF应用程序的项目。在对MSDN和其他人进行一些搜索之后,我对是否应该使用Microsoft UI自动化库或VS 2010的新编码UI测试功能感到有点困惑。我没有清楚地了解这些适用于哪一个在哪些情况下,一个人有什么优势,另一个适合我(再一次,我有一个像WPF应用程序的CAD,错过了很多AutomationIds,我必须自动化其ui测试)。请帮助!!!

4 个答案:

答案 0 :(得分:18)

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

Coded-UI测试是一个记录&播放使用下面的Microsoft UIA库的自动化工具。与在C#中编写代码相比,它是一种工具,因此可以提高记录更多测试用例的QA效率。

对于计划使用自动化支持的应用程序,Coded-Ui应该足够了。如果缺少AutomationID,请确保控件具有一些像Name这样的唯一属性。使用UIVerify或Inspect来检查这一点。

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

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

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

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

  • 来自重点控制: 您可以从静态FocusedElement属性中检索表示聚焦控件的AutomationElement。

答案 1 :(得分:8)

如果您可以利用并使用Coded UI Test,那么就去那条路线。请务必验证您的configuration is supported

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

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

答案 2 :(得分:4)

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

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

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

答案 3 :(得分:2)

为了补充上述回复,请查看CUITE,这有助于您提供相应的帮助。

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