我目前正在研究测试框架,以测试C Sharp开发的Web应用程序。我一直倾向于使用Selenium over Watir或Lightweight Test Automation,但对于IDE是Firefox插件犹豫不决,然后需要找到IE记录器,因为它是用于运行Web应用程序的浏览器。 br />
在测试使用C Sharp创建的Web应用程序时,Selenium与这些替代品相比具有任何优势,这真是令人惊讶。任何有经验的人都可以测试尖锐的Web应用程序,并且对最佳应用程序有任何建议。

评论

我觉得这属于“ X vs Y”类别,应该关闭。

据我了解,对x vs y的担忧是,如果这个问题大为开放,人们很可能会陷入困境,再加上x x y的问题并不一定能解决真正的问题。这个问题还有很多其他细节,会影响x或y更合适,并且似乎可以接受z或w的建议,另外,很明显这是OP需要解决的实际问题。我认为这些是关键因素。

@Ethel让我们不要忘记Selenium提案已合并到该提案中。这意味着该站点的很大一部分用户除了硒外别无他物,并且自然会偏向于硒。这使我想起,问硒是否正确,只会带来心灵上的收获。

@glowcoder从那以后似乎没有得到证实。我看到均衡的响应提供了有关响应者考虑的因素的有用详细信息。

#1 楼

Selenium IDE的用户将使用Record-Playback机制或手动编码合适的语句来执行操作和声明。但是,只有使用浏览器插件的Firefox用户才能手动使用此自动化功能。要超越此范围并拥有可以在其他服务器和其他浏览器上运行的脚本,您应该使用支持以下浏览器的Selenium Web驱动程序:chrome,IE,Firefox,opera,safari等。 。您也可以设置Selenium Grid以便远程执行测试。请注意,您可以将seleniumIDE测试导出为您选择的语言。

如果您是初学者,则可以使用selenium IDE来理解命令。如果在Firefox浏览器上选择一个元素,然后单击鼠标右键,它将在上下文菜单中显示与所选控件相关的所有命令。它主要对初学者有用。每当遇到困难时,都可以快速参考Selenium IDE以获得指导。

因此,我建议您选择Selenium Web Driver,因为它支持您对IE和C#的要求。

评论


同意,这就是我开始使用它的方式,并且我能够从自己的录音中制作出一些不错的C#脚本,直到我对结构满意并编写了自己的C#脚本。

– MichaelF
2011年5月20日14:40

这看起来很有希望,谢谢您的建议。

–克里斯
2011年5月20日下午14:51

已更新,表明Record-Playback并不是使用IDE的唯一方法,并且正如许多评论中提到的那样,大多数seleniumIDE用户从未使用Record-Playback和手写代码脚本来正常工作。其他限制(例如仅在Firefox中运行以及需要人工运行它们)仍然存在,并限制了其使用。

–迈克尔·杜兰特(Michael Durrant)
16-11-7在11:04



#2 楼

这实际上不是一个真正的“无论是那个还是那个”问题,因为您实际上可以通过watir-webdriver一起使用这两个问题。

首先:
如果我们正在谈论在浏览器级别进行测试,那么您几乎完全可以忽略用于运行服务器端的语言。页面呈现为HTML + Javascript并通过HTTP发送到浏览器后,将不再剩下C#。因此,无需使用c#作为测试自动化语言。 (您可能仍然想要,但是不需要)。

其次
从需求中清除记录/播放的想法。从长远来看,它对于高于HTTP协议级别的任何东西都不起作用(在负载测试方案中,记录器可以很好地作为协议的起点,但对于UI级别的功能测试而言,记录器就很好)。测试人员已经知道大约15年了,这是经验丰富的质量检查人员之间广泛共识的领域。最终的测试很脆弱,难以维护。唯一喜欢记录/播放的人是依赖于该技术水平的工具供应商的销售人员,他们使用它们说服经理们,他们的工具“任何人都可以进行自动化测试”恕我直言,Selenium IDE / Recorder存在的全部原因是为了与这种思维竞争,我认识的很少有Selenium用户使用它,或者较旧的Selenium Grid。

那么,您使用什么语言?
考虑到这一点,请使用最适合您的测试人员的工具,并与您使用的任何框架(例如FITNess或Cucumber等)配合使用。我个人认为Ruby是测试人员编写脚本的出色语言,因为它易于编码和学习。因此,如果您的质量检查人员不是有经验的编码人员,那可能比尝试教他们C#更好的方法。此外,Watir API非常面向对象,对于任何掌握HTML和网页DOM(域对象模型)的人来说,它都很容易理解。我还使用黄瓜来做BDD,这是在Ruby中完成的,以便与Watir很好地吻合。 OTOH如果将要进行自动化的人们知道另一种语言,那么您可能想使用Selenium RC和该语言。

edit:决定使用哪种语言的最大因素通常取决于“您想在谁身上进行测试”如果您对筒仓感到满意,并且只是让您的测试人员或SDET类型的人员从事E2E自动化,那么请选择最适合他们的语言。 OTOH如果您希望开发人员能够修复因UI更改等原因而中断的测试,那么您可能希望选择开发团队使用的通用语言。由于敏捷团队将嵌入式测试仪作为团队的一部分,而不进行移交,因此这种事情可能会成为更大的问题。另外,现在还有诸如Cucumber之类的Java和JS版本的工具,因此这些天您也有了新的选择。 (自从我最初撰写此答案以来的5年中,这已经发生了很大的变化)

