【发布时间】:2012-12-07 12:06:46
【问题描述】:
我了解Karma 是一个JavaScript 测试运行器,可以在真实浏览器中运行测试。如果是这样的话,Selenium 在 Karma 之外还提供了什么样的测试覆盖率。
【问题讨论】:
标签: javascript selenium functional-testing karma-runner browser-automation
我了解Karma 是一个JavaScript 测试运行器,可以在真实浏览器中运行测试。如果是这样的话,Selenium 在 Karma 之外还提供了什么样的测试覆盖率。
【问题讨论】:
标签: javascript selenium functional-testing karma-runner browser-automation
Karma 和 Selenium 之间存在巨大差异。 Selenium 有一个内置的浏览器控制机制,而 Karma 没有。所以 Selenium 更适合端到端测试,例如 nightwatch.js。 Karma 是为单元测试而设计的,因此在其上实现端到端测试要困难得多,您可以添加例如 phantomjs 启动器,但它永远不会与使用 Selenium 的真实浏览器测试相同......我认为两者如果你有适配器,它们可以运行任何 js 测试框架...... Mocha、jasmine、qunit 等......
以后的永恒:
可以使用 Karma 编写 e2e 测试。您需要创建一个 iframe 或打开一个新窗口并运行一个脚本,该脚本从父框架或窗口进行导航、触发事件、提交表单等。测试页面需要允许您的 Karma 服务器使用 CORS,或者您需要禁用浏览器安全性。我正在开发一个e2e testing library,它正是这样做的。
【讨论】:
Selenium 有多个版本,其中最新的(我相信)是 Selenium Web 驱动程序,它允许您创建一个驱动程序,通过模拟与用户界面交互的操作来为您处理浏览器,就像用户一样(通过 Json 线)。
我目前对 Karma 的理解(我可以补充的非常有限)是它严重依赖于执行 javascript。因此,Karma 必须在元素上调用更改事件(如“模糊”和“悬停”),而 Selenium 只需单击、制表符、将光标移动到。 Selenium 的浏览器仅限于其网页here 上指定的浏览器。
【讨论】:
这取决于您要测试的内容。如果您使用 javascript 编写单元测试 - 通过 jasmine/mocha/chai 或等效的方式 - 业力严重依赖 javascript 而 selenium 不依赖的论点 - 是多余的。
在我的所有经验中,我与很少有专门的自动化测试人员合作过,虽然 selenium 语言可能是他们的选择,但 selenium 方法库不像 jquery 等等效选择器引擎那样容易记忆。
专业的自动化测试人员难以学习该语言,而开发人员对学习一门次门语言缺乏兴趣,这使得公司长期缺乏投资于更复杂的自动化测试的投资
多年来,已经有一些使用 selenium 的 jquery 增强实现,但没有一个真正拥有大量追随者,而且大多数都是用 java 编写的。
Webdriverio 有一个 npm 包,有一些 jquery 功能 - https://www.npmjs.com/package/webdriverio-jquery
Karma 有办法导入整个 jquery 引擎 - https://github.com/bessdsv/karma-jasmine-jquery
这取决于正在测试的内容。如果你在测试前端代码,那么使用 javascript 是有意义的,使用 jquery 比 selenium 语言更容易,而且目前 karma 对 jquery 的支持比 webdriver 更好。
使用 jquery 进行自动化测试可以将可转移的技能转移到开发中,反之亦然,让开发人员进入自动化测试。
【讨论】: