我目前工作的公司正在使用Selenium对我们的用户界面进行联合测试。你用什么来对你的 Web UI 进行单元测试,你觉得它有多有效?
15 回答
我是 Selenium 的忠实粉丝。正如某些评论所提到的那样,说“对您的 web ui 进行单元测试”并不完全准确。但是,我确实发现 Selenium 对于在 UI 上执行这些验收和健全性测试非常有用。
一个很好的入门方法是使用 Selenium IDE 作为开发的一部分。即,只需在开发时打开 IDE 并在开发时编写测试以减少开发时间。(不必手动通过 UI 来测试您正在处理的任何内容,只需点击一个按钮,Selenium IDE 就会为您处理好。这非常节省时间!)
我的大多数主要用例场景都有 Selenium RC 测试来支持它们。您不能真正将它们视为 xUnit 框架的单元测试,但它们是针对非常特定功能的测试。它们写起来很快(特别是如果你实现了登录或设置测试用例等常用方法),运行速度很快,并且提供了一个非常紧密的反馈循环。在这些意义上,Selenium RC 测试与单元测试非常相似。
我认为,与其他任何事情一样,如果您努力正确地学习测试工具(例如 Selenium),您的努力将会得到回报。您提到您的公司已经使用 Selenium 进行 UI 测试。这很棒。使用它。如果您发现 Selenium 难以使用或令人困惑,请坚持使用。一旦你稍微学习了 API,学习曲线真的不是那么陡峭。
如果我正在开发一个 Web 应用程序,我很少会在没有 Selenium RC 测试来支持它的情况下编写大量代码。这就是我发现 Selenium 的效果。:) (希望这能回答你的问题..)
我们在我的工作地点使用 Watin,我们是一家 .net 商店,所以这个解决方案很有意义。我们实际上是从 Watir(最初的 ruby 实现)开始的,然后又切换了。到目前为止,这对我们来说是一个很好的解决方案
好吧,如果您正确地设计了应用程序,那么无论如何您都不会在 UI 中包含大量逻辑。将实际完成的工作分离到与 UI 分开的单元中,然后对其进行测试更有意义。
如果这样做,那么 UI 中的唯一代码将是调用后端的代码,因此只需测试后端就足够了。
我过去(在我的工作中)使用过 NUnit ASP,如果你坚持对你的 UI 进行单元测试,我强烈建议你使用除 NUnit ASP 之外的任何东西。使用起来很痛苦,即使是最细微的 UI 更改(即使测试的主题实际上并没有改变),测试也往往会失效(需要修改)。
我们正在使用 QuickTestPro。到目前为止它是有效的,但是浏览器的选择是有限的。最好的部分是能够记录浏览器的活动,并将其转换为一组可编写脚本的步骤。还有一个不错的 .Net 插件,因此如果您需要为测试的不同阶段执行任何验证代码,您可以在程序集中编写方法并从脚本中调用它们。
我们使用JSunit进行单元测试已经有一段时间了……它可能与您所说的测试类型不同,但它非常适合确保您的 JavaScript 按预期工作。
你在浏览器中运行它,它可以在 Ant 构建中设置为自动在一堆平台上的一堆浏览器上远程运行(这样你就可以确保你的代码是跨浏览器的,并确保逻辑是正确的)。
我不认为它取代了 Selenium,但它很好地补充了它。
我们使用 Visual Studio 2008 测试版。
优点: 非常擅长捕捉用户交互
捕获 Ajax 调用
将用户输入映射到数据库、XML 或 CSV 文件非常容易
捕获的测试可以转换为 C# 以获得更多控制
相同的测试可用于负载测试和代码覆盖率
缺点:
VS2008 测试版是与普通开发版分开的 SKU,这意味着额外的费用
您可能对 Microsoft 过敏 ;-)
我们在项目中非常有效地使用了它,但是在保持测试最新方面需要付出很多努力,每次更改屏幕时都可能需要重新录制测试
我们倾向于保持测试简短而清晰,做一件事然后离开,而不是在一次测试中记录 10 分钟的点击次数。
我们有一些标准的 UI 测试类型:
菜单测试:以特定用户(或用户类型/角色)身份登录并确保所有必需的菜单项都可用
验证测试:打开页面点击保存,不输入任何数据,确保出现所有验证警告。一次填写一个必填字段,并检查警告消息是否在应有的时候消失。
搜索测试:使用数据库或数据文件中的数据进行搜索,并确保搜索返回正确的数据
数据输入测试:从数据文件创建新记录,清理数据库以允许测试多次运行
UI 测试非常耗时,但在发布新版本之前通过数百次测试所获得的舒适感是无价的。
我们使用 Selenium Core,但正在逐渐切换到更好且更易于管理的 Selenium RC。我们编写了许多自定义代码来使测试在我们的持续集成服务器上运行,其中一些在并行套件中运行得更快。
您会发现一件事是 Selenium 似乎在每次测试时都会重新启动浏览器(您可以将其设置为不这样做,但这样做时我们遇到了内存问题)。这在 Firefox 中可能会很慢,但在 IE 中并不算太糟糕(有一次我感谢比尔盖茨的操作系统集成)。
我用过WATIR,非常好。我喜欢它,因为它是 Ruby 并且允许测试交互性、可用元素和源代码解析。我已经有一段时间没有使用它了,但我认为它会变得更好。
据说它被移植到 Firefox 和 Safari,但这已经发生了一段时间。
查看Canoo Web 测试。它是开源的,建立在 ANT 框架之上。
我花了一些时间在软件 QA 研究生课程中使用它,它似乎是一个非常强大的测试工具。
Selenium Grid可以在多台机器上并行运行您的 Web 测试,这可以加快 Web 测试过程
我主要使用CubicTest,这是一个 Eclipse 插件,可让您以图形方式定义测试。它可以通过多个库导出/运行测试,包括 watir 和 selenium。大多数人只是使用 Selenium 跑步者。
全面披露:我是开发人员之一,所以我有点偏见:)
在这里仔细看看:cubictest.openqa.org
-埃伦德
Selenium 用于集成测试,而不是单元测试。这是一个微妙但重要的区别。我通常看到的用法是检查构建的完整性。即,进行登录测试、(例如)提交故事、发表评论等的测试。
这个想法是,您正在测试以查看整个系统是否在部署之前协同工作,而不是让用户发现您的站点已损坏。
我们目前使用Silk4J - 一种以 Java 为中心的方法来测试 Web UI。它可以测试 Flash、Flex、AIR、Silver Light、Win32、HTML 和其他一些应用程序。
由于 Silk4J 可以控制 Win32 应用程序,因此它可以直接控制浏览器对话框,这比 Selenium 可以控制的功能高出一步,对于下载提示特别有用。
Molybdenum建立在 Selenium 之上,并具有一些附加功能。