这 5 款实用性能测试工具,你会如何选择?!

当我们做性能测试的时候,测试协议需要用到性能测试工具。市场上有很多可以做性能测试的工具。有些是收费的,有些是开源免费的。选择的时候它是否友好支持所有的协议呢?现在带大家来看看一些行业中常用的流行的性能测试工具。

ApacheBench 是一个轻量级工具。主要用于 HTTP 协议的性能测试。非常简单快捷。不支持场景化测试。

ab是个小巧而简便容易上手的工具,但是没有图形化的界面,提供的也是基本的性能参数,不能监控,一般用于临时测试某个接口的效率。

ab -n 1 -c 1 https://testerhome.com/

  • -n:总请求次数
  • -c:并发次数(并发请求不能大于总请求次数)

JMeter 是 Apache 开源基金会提供的完全开源的性能测试工具,旨在加载测试功能行为和衡量性能。它最初是为测试Web应用程序而设计的,但此后已扩展到其他测试功能。

Apache JMeter也可用于测试静态和动态资源,Web动态应用程序的性能。用于模拟服务器,服务器组,网络或对象上的繁重负载,以测试其强度或分析不同负载类型下的总体性能。支持分布式运行,JMeter 使用 Java 语言开发的,使用前需要安装 Java 运行环境。某些私有协议可以二次开发插件来支持相应的协议。

LoadRunner是一个性能测试工具,它最初是Mercury公司的产品,2006年Mercury公司被HP收购。

LoadRunner 是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner 企业能最大限度地缩短测试时间优化性能和加速应用系统的发布。因为是闭源收费的软件,且授权费用高昂。使用也较为复杂,而且该工具体积比较大。

LR 强调的是对整个企业应用架构进行测试,它通过模拟实际用户的操作行为和实行实时性能监控来帮助客户更快的确认和查找问题。LR能支持广泛的协议,可以为客户的特殊环境,提供特殊的解决方案。

Locust 是易于使用的分布式用户负载测试工具。它旨在对网站进行负载测试,并确定系统可以处理多少个并发用户。非常易用。很方便地基于Python进行脚本扩展和业务请求实现。完全基于事件驱动,所以不受进程和线程的限制,可以支持发起更高的并发数请求。可以分布式发起并发请求。

nGrinder 是一个用于在多台机器上运行用 jython(在 JVM 上运行的 python)编写的测试脚本的应用程序。它的内部引擎是基于 Grinder。nGrinder 分别用 controler 和 agent 将 Grinder 的 controler 和 agent 包装起来,并扩展了支持多个并发测试的特性。

nGrinder是一个压力测试的平台,使您可以同时执行脚本创建,测试执行,监视和结果报告生成器。提供了进行压力测试的简便方法。

看到这么多的工具,我在做一个性能测试任务的时候该怎么选择呢?

1.根据压测场景来选择

根据压测场景是什么来选择。如果说是一次性单接口的场景就可以使用 AB。如果说是复杂事物多接口需要业务场景的话,就会选择 JMeter 这类工具可以构造丰富的场景能满足需求。

2.我需要提供多大压力

我要提供多大的压力?是1000 QPS还是万级以上的。压力很大的话就要考虑压力测试工具是否支持分布式,能否快速扩展 agent。对于 JMeter 来讲就很好的支持了。

3.周期性需求

业务可能频繁上线,服务随时变动。可能会有一个周期性需求,按月巡检。需要一个场景文件,我可以去做数据驱动,实时跟进数据改变。最后希望结果落库。

4.二次开发的需求

JMeter 开源插件化思想,支持 Thrift,Dubbo 等多种协议。可以快速平台化。

最后是社区问题支持:JMeter 开放社区,广泛使用。有问题的时候能够快速获得答案。

基于我们这些需求点,就选择使用 JMeter 作为压测工具。

然后另外一个观点是:我们不用在乎工具是什么语言写的,市场情况如何。我们用工具就是要实现对系统的压力。如果工具能实现压力,它就实现了我们的性能测试工具想要的东西。并且在性能测试工具当中我们只要关注两条曲线:一个是 TPS、一个是响应时间。

能看懂性能曲线才是我们性能测试工程师的能力。而不是我们用什么测试工具,有多熟练工具。因为熟练只是一个开始。不管你是用什么样的性能测试工具,我们都会看到一些数据。这些数据我们要知道带给我们什么样的含义?后续做什么样的分析。所以这是性能测试工具可以给我们提供的东西。也是性能测试工具的意义。