在测试使用 C Sharp 创建的 Web 应用程序时,是选择 Selenium 而不是 Watir 还是轻量级测试自动化?

软件测试 自动化测试 瓦提尔
2022-01-18 12:46:12

我目前正在研究测试框架来测试 C Sharp 开发的 Web 应用程序。我一直更倾向于使用 Selenium 而不是 Watir 或轻量级测试自动化,但对 IDE 作为 Firefox 插件犹豫不决,因为我需要为 IE 找到一个记录器,因为它是用于运行 Web 应用程序的浏览器。

在测试使用 C Sharp 创建的 Web 应用程序时,想知道 Selenium 相对于这些替代方案有什么好处。任何有测试 c 锐利网络应用程序经验的人,对最好的应用程序有任何建议。

我也在考虑在未来测试 WPF,如果 Telerik 的 Test Studio 是解决这个问题的最佳方式,我会徘徊。

4个回答

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

首先: 如果我们谈论的是浏览器级别的测试,您几乎可以完全忽略用于运行服务器端的语言。 一旦页面呈现为 HTML+Javascript 并通过 HTTP 发送到浏览器,就没有剩余的 C#。所以没有必要使用 c# 作为你的测试自动化语言。(你可能仍然想要,但你不需要)

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

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

编辑:决定使用哪种语言的最大因素通常归结为“您希望谁进行测试”为他们。OTOH,如果您希望您的开发人员能够修复他们因 UI 更改等而破坏的测试,那么您可能需要选择一种与您的开发团队正在使用的通用语言。随着敏捷团队使用嵌入式测试人员作为团队的一部分,而不是进行交接,这种事情可能会成为一个更大的问题。现在还有像 Cucumber 这样的 Java 和 JS 版本的工具,所以现在你也有新的选择。(自从我最初撰写此答案以来,这在 5 年内发生了很大变化)

进入 Webdriver 事情是 Watir 和 Selenium 比许多人意识到的更接近,特别是现在 Watir-Webdriver gem 已经到来,它使用 Selenium 的新 Webdriver 技术(据我了解,它也正在取代 Selenium 'Core')来驱动引擎盖下的浏览器,但允许测试人员使用出色的 Watir API 在 ruby​​ 中编写代码。随着 Watir 和 Selenumn 都转向 Webdriver 来与浏览器交互,这似乎是这两个项目的未来。恕我直言,使用 Watir-Webdriver 可为您提供两全其美的效果,由于 Webdriver 和 Watir 的简单编码,因此具有广泛的浏览器支持。

我会尝试两者(Selenium RC 和 Watir)的教程,看看哪个 API 看起来更容易用于编写测试代码。如果您更喜欢 Watir,请确保您立即将它与 Watir-Webdriver 一起使用。

Selenium IDE 的用户将使用 Record-Playback 机制或手动编码合适的语句来执行操作和断言。但是,这种自动化只能由具有浏览器插件的 Firefox 用户手动使用。要超越这一点并拥有可以在其他服务器和其他浏览器中运行的脚本,您应该考虑使用支持多种浏览器的 Selenium Web 驱动程序:chrome、IE、Firefox、opera、safari 等。Selenium Web 驱动程序也支持 C# . 您还可以设置 Selenium Grid 以远程执行测试。请注意,您可以将 seleniumIDE 测试导出为您选择的语言。

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

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

恐怕我对 Watir 不是很熟悉,但我确实对 Selenium 1 和 2 有一些经验。

我之前在 Python 项目中使用过 Selenium RC,并且非常喜欢它。但我一直在使用 Selenium 2 WebDriver 来测试 C# 开发的应用程序,而不是 RC。我开始使用 Selenium RC,但很快就切换了,因为我发现我需要对诸如 OnPageLoad 弹出窗口之类的支持,而 Selenium RC 不提供这些支持。

Selenium 2 C# 程序集非常丰富,具有可扩展的特性,但是 Selenium 1 中的一些值得注意的项目在 2 中缺失,例如 WaitForPageToLoad() 和 IsElementPresent(我能够使用从 FindElement 构造的方法重现) .

在 IDE 上:我发现它一点用都没有,即使我使用的是 Selenium 1 / Python。它生成的脚本非常通用且构造不佳,需要大量重构。因此,如果您走 RC 路线,最好自己编写所有代码,并在遇到问题时使用 IDE 提供“建议”。

希望这可以帮助。

对于 C# 开发,您可以使用 Selenium RC 或 WatiN。Watir 补充说需要学习 Ruby,这对于使用 LAMP 堆栈的公司可能会很好。

我们的团队让几位开发人员为我们的 C# 重度项目研究 Selenium、WatiN 和 Watir,并得出结论,如果您拥有较少的具有广泛开发技能的测试人员,Selenium 可能会更好。这主要是因为 Selenium 中的记录和播放功能大大优于 WatiN 的现有功能。Selenium 还具有更常见且更易于查找信息的优势。然而,WatiN 有更丰富的库,对于习惯于 C# 的人来说“感觉”更好,并且更受开发人员的喜爱。Selenium 和 WatiN 都在 Firefox 和 IE 中工作,工作量相对较小,但从面向对象的角度来看,WatiN 处理多个浏览器的方式感觉更整洁。

tl;dr:如果您的测试人员往往也是开发人员,我会使用 WatiN,但如果可以专门用于测试的开发时间非常宝贵,并且您需要尽量减少编码负担,那么我会使用 Selenium。两者都适用于 C#、IE 和 FF。