我将很快开始对我们演示文稿的一些自动化测试进行编码。似乎每个人都推荐WatiN和Selenium。您更喜欢ASP.NET Web表单的自动化测试中的哪一个?这些产品中哪个更适合您?
作为附带说明,我注意到WatiN 2.0自2008年3月以来一直在CTP中使用,是否有什么需要关注的?
我将很快开始对我们演示文稿的一些自动化测试进行编码。似乎每个人都推荐WatiN和Selenium。您更喜欢ASP.NET Web表单的自动化测试中的哪一个?这些产品中哪个更适合您?
作为附带说明,我注意到WatiN 2.0自2008年3月以来一直在CTP中使用,是否有什么需要关注的?
Answers:
只是想说,我目前正在努力在2009年第一季度某个地方开发WatiN 2.0的Beta版。这将是对当前CTP 2.0版本的重大升级,并且将为您提供与自动执行FireFox和IE相同的功能。 1.3.0版提供了用于IE自动化的功能。
因此,您无需担心。
希望这有助于您做出选择Jeroen van Menen Lead dev WatiN
如果您希望在一个框架上进行长期的长期投资,并且该框架将继续得到社区的改善和支持,那么Selenium可能是您最好的选择。例如,我刚刚在Matt Raible的博客上看到了以下信息:
截至周五,Google每天有超过50个团队在内部Selenium Farm上进行超过51000次测试。这些测试中有96%由Selenium RC和Farm机器正确处理。另外4%的部分原因是RC错误,部分是由于测试错误,但很难找出原因。硒已被用作Google内部Web应用程序功能测试的主要技术。那是个好消息。
我最近还参加了一次Selenium聚会,得知Google正在投入大量资源来改进Selenium并将其与WebDriver集成,WebDriver是由Simon Stewart开发的一种自动测试工具。WebDriver的主要优点之一是它控制浏览器本身,而不是像Javascript应用程序那样在浏览器内部运行,这意味着像“相同来源”问题这样的主要绊脚石将不再成为问题。
我们对两者都进行了测试,并决定使用WaTiN。正如其他人指出的那样,Selenium确实具有WaTiN所没有的一些不错的功能,但是我们遇到了使Selenium正常工作的问题,一旦我们做到这一点,运行测试肯定比WaTiN慢。如果我没记错的话,我们遇到的设置问题源于Selenium拥有一个单独的应用程序来控制实际的浏览器的事实,WaTiN可以在该浏览器中完成所有工作。
我一直都在尝试,这是我最初的想法...
瓦丁
善良
坏人
脚本示例(C#)。您无法使用Selenium做到这一点(至少我不知道):
class IEManager
{
IE _ie = null;
object _lock = new object();
IE GetInstance(string UrlFragment)
{
lock (_lock)
{
if (_ie == null)
{
var instances = new IECollection(true); //Find all existing IE instances
var match = instances.FirstOrDefault(ie=>ie.Url.Contains(UrlFragment));
_ie = match ?? new IE();
if (match==null) //we created a new instance, so we should clean it up when done!
_ie.AutoClose = true;
}
}
return _ie;
}
}
硒
尽管如此,我还是和WatiN一起去了。我主要打算编写小的屏幕抓取应用程序,并希望使用LINQPad进行开发。附加到远程IE实例(我没有生成自己的实例)是一大优势。我可以在一个现有的实例中摆弄……然后运行一些脚本……然后再次摆弄,依此类推。用Selenium很难做到这一点,尽管我认为可以在脚本中嵌入“暂停”直接在浏览器中摆弄。
最大的不同是Selenium支持不同的浏览器(不仅仅是IE或FF,请参见http://seleniumhq.org/about/platforms.html#browsers)。
另外,Selenium拥有一个远程控制服务器(http://seleniumhq.org/projects/remote-control/),这意味着您不需要在运行测试代码的同一台计算机上运行浏览器。因此,您可以测试您的Web应用程序。在不同的操作系统平台上。
通常,我建议使用Selenium。几年前,我曾使用过WatiN,但是我对它的稳定性不满意(到目前为止,它已经有所改善)。对我而言,Selenium最大的优点是您可以测试Web应用程序。在不同的浏览器上。
都不行 使用海狸鼠。它包裹硒。更加耐用。https://github.com/featurist/coypu
更新 Ye Oliver,您是对的。好吧,为什么更好呢?我个人发现IE的Selenium驱动程序非常脆弱-在ajax繁重的网站上驱动Selenium进行单元测试时,我再次发现了许多“标准”驱动程序异常。
我是否提到我想用c#编写脚本作为测试项目?是持续构建部署中的验收测试。
科普处理上述问题。它是Selenium的包装材料,可用于测试夹具,例如,
browser.Visit("file:///C:/users/adiel/localstuff.htm")
browser.Select("toyota").From("make");
browser.ClickButton("Search");
...这将启动(可配置品牌的)浏览器并运行脚本。它适用于范围较大的区域,并且非常可扩展。
GitHub上还有更多示例,正如下面的Olvier所提到的,Adrian的视频很棒。我认为这是在.Net世界中推动基于浏览器的测试的最佳方法,并尝试遵循其Ruby命名capybara
到现在为止,我们还是一家纯粹的Microsoft Shop,可为WatiN提供企业解决方案。将来可能会改变。
作为最近的资料:
Microsoft在MSDN Magazine 12/2010中印制了BDD-Primer,它结合了SpecFlow和WatiN(很酷的BDD-行为驱动的开发)。其作者Brandon Satrom(msft开发人员传播者)还在2010年12月发布了一个视频网络广播,详细讲解了上述发现,并按1:1的比例进行了讲授。
克里斯蒂安·哈萨(Christian Hassa)于2011年4月4日发布了白皮书,该白皮书通过SpecLog,SpecFlow和Team Foundation Server(验收测试驱动开发/行为驱动开发)支持ATDD / BDD ,该团队的成员构建了SpecFlow。
我通常使用Selenium,主要是因为我喜欢FireFox的Selenium IDE插件来记录测试的起点。
我考虑过同时使用。我使用Selenium记录器在FF中进行了一些测试。我尝试在Watin中进行同样的操作,发现Watin Recorder(2.0.9.1228)对于我们的网站完全一文不值。它似乎正在IE6中渲染该网站-使我们的网站实际上无法用于记录。我们不支持IE6。我找不到任何方法来更改它正在使用的浏览器。我只在那里找到一个Watin Recorder。如果有多个或一个是最新的,请发表评论。
用于Firefox的Selenium Recorder IDE易于使用,并且可以将测试移植到C#。这不是很好。尽管阅读了一篇包含变通办法的博客文章,但我仍然无法移植测试套件。因此,需要对生成的代码进行一些操作。尽管如此,它仍然可以工作90%,而且比其他方法要好。
就我的金钱/时间而言,Selenium在构建新测试方面非常容易。IE没有比Firebug更好的开发者工具栏,因此我首先要在Firefox中进行开发,因此在Firefox中拥有良好的记录器是一个巨大的收获。
我在这里的结论很像丘吉尔(Churchill)的民主言论:硒是自动化UI测试的最差形式。除了其他所有。
冒切线的危险,我建议使用Axe / WatiN。Axe允许“手动”测试人员在Excel中编写测试,而无需了解基础测试的“语言”。它确实需要一名“技术人员”来编写定制的操作(即,今天,我不得不做一个稍微复杂的表查找和交叉引用),但是一旦编写了这些操作,就可以由非技术人员使用。
我还听说英国政府门户项目(我相信它具有6K +测试自动化测试)最近在一周内将所有测试从Axe / Winrunner移植到Axe / Watin!而且许多测试都非常复杂-几年前我从事这项工作时就知道...
我目前正在研究硒,因为潜在的客户正在使用它。但是我确实建议您将Ax视为“工作马”工具上方的一层。
如果您需要进行IE和FF测试,则必须同时做这两项工作,但是它们对于演示文稿测试来说效果很好。他们无法检测到某个元素是否略有偏离,只是存在这些元素。我不知道有什么可以代替UI /演示测试的人眼的,尽管您可以做一些事情来辅助它(在每个步骤中截取页面的屏幕快照,以供用户查看)。