比较k6和JMeter的负载测试(转)

特征JMETERK6
基于 Java Go
脚本语言 非常有限: Java (Groovy, Beanshell, etc) Javascript
协议 通过插件支持大多数协议(本地支持HTTP/1.1、SOAP、FTP、JDBC、LDAP、MOM与JMS、SMTP、POP3、IMAP、外壳脚本、TCP、Java对象) 支持较少的现代协议(HTTP/1.1, HTTP/2, WebSockets, gRPC)
外部依赖项 Java
资源利用率 差劲; 一个负载生成器可以模拟数千个虚拟用户 非常好 ; 一个负载生成器可以模拟成千上万的虚拟用户
内存管理 必须设置JVM堆内存 本机使用负载生成器内存
线程模型 1个线程1个虚拟用户:性能较慢,资源成本较高 一个Goroutine1个虚拟用户:性能较快,资源成本更低
易于编写脚本 基于图形用户界面,带代码块 基于代码,VS Code插件
测试级阈值 不支持,仅个人请求 支持
脚本格式 XML javascript
易于协作 难以同时工作,易于测试员使用,需要GUI应用程序进行编辑 易于开发者使用,易于版本; Javascript格式促进协作
维护 详细的脚本,XML格式难以阅读 更简洁的脚本; JavaScript易于阅读
社区 自1998年以来,许多第三方教程,广泛的文档,没有中央社区 自2017年以来,广泛的文档,更少的第三方教程,有官方社区
插件支持 需要许多功能的插件,有很多可用的插件 本机支持大多数功能,可提供插件支持,并且稀疏性
本机分布式负载生成 否(仅限高级会员)
预先生成的报告 默认和自定义HTML报告,通过监听器记录 没有内置的预生成报告,通过第三方仪表板与分析工具集成
网站 jmeter.apache.org k6.io
源代码 JMeter k6

结论

尝试选择负载测试工具时,最好的建议是与最有前途的候选人进行概念验证,在实际测试周期中使用时,某些功能或错误可能或多或少重要,不要把两个不同工具的负载测试结果看得太重,每个工具记录的指标都不同,并且使用同一工具将结果与以前的结果进行比较更有意义,切换工具时,每次都要在新工具中重新建立基线。

以下摘要可以帮助您在JMeter和k6之间进行选择。

两个工具都擅长:

  • 通过编写复杂的用户流脚本来在应用程序服务器上生成协议级负载、
  • 使用动态思考时间,测试数据生成和可重用或可自定义工作负载模型的逼真的脚本、
  • 功能文档和发布的一致性。

两个工具都不支持:

  • 生成浏览器级别的负载并与DOM元素进行交互,尤其是对于单页应用程序、
  • 详细结果分析(JMeter有预先生成HTML报告和侦听器,但还差得远),用户应该能够将结果与数据库和数据可视化软件集成在一起。

JMeter最适合:

  • 传统模式的测试团队、
  • 偏爱基于GUI的测试工具的开发者,这些工具具有大量的第三方教程和广泛的协议支持、
  • 以前是LoadRunner和NeoLoad等商业工具的用户。

k6最适合:

  • 协作和跨职能的工程团队,其中测试涉及多个角色、
  • 偏爱简单,轻量但功能齐全的负载测试工具的开发者、
  • 希望将测试集成到现有开发工作流和CI/CD管道中的团队。

负载测试脚本工具不是负载测试成功的最重要考虑因素,了解测试的原因,测试要求,理解和传达结果更为重要,使用正确的工具有助于顺利解决这些问题,没有“最佳”工具,只有适合项目和需求的工具。

 

原文:https://blog.csdn.net/keny88888/article/details/118727931

posted @ 2021-11-13 21:14  kerwin cui  阅读(241)  评论(0编辑  收藏  举报