我了解Karma是一个 JavaScript 测试运行器,可以在真实浏览器中运行测试。如果是这样,Selenium 在 Karma 之外提供了什么样的测试覆盖率。
3 回答
Karma 和 Selenium 之间存在巨大差异。Selenium 有一个内置的浏览器控制机制,而 Karma 没有。所以 Selenium 更适合端到端测试,例如nightwatch.js。Karma 是为单元测试而设计的,因此在其上实现端到端测试要困难得多,您可以添加例如 phantomjs 启动器,但它永远不会与使用 Selenium 的真实浏览器测试相同......我认为两者如果您有适配器,它们可以运行任何 js 测试框架... Mocha、jasmine、qunit 等...
永恒之后:
可以使用 Karma 编写 e2e 测试。您需要创建一个 iframe 或打开一个新窗口并运行一个脚本,该脚本从父框架或窗口进行导航、触发事件、提交表单等。测试页面需要允许您的 Karma 服务器使用 CORS,或者您需要禁用浏览器安全性。我正在开发一个e2e 测试库,它正是这样做的。
Selenium 有几个版本,其中最新的(我相信)是 Selenium Web 驱动程序,它允许您创建一个驱动程序,通过模拟与用户界面交互的操作(通过 Json)为您处理浏览器金属丝)。
我目前对 Karma 的理解(我可以补充的是非常有限的)是它严重依赖于执行 javascript。因此,Karma 必须在元素上调用更改事件(如“模糊”和“悬停”),而 Selenium 只需单击、制表符、将光标移动到。Selenium 的浏览器仅限于此处网页上指定的浏览器。
这取决于你在测试什么。如果您使用 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 进行自动化测试将使可转移技能进入开发,反之亦然,开发人员进入自动化测试。