有啥方法可以自动化 Windows 窗体测试吗?

Posted

技术标签:

【中文标题】有啥方法可以自动化 Windows 窗体测试吗?【英文标题】:Is there any way to automate windows forms testing?有什么方法可以自动化 Windows 窗体测试吗? 【发布时间】:2010-09-06 17:20:57 【问题描述】:

我熟悉用于业务层单元测试的 nunit,但是我现在正在寻找自动化 win 表单 gui 层的测试。

我见过watin 和 watin 记录器,用于通过访问控件和自动化它们来自动化 Web 应用程序的测试。但是,我正在努力为 Windows 窗体(用 c# 或 vb.net 编写)找到一个等效的 watin,最好是开源的。

是否存在或所有产品都基于记录鼠标和键盘按下?

更新:我看过这个blog post on white,它似乎是我正在寻找的东西。博客文章提出了一些问题,但由于白色仅在 0.6 版中,这些问题可能会得到解决。如果其他人使用白色或任何其他进行比较,请感兴趣。

【问题讨论】:

【参考方案1】:

查看http://www.codeplex.com/white 和http://nunitforms.sourceforge.net/。我们成功地使用了 White 项目。

上一个问题的答案相同

编辑

White 项目已搬迁,现在位于 GitHub 作为 TestStack 的一部分。

【讨论】:

【参考方案2】:

AutomatedQA's TestComplete 是一个很好的自动化 GUI 测试的测试应用程序。它不仅支持 Windows 窗体,还支持其他应用程序。它不是开源的,这是我发现的最好的。我还没有看到与 WatiN 等效的开源软件。它确实有免费试用版,由您决定是否喜欢。我选择它的主要原因是,与其他测试应用程序相比,它确实具有成本效益。

【讨论】:

【参考方案3】:

作为一个新的选择,我可以给你 FlaUI (https://github.com/Roemer/FlaUI)。它基本上是对白色的完全重写,具有更多功能和干净的代码库。

【讨论】:

【参考方案4】:

据我所知,White 是微软UI Automation 框架之上的一个抽象层。我写了一个类似的层,我们在项目内部使用它并且效果很好。所以白绝对值得一看

Microsoft 已发布 UI 自动化的源代码,因此如有必要,您应该能够在必要时直接调试整个堆栈。

真正酷的是,通过许可成本,您可以扩展并运行任意数量的机器来执行。

我们在 VSTS 中运行并将我们的结果链接到需求,但您可以使用 c# express 和 nUnit 并以很少甚至免费的成本获得一流的工具和语言。

【讨论】:

【参考方案5】:

以下是 MSDN 杂志关于自动测试代码的一些链接:

使用 UIAutomation Bugslayer 2007 年 3 月 使用 PowerShell Test Run 2007 年 12 月 Tester,一个用于记录鼠标点击和击键,然后播放它们和程序检查行为的实用程序。非常适合非托管代码。使用 Windows 句柄,因此可能不适用于托管代码。 Bugslayer 2002 年 3 月。

【讨论】:

【参考方案6】:

WinAppDriver 是一个类似于 Selenium 的 UI 测试自动化服务,用于测试 Windows 应用程序,包括 Windows 窗体应用程序。它可以与测试自动化框架Appium 一起使用。

【讨论】:

【参考方案7】:

名单

请查看更新列表:List of Automated Testing (TDD/BDD/ATDD/SBE) Tools and Frameworks for .NET: User Interface Testing

Framework Comment
Coded UI Discontinued
FlaUI
NUnitForms Discontinued
Squish GUI Tester
TestComplete
TestStack.White
WinAppDriver

微软的推荐

WinAppDriver

微软推荐使用WinAppDriver:

Windows 应用程序驱动程序 (WinAppDriver) 是一项支持 Windows 应用程序上的类似 Selenium 的 UI 测试自动化。这项服务 支持测试通用 Windows 平台 (UWP)、Windows 窗体 (WinForms)、Windows Presentation Foundation (WPF) 和经典 Windows (Win32) 应用程序在 Windows 10 电脑上。

编码 UI(Visual Studio ≤ 2019)

以前,Coded UI,Visual Studio 内置功能和 UI 自动化的一部分,被推荐用于应用程序 UI 测试(现在已弃用):

用于自动化 UI 驱动功能测试的编码 UI 测试是 已弃用。 Visual Studio 2019 是 Coded UI 测试的最后一个版本 将可用。我们建议使用 Selenium 来测试 Web 应用程序 和带有 WinAppDriver 的 Appium 用于测试桌面和 UWP 应用程序。 考虑使用 Xamarin.UITest 测试 iosandroid 应用程序 NUnit 测试框架。

通过用户界面驱动您的应用程序的自动化测试 (UI) 称为编码的 UI 测试 (CUIT)。这些测试包括 UI 控件的功能测试。他们让您验证 整个应用程序,包括其用户界面,正在运行 正确。编码的 UI 测试在以下情况下特别有用 用户界面中的验证或其他逻辑,例如在网络中 页。它们还经常用于自动化现有手册 测试。

阅读更多:https://docs.microsoft.com/en-us/visualstudio/test/use-ui-automation-to-test-your-code

【讨论】:

已弃用 @ChristopheChenel:感谢您的注意,我更新了答案。【参考方案8】:

您可以查看 Microsoft UI Automation 框架。从 3.0 版开始,这已包含在 .NET 中。无论如何,这实际上是 White 框架使用的。

【讨论】:

【参考方案9】:

您也可以使用 Winium(https://github.com/2gis/Winium),它可以在除 Windows 10 之外的多个 Windows 平台上运行,它与 Selenium 类似,具有支持远程控制应用程序的额外功能。

【讨论】:

以上是关于有啥方法可以自动化 Windows 窗体测试吗?的主要内容,如果未能解决你的问题,请参考以下文章

有啥方法可以在单独的远程 Windows 机器上执行机器人测试吗?

WPF的控件没有句柄,但是有啥其他间接方法获得WPF控件的句柄啊。

WPF的控件没有句柄,但是有啥其他间接方法获得WPF控件的句柄啊。

有啥方法可以导入带有自定义指令的查询吗?

Windows 窗体应用程序和 Windows 窗体应用程序 (.NET Framework) 有啥区别

有啥方法可以为 Windows 临时目录执行 WER“请求附加文件”吗?