首页 > 其他分享 >性能测试工具Locust和JMeter比较-及相关书籍下载

性能测试工具Locust和JMeter比较-及相关书籍下载

时间:2023-04-23 17:44:26浏览次数:59  
标签:脚本 性能 Locust 测试 使用 测试工具 JMeter

Apache JMeter™和Locust都是是最受欢迎的性能测试工具。

JMeter和Locust - 简介

JMeter是久经考验的性能框架之一,其第一个版本大约在20年前发布。 它是用纯Java语言编写的。 最初,JMeter开发用于执行Web和FTP应用程序的负载测试。 但是,现在它允许测试几乎所有应用程序和协议,使用户能够使用与任何OS平台兼容的桌面应用程序来创建测试。

https://github.com/apache/jmeter 6000+星

Locust是Python编写的相对新颖的性能框架,在过去的五年中广为人知。 该框架的主要特点是使用纯Python编写性能脚本。具有高度可扩展性,因为它基于事件的完全实现。 Locust拥有广泛且快速发展的社区,他们比JMeter更喜欢这个框架。

https://github.com/locustio/locust 210000+星

开源许可证

工具许可范围的问题是最重要的问题之一,因为您可能想知道是否需要支付额外的第三方工具来完成负载测试。 如果某个工具是开源的,那么您几乎可以实现为性能测试设置的任何目标,而无需任何额外付款。 开源JMeter和Locust也不例外。

JMeter和Locust都提供了许可软件许可证,该许可证支持免费软件,对软件的分发方式提出最低要求。 JMeter是由Apache开发的,它基于Apache License 2.0,而Locust是由由社区驱动的开发人员组成的小团队开发的 ,基于MIT许可证。 在这两种情况下,这些工具都是开源的,允许您自由使用它们,而不受任何使用限制。

负载测试创建和维护

性能测试工作流程有三个主要步骤:创建,运行和分析。 一般第一步是最耗时的。

编写JMeter性能测试的最常用方法是使用其GUI模式。 JMeter GUI模式提供了桌面客户端,允许您轻松创建测试,而无需编写单行代码(直到您需要创建棘手的测试)。 所以最简单的场景可能如下所示:

JMeter非常简单,通常,即使是没有经验的工程师也可以毫无困难地上手。但是如果需要,您可以使用Java在GUI和非GUI模式下使用代码。 但是,由于脚本实现的复杂性(因为JMeter旨在与GUI模式一起使用)以及缺乏如何制作此类脚本的文档,因此这种方式在JMeter社区中并不流行。

Locust则需要python编程基础。

支持的协议

理想情况下,您应该能够使用尽可能少的工具测试所有工具,只要它不会影响测试质量。

使用JMeter,您可以使用完整的内置函数和第三方插件,在一个地方创建所有内容的性能测试。 您无需编码即可测试不同的协议甚至数据库。 这些包括JDBC,FTP,LDAP,SMTP等。JMeter还可以通过jar包扩展,比如加载jython,可以使用python脚本。

根据文档,Locust主要用于基于HTTP Web的测试。但可以扩展其默认功能并创建自定义Python函数来测试可以使用Python编程语言进行测试的任何内容。

并发用户数

JMeter和Locust有完全不同的方式来处理机器资源。 JMeter有一个基于线程的模型,它为每个用户分配一个单独的线程。 每个步骤的线程分配和基准测试需要大量资源,这就是为什么JMeter对于您可以在一台机器上模拟的用户数量非常有限的原因。 您可以在一台计算机上运行的用户数取决于许多因素,如脚本复杂性,硬件,响应大小等。 如果您的脚本很简单,JMeter允许您在一台机器上运行多达数千个,但脚本执行逐渐变得不可靠。

image.png

image.png

Locust有完全不同的用户模拟模型,它基于事件和异步方法,以gevent coroutine作为整个过程的基石。 这种实现允许Locust框架在一台机器上轻松模拟数千个并发用户,即使是在非常规的笔记本电脑上,也可同时运行内部有许多步骤的复杂测试。

image.png

增强灵活性

这两个工具提供相对相同的生成负载的方式 - 您可以指定在性能测试期间要使用的用户数以及它们应该加速的速度。

在JMeter中,您可以在指定字段的“线程组”控制器中配置负载:但是JMeter还有其他插件,可以让您配置非常灵活的负载。 最好的方法之一是使用Ultimate Thread Group ,它允许用户制作非常具体的加载模式:

Locust有不同的方法。 当您运行性能脚本时,Locust会自动在http://localhost:8089 上启动Web界面的服务器,该界面为您提供仅指定线性负载的输入元素, 当然也可以命令行执行通过参数定制。

脚本录制

这是JMeter具有强大优势的地方,因为它具有脚本录制的内置功能,而Locust根本没有此功能。 除此之外,还有许多第三方插件可以为JMeter制作脚本录制。 记录此类脚本最方便的方法之一是使用BlazeMeter chrome扩展。

参考资料

测试监控

JMeter和Locust都提供了强大的内置功能来监控性能脚本并分析您的测试结果。 JMeter有许多不同的元素叫做监听器。 每个侦听器都提供特定类型的监视,你也可以使用许多现有的自定义监听器扩展默认库。另一方面,JMeter监听器在其运行的机器上消耗大量资源。这就是为什么通常,JMeter是以非GUI模式执行的,没有任何监听器或监控过程,在这种情况下,可使用3方工具,如BlazeMeter 。