输入Webdriver
事实是,Watir和Selenium的距离比许多人想象的要近,尤其是现在Watir-Webdriver gem已经到来,它使用Selenium的新Webdriver技术(据我所知,它也将取代Selenium'Core')来驱动浏览器。引擎盖,但允许测试人员使用出色的Watir API以红宝石编写代码。随着Watir和Selenumn都使用Webdriver来与浏览器进行接口,这似乎是两个项目的未来。使用Watir-Webdriver可为IMHO带来两全其美的体验,由于Webdriver和Watir易于编码,因此具有广泛的浏览器支持。

我将同时尝试Selenium RC和Watir的教程看看哪种API看起来对您来说更容易用于对测试进行编码。如果您更喜欢Watir,请确保立即将其与Watir-Webdriver一起使用。

评论


+1以记录/播放您的评论。我真的希望供应商的销售人员能在这方面保持警惕。他们欺骗IT经理以为这是一种可持续的解决方案:(

–斯蒂芬·格罗斯(Stephen Gross)
2011年11月8日在20:38

拒绝录制/播放的另一个+1。

–布莱恩·奥克利(Bryan Oakley)
2012年2月5日在18:19

#3 楼

恐怕我对Watir不太熟悉,但是我对Selenium 1和2有一定的经验。

我以前在Python项目上使用过Selenium RC,并且非常喜欢它。但是我不是使用RC,而是使用Selenium 2 WebDriver来测试C#开发的应用程序。我最初使用Selenium RC,但很快就切换了,因为我发现我需要Selenium RC不提供的OnPageLoad弹出窗口等支持。

Selenium 2 C#程序集确实具有丰富的可扩展功能,但是Selenium 1中有一些值得注意的项目,而2中缺少,例如WaitForPageToLoad()和IsElementPresent(我能够使用从FindElement构造的方法来重现这些项目)。

在IDE上:即使我正在使用Selenium 1 / Python,我也没有发现它非常有用。它生成的脚本实际上是通用的,构造较差,并且需要大量重构。因此,如果您采用RC路线,则最好自己编写所有代码,如果遇到问题,最好使用IDE进行“建议”。

希望这会有所帮助。

评论


我发现它有用了几次,但我不知道为什么这么多人在IDE上竖琴它是与其他工具一样的工具。您可以使用它,也可以不用。我同意WebDriver很棒,并且在编写C#库进行测试时是一个很好的补充。

– MichaelF
2011年5月20日下午16:54

如果您使用的是Selenium 2,那么这是有争议的,因为IDE会生成Selenium 1代码。但是我同意,如果您使用的是RC,它可以作为参考/教学工具很有用。但是,我不会在成品中依赖它,因为输出不是很惯用。

– Greg Gauthier
2011年5月20日在17:48

#4 楼

对于C#开发,可以使用Selenium RC或WatiN。 Watir补充了学习Ruby的需求,这对于使用LAMP堆栈的公司来说可能是不错的选择。

我们的团队让多个开发人员针对Selenium,W​​atiN和Watir进行了C#繁重的项目研究,得出的结论是如果您缺乏具有广泛开发技能的测试人员,那么硒可能会更好。这主要是由于Selenium中的记录和回放功能大大优于WatiN。硒还具有更常见且更易于查找信息的优势。但是,WatiN具有更丰富的库,对于习惯C#的人来说,“感觉”比对代码的感觉更好,并且被开发人员更好地喜欢。 Selenium和WatiN都可以在Firefox和IE中轻松工作,但是从面向对象的角度来看,WatiN处理多个浏览器的方式更加简洁。

tl:dr:如果您的测试人员也往往是开发人员,那么我会使用WatiN,但是如果Selenium可以用于测试的开发时间非常宝贵,并且您需要最小化编码负担,那么我将使用WatiN。两者都可以与C#,IE和FF配合使用。

#5 楼

如果您具有Ruby的一些脚本编写技能,那么我将通过记录/回放并直接在WATIR中对测试进行编码http://www.watir.com/

#6 楼

看过VSTT-Microsoft测试工具。如果您正在寻找功能测试自动化,VSTT 2010应该是一个不错的选择。 Web服务测试,UI测试,Biztalk测试和数据驱动测试支持。请查看VSTT-http://msdn.microsoft.com/zh-cn/library/ee338734(v=vs.90).aspx

Visual Studio性能测试快速参考指南(2.0版)已发布
http://blogs.msdn.com/b/edglas/archive/2010/04/13/visual-studio-performance-testing-quick-reference-guide-version-2-0-published.aspx

编码的UI测试-http://blogs.msdn.com/b/mathew_aniyan/archive/2010/02/11/content-index-for-coded-ui-test.aspx

数据驱动编码的UI测试-http://blogs.msdn.com/b/mathew_aniyan/archive/2009/03/17/data-driving-coded-ui-tests.aspx

#7 楼

我目前正在积极使用Telerik Test Studio。它是一个非常强大的记录和回放工具,并且具有一个结构类似于WatiN和Selenium RC的坚固框架。使用Test Studio,底层的测试框架是免费的,但是记录和回放工作室的部分则不是。它具有与VS 2008和2010的插件集成,当您要将一些编码步骤添加到记录和回放片段中时,它非常好用。您可以免费评估它,因此,如果您感兴趣的话,可以看一下。我尚未将其用于WPF测试。

#8 楼

对于C#测试,您应该使用WatiN而不是WatiR。
还可以考虑使用Telerik Test Studio。它对测试自动化有一些好处。

#9 楼

如果您的应用程序是用C#开发的,为什么不使用C#来测试应用程序呢? C#具有许多有用的库,例如“可以看到应用程序的反射”,您实际上消除了产品代码和自动化测试之间的任何抽象层。