什么是 ASP.NET MVC 应用程序的首选 UI 测试框架?

软件推荐 C#
2021-10-29 00:01:45

经过一番研究,我们发现:

  • 瓦廷 ( http://watin.org/ )
  • CodedUI(微软)
  • Coypu(基于硒)
  • TestStack.Seleno(也基于 Selenium)

但是有这么多的选择,也很难做出决定。

Stackoverflow 的测试专家,您能与我们分享您对这些不同框架的经验吗?谢谢你。

1个回答

首先,如果您想像最终用户一样测试 Web UI,那么您的应用程序是否使用 ASP.NET MVC 构建可能并不重要。(这仅意味着您正在寻找我假设的 .NET UI 测试框架。)

我不确定为什么Selenium WebDriver本身没有被您列出,这将是我推荐的。因为它在市场上占主导地位,您可以获得有关它的所有支持/资源。这是一个高度活跃的开源项目,许多其他框架都依赖它。Watin 和 CodedUI 是替代方案,而 Coypu 和 TestStack.Seleno 只是围绕 Selenium 的高级框架。它支持 Java、.NET、Ruby、Python、JavaScript 绑定,其他语言的代码可以很容易地移植到 C# 中。

  • 瓦廷该项目处于非活动状态。早在 Selenium WebDriver 刚刚发布的时候,它们都很流行,你可能很难做出决定。但现在不是了,Watin 已经三年没有发布任何东西了,现在这不应该被视为你的选择之一。当时,IE 支持到 9,Firefox 支持 4,Chrome 支持 11。

  • 代码用户界面不建议。优点是它支持测试的不仅仅是 Web UI,它是由 Microsoft 自己创建的,并且与 Visual Studio 紧密相关。但它不是开源的,一个资源和功能有限的小型社区更专注于 Windows 应用程序。

  • Coypu是一个开源框架,它封装了 Selenium WebDriver 和 Watin(IE 仅在 Coypu 中)。它在某种程度上更像Capybara,但对于 .NET。我个人觉得这个想法很棒。

  • TestStack.Seleno也是一个不错的选择,它创建某种 DSL 来隐藏 Selenium WebDriver 命令并提供 Web UI 测试项目中必不可少的页面对象。此外,它可以与您的 ASP.NET MVC 应用程序紧密结合。但这些都是高于 Selenium 级别的东西。它可以帮助您编写代码 Selenium,无论如何您都可能希望自己实现它。

因此,我会说 Coypu 和 TestStack.Seleno 值得一看,但要小心。

  1. 这些框架依赖于 Selenium,这可能是一个约束。例如,如果 Selenium 中存在严重错误,您的测试可能会被破坏。然后 Coypu 开发人员需要先等待它在 Selenium 中修复,然后更新 Coypu 来为您解决问题。时间可能会因项目的活跃程度而异。在此过程中,可能会引入更多仅影响 Coypu 用户的错误。您实际上并不需要来自它们的 DSL/页面对象,而是实现您自己独特的方式来支持测试您的应用程序。

  2. 尽管它们是开源的,但它们可能没有 Selenium 那样大的社区。在浏览器自动化级别之上发生的任何事情(即编写 Coypu 或 TestStack.Seleno 的代码)都很难让您获得帮助。例如,还有大量其他框架封装了 Selenium,如 Capybara、Watir WebDriver 等,人们很难在 StackOverflow 上尽快得到答案,因为使用它们的人并不多。

  3. 没有人知道这些项目可以持续多久。还有另一个名为White的 .NET UI 测试框架,它是一个很好的测试 Web/WinForm/Silverlight 应用程序的项目,但被 TestStack(现在称为TestStack.White )弃用并接管了。你可以想象,如果有人不久前使用 White 开发了一个大型测试项目,他们可能会遇到麻烦。

  4. DSL 和页面对象是你应该自己掌握的东西。对于一些开发人员来说,实现自己的库比使用第三方库更好/更可靠,只是他们可以完全控制引擎盖下的内容。

结局

评估框架的最佳方法是使用每个框架为您的应用程序创建一个演示。然后,您可能有一个偏好,可以帮助您做出决定。

一般来说,我的建议是:要自动化 Web UI,可以选择使用 Selenium WebDriver,而不是 Watin 或 CodedUI。对于高级支持框架,我个人不会选择(即使用纯 Selenium WebDriver 库并在测试项目中编写我自己的支持类),但是如果您喜欢 Coypu 和 TestStack.Seleno,可以考虑它们。