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