经过研究,我们发现:


Watin(http://watin.org/)
CodedUI(Microsoft)
Coypu(基于硒的)
TestStack.Seleno(也基于硒的)

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

Stackoverflow的测试专家可以您可以与我们分享您在这些不同框架中的经验吗?谢谢。

评论

您想要什么功能?例如,将需要与哪些其他软件(构建系统,测试框架,报告生成器……)集成?请阅读我们的提问技巧。

#1 楼

首先,如果您想像最终用户一样测试Web UI,则是否使用ASP.NET MVC构建应用程序可能无关紧要。 (这仅表示您正在寻找我假设的.NET UI测试框架。)

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


Watin。该项目无效。在Selenium WebDriver刚刚发布的时代,它们都很流行,您可能很难做出决定。但现在已经不复存在了,Watin已经三年没有发布任何东西了,现在不应该将其视为您的选择之一。当时IE支持9,Firefox是4,Chrome是11。
CodeUI。不建议。优点是它不仅支持测试Web UI,而且还由Microsoft自己创建并与Visual Studio紧密关联。但是它不是开源的,有一个资源和功能有限的小型社区,其重点更多地放在Windows应用程序上。
Coypu是一个开放源代码框架,它包装了Selenium WebDriver和Watin(仅Coypu中的IE)。在某种程度上,它更像是水豚,但对于.NET。我个人觉得这个主意很棒。
TestStack.Seleno也是一个不错的选择,它可以创建某种DSL来隐藏Selenium WebDriver命令,并提供在Web UI测试项目中必不可少的Page Objects。此外,它可以与ASP.NET MVC应用程序紧密联系。但是这些都是硒水平之上的东西。它可以帮助您编写Selenium代码,无论如何您都可能想实现自己。

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


那些框架依赖于Selenium,这可能是一个约束。例如,如果Selenium中存在严重错误,则测试可能会失败。然后,Coypu开发人员需要先等待在Selenium中修复它,然后更新Coypu为您解决问题。时间可能会有所不同,具体取决于项目的活跃程度。在此过程中,可能会引入更多仅影响Coypu用户的错误。您实际上并不需要它们的DSL / Page Objects,而是实现了自己的独特方式来支持对应用程序进行测试。
即使它们是开源的,它们也可能没有Selenium这样大的社区。在浏览器自动化级别以上发生的任何事情(即写为Coypu或TestStack.Seleno的代码)都很难为您提供帮助。例如,有很多其他封装了Selenium的框架,例如Capybara,Watir WebDriver等,人们很难在StackOverflow上尽快获得答案,因为没有多少人使用它们。
没人知道这些项目需要多长时间可以保持活跃。还有另一个名为White的.NET UI测试框架,它是用于测试Web / WinForm / Silverlight应用程序的好项目,但已被TestStack(现在称为TestStack.White)弃用并接管。您可以想象,如果有人前一段时间使用White开发了一个大型测试项目,他们可能会遇到麻烦。
DSL和页面对象是您应该自己掌握的东西。对于某些开发人员而言,实现自己的方法比使用第三方库更好/更可靠,因为他们可以完全控制内部功能。

Outro:

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

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

评论


编码UI的问题在于,它将浏览器与其他任何应用程序一样对待。硒是为网络量身定制的,在很多方面都更好。即使是像启动浏览器这样简单的事情也可能出错,因为“编码的UI”会寻找一些类似于C:\ Program Files \ FireFox \ firefox.exe的硬编码内容。更糟糕的是,它依赖于浏览器的内部UI树(您将在FireFoxMainPane和FireFoxDisplayBorder之内看到东西,直到到达实际的DOM)。这可能会因浏览器的新版本而中断。您也不能使用JS查询来查找元素...

– Ohad Schneider
16-4-27上午10:32

非常好的总结。我希望我在开始使用Seleno之前已经读过这篇文章,该版本实际上已被放弃(2016年5月6日最后一次提交),并且由于Selenium的更改(以及删除过时的代码),它现在无法使用。

–巨型
19年4月2日在7:30