image.png

Locust的监测能力稍弱,不过几乎提供了所有可用于监控基本负载的信息。在脚本运行期间,Locust运行一个简单的Web服务器,您可以在其中找到所有可用的监视结果:

image.png

image.png

与JMeter相比,Locust监控不占用您机器的大量资源。 这就是为什么Locust比JMeter有很大的好处,因为你可以使用内置监控,即使你需要模拟很多用户。 另一方面,默认监控不提供您可以从第三方工具获得的非常详细的信息。 这就是为什么你可能想检查脚本监控的其他选项。

监控和分析测试结果的最简单方法之一是使用Taurus框架和BlazeMeter报告,它为您提供出色的实时报告,并能够保存它们以进行进一步比较。 您可以查看这篇文章以获得基本想法。

结论

具备python基础对性能或灵活性要求高的建议使用Locust。反之JMeter可能是更好的选择。

标签:脚本,性能,Locust,测试,使用,测试工具,JMeter
From: https://www.cnblogs.com/testing-/p/17347254.html

相关文章

  • Jmeter调用Python脚本实现参数互传(OS进程取样器)
    1:新增取样器--->os进程取样器--》配置命令、命令行参数;2.os进程取样器命令行地址下的bat文件的内容:  3.py文件接收jmeter传递过来的值: 4.正则提取os进程提取器返回的值,也就是py文件返回的值:  ......
  • JMeter 没有jmeter.log文件问题
    使用JMeter5.5压测,想查看日志发现JMeter安装目录下的bin文件夹没有jmeter.log文件手动开启日志在JMeter的默认配置中,jmeter.log文件是不会自动生成的,需要用户手动开启。可以通过修改jmeter.properties配置文件来开启jmeter.log的生成。具体操作如下:打开jmeter.pr......
  • jmeter没有停止问题
    设置了达到500并发后,持续压测120s全部数据跑完,没有自动停止图表这里在35秒后就不变了但是没有自动停止,点击stop,异常jmeter停止运行,提示:Oneormoretestthreadswon'texit;seelogfile.这个提示意味着在运行JMeter脚本时,有一个或多个测试线程没有正常退出或被杀......
  • 模型动态测试工具TPT 19 新特性速览
    TPT19亮点    形式化需求:自动生成测试用例  在TPT19中,测试用例可以通过形式化需求自动创建—只需要按下按钮。 此前,形式化需求已经自动评估。现在我们对此进行了更深一步的改进。  参数集的混合执行  TPT19中可以更容易地创建参数集,可以多次执行,当......
  • jmeter中的java请求 用httpclient写的http请求 及参数化
    首先,jmeter中的sample的原理: jmeter 中的java 请求,sample 原理,java testjmeter自带的包,把包放在类路径下面,通过反射机制,通过反射机制扫出来。 先导入五个jar包  packagecom.young.testing91;importjava.io.IOException;importorg.apache.http.client.C......
  • jmeter3.0 以上生成报告
    在cmd中执行 先进入到jmeter/bin目录中执行这个命令就可以生成已output命名的文件,里面有html的报告jmeter-n-t<testJMXfile>-l<testlogfile>-e-o<Pathtooutputfolder>jmeter-n-ttest.jmx-ltestReport-e-o./output 第二种方法命令先执行jmeter-n......
  • linux中使用jmeter进行压力测试执行篇及遇到的问题
    上传jmx格式的脚本,修改权限chmod777XX.jmx 执行脚本 jmeter-n-tdenglu200.jmx-ldenglu200.jtl  -n代表nogui格式 -t代表执行的脚本 -l代表日志文件在linux里用vim编辑XX.jmx脚本,可以直接修改线程数循环次数,线程启动时间,测试链接,参数化的文件要上传到服......
  • jmeter之仅一次控制器、If控制器、前置处理器beanshell、后置处理器beanshell
    1、仅一次控制器作用是把请求放到仅一次里面的时候,不管循环数写几次,放到仅一次控制器里的请求都只跑一次,大部分用在登录,一般就登录一次就可以了,还有jdbc连接也是连接一次就可以了,不用重复连接。2、If控制器如果(If)控制器,if控制器如果里面的条件不满足,是不执行里面的请求的,看用户自......
  • 我所了解的测试工具
    Selenium:用于Web应用程序测试的自动化测试工具。JMeter:用于压力测试、性能测试、负载测试的开源工具。Appium:适用于移动应用程序自动化测试的开源工具。TestNG:用于Java编程语言的测试框架。Postman:用于测试和管理API的工具。SoapUI:用于Web服务测试的开源工具。......
  • jmeter-跨线程组传参的两种方法
    jmeter的变量值不能跨线程组传递。如果变量在开始测试之前已经确定了,我们可以用参数化关联就可以实现。但是如果值时动态生成,每循环一次,值就变化一次,那么怎么办呢?以下两种方法可解决方法一:自定义属性法思路:jmeter中,属性是全局的,是可以动态设置的;而变量是独属于每个线程的第一步......