【问题标题】:Experiences with UI Automation and WPF [closed]UI 自动化和 WPF 的经验 [关闭]
【发布时间】:2010-10-13 06:00:14
【问题描述】:

我们正在开发一个相当大的基于 WPF 的应用程序,并希望在我们的测试套件中包含一些自动化 UI 测试(其中已经包含许多单元测试)。

来自 Microsoft 的 UI Automation Framework 在某种程度上听起来非常适合在测试设置中以编程方式启动应用程序并与之交互。但是,我一直在努力寻找可靠的示例和技术经验参考,MSDN 上提供的文章和小示例不足以让我相信这是一个可靠的选择。

那么,有没有人有在他们的测试套件中使用 UI 自动化框架的实际经验?有哪些注意事项和陷阱?编写测试脚本时的任何最佳实践,您是否可以“记录并重播”为可编写脚本的格式,您应该在多大程度上促进应用程序的测试,您是如何将其合并到自动构建中的?我们是否应该转向 UI 自动化框架以外的其他方向?

随时在这里发布您的经验或链接到我可能错过的一些好的参考资料

【问题讨论】:

  • 这个问题不应该被关闭,因为答案提供的信息基于对技术的真实经验。由于测试自动化现在是相当热门的话题,我敢打赌这些信息对很多人都很有价值。

标签: wpf ui-automation


【解决方案1】:

在我工作的地方,我们刚刚开始为我们的系统评估一些测试工具。我们遇到了一个名为 white 的工具,它使用 UI 自动化框架。请注意,白色也有记录功能,尽管我认为它看起来有问题并且仍在开发中。

我们尝试将它们设置为看起来像单元测试,即[TestFixture] [Test] 等。 然后我们就可以在单元测试的同时通过 nunit 运行它们。

我们发现访问窗口中的某些组件可能很困难,但没有太多机会调查原因。

如果您不介意为软件付费,那么我会推荐TestComplete

【讨论】:

  • TestComplete 是一个点击播放工具,而 TestStack.White 是一个 C# 框架。这些是完全不同的解决方案,前者针对测试人员,后者针对程序员。
【解决方案2】:

我正在对工作中的 WPF 应用程序进行 UI 自动化。我正在使用 White 和 IronRuby,效果很好。我在这里写下了我是如何做到的:http://www.natontesting.com/2010/02/17/how-to-test-a-wpf-app-using-ironruby-and-white/

【讨论】:

  • 非常好的文章,Nat。我竖起大拇指
  • 与怀特摔跤变得太痛苦了,所以我写了 bewildr (github.com/natritmeyer/bewildr)。 BBC 正在使用它,而且效果很好!
【解决方案3】:

我们最初选择白色,然后远离它。它试图对 Win32 API、Winforms、Java 应用程序和 MS UI 自动化 API 进行通用和抽象。 MS UI 自动化 API 还试图在 win32 api、winforms 和 WPF 之上实现通用和抽象,因此您最终会陷入“最低公分母的最低公分母”场景。

这样做的结果是,White 元素搜索 API 根本不够灵活,无法找到我们需要查找的各种 UI 元素,并且它没有暴露足够多的底层 UI 自动化框架元素让我们做任何事情对它有用。

我们最终采用了一种本土的框架;我们直接使用 MS UIAutomation 框架,但有扩展方法和辅助类来处理它没有解决的场景。 (主要是键盘和鼠标输入)。

注意:我们的测试脚本和自制框架都使用 IronRuby。 Ruby 向现有类添加方法的能力和灵活的语法(与 method_missing 相结合)非常适合这种事情。

【讨论】:

  • Edwards,您为什么不尝试 Microsoft.VisualStudio.TestTools.UITesting API(用于幕后编码 UI 测试的 API)?我问是因为我刚从 UIA 切换到这个。
  • @Nero:三个原因。首先,它直到 Visual Studio 2010 发布才存在。其次,您需要购买 VS 的高级版而不是标准版,这是一个巨大的价格飞跃,尤其是在新西兰。第三,我看了 Visual Studio 编码的 UI 测试的东西,一点也不喜欢。它过于复杂,不易使用且难以调试。底层 API 代码本身可能比 Visual Studio 生成的东西更好,但我当时没有看,因为我没有意识到你可以独立使用它
猜你喜欢
  • 2010-11-26
  • 2011-01-07
  • 2011-09-15
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 2013-09-11
相关资源
最近更新 更多