专栏首页测试技术圈如何选择一个性能测试工具(LoadRunner和Locust的一次对比)

如何选择一个性能测试工具(LoadRunner和Locust的一次对比)

LoadRunner

LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。

Locust

Locust是一个开源负载测试工具。使用 Python 代码定义用户行为,也可以仿真百万个用户。Locust 是非常简单易用,分布式,用户负载测试工具。Locust 主要为网站或者其他系统进行负载测试,能测试出一个系统可以并发处理多少用户Locust 是完全基于时间的,因此单个机器支持几千个并发用户。相比其他许多事件驱动的应用,Locust 不使用回调,而是使用轻量级的处理方式协程。

模拟的场景及设置

200并发,执行接口的get请求,访问同一个服务,执行时间5分钟,每秒启动50个并发访问的请求。全部访问没有思考时间,每次迭代间隔无等待。等到达测试时间后,结束测试,全部进入结束流程无逐渐退出设置。

LoadRunner的场景设置

上面的场景设置的含义就是,并发200用户,每秒钟启动50个虚拟用户,压力持续5分钟结束后全部退出。

Locust的场景设置

locust -f test_get.py  --host=http://www.XXXXXXX.com --no-web -c 200 -r 50 -t 5m

参数定义:

--no-web 表示不使用Web界面运行测试。

-c 设置虚拟用户数。

-r 设置每秒启动虚拟用户数。

-t 设置设置运行时间

--host=http://www.XXXXXXX.com  指定被测试应用的URL的地址,注意访问HTTPS的网址需要使用的HTTPS协议。

上面的场景含义就是不适用web页面启动测试,测试http://www.XXXXXXX.com地址,压力200虚拟用户,每秒钟启动50个虚拟用户,测试共运行5分钟.

结果对比

LoadRunner测试结果

从上面的测试结果看,LoadRunner共计运行5分32秒,发送请求26599次,最小响应时间为0.024秒,平均响应时间为0.36秒,最大响应时间为18.05秒,90分位数为0.287秒,无失败的访问。

Locust测试结果

Name                                                          # reqs      # fails     Avg     Min     Max  |  Median   req/s
-----------------------------------------------------------------------------------------------------------------------------------------
GET  XXXXXXXXXXXXXXXXXXXXXX                                     42099     0(0.00%)    1394      29   17028  |    1300  160.40
-----------------------------------------------------------------------------------------------------------------------------------------
Total                                                           42099     0(0.00%)                                     160.40

Percentage of the requests completed within given times
Name                                                           # reqs    50%    66%    75%    80%    90%    95%    98%    99%   100%
-----------------------------------------------------------------------------------------------------------------------------------------
GET XXXXXXXXXXXXXXXXXXXXXX                                      42099   1300   1300   1300   1400   1500   1600   1800   2700  17000
-----------------------------------------------------------------------------------------------------------------------------------------
Total                                                           42099   1300   1300   1300   1400   1500   1600   1800   2700  17000

从Locust的结果看,访问共计发送请求42099次,最小响应时间为29毫秒,最大响应时间为17028毫秒,平均响应时间为1394毫秒,90分位数为1500毫秒,无失败的访问。

对比

工具

最小响应时间(毫秒)

最大响应时间(毫秒)

平均响应时间(毫秒)

90分位数(毫秒)

发送请求数

LoadRunner

24

18050

360

287

26599

Locust

29

17028

1394

1500

42099

从上面可以看出来,两个工具在最大的响应时间和最小的响应时间处理差不多,但是Locust发送请求的效率比LoadRunner要大很多,因此会导致服务端处理的请求会更多。平均响应时间上,LoadRunner的结果优于Locust,90分位数也优于Locust,这可能出现的原因是因为Locust发送请求的机制更快,单位时间内发送请求更多,从而导致服务端要处理的请求更多,影响了响应时间的结果。

但是性能测试无论用哪个工具都是一个相对结果,因此我们只要保证在测试、优化过程中用同一个工具、相同的网络环境进行测试,就可以达到我们性能测试和优化的原始工作的预期的。

本文分享自微信公众号 - V社 北京社(SoftwareTesters),作者:测者陈磊

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 测试架构的技术修改:自动化单元工具EvoSuie的代码覆盖报告

    EvoSuite是由Sheffield等大学联合开发的一种开源工具,用于自动生成测试用例集,生成的测试用例均符合Junit的标准,可直接在Junit中运行。得到...

    Criss@陈磊
  • 自动化单元工具EvoSuie的代码覆盖报告

    EvoSuite是由Sheffield等大学联合开发的一种开源工具,用于自动生成测试用例集,生成的测试用例均符合Junit的标准,可直接在Junit中运行。得到...

    Criss@陈磊
  • 性能工具之Taurus场景使用(进阶篇)

    复杂场景的压力测试,如果有多个同学从事脚本开发,则有时必须使用多个测试脚本文件。这意味着将多个测试脚本需要集成到单个压力测试中。在 JMeter 中可以通过使用...

    Criss@陈磊
  • PsychoPy安装与测试案例

    PsychoPy 是一个开源的应用程序,在神经科学、心理学以及心理物理学的各种实验中用于呈现刺激和收集数据。它类似eprime。

    脑机接口社区
  • Sass 基础(六)

    join() 函数    join()函数是将两个列表连接合并成一个列表。    >>join(10px 20px, 30px 40px)       (...

    用户1197315
  • Arcgis for javascript不同的状态下自定义鼠标样式

    俗话说:爱美之心,人皆有之。是的,没错,即使我只是一个做地图的,我也希望自己的地图看起来好看一点。在本文,给大家讲讲在Arcgis for javascrip...

    lzugis
  • Ceph:一个新时代的开始

    目前Ceph 是一种已经震撼了整个存储行业的最热门的软件定义存储技术。它是一个开源项目,为块存储、文件存储和对象存储提供了统一的软件定义解决方案。Ceph 旨在...

    博文视点Broadview
  • Basemap工具函数(1)

    添加一个经度值到经度数组中,并且添加一列值到数据数组中。当数据覆盖全部经度时,非常有利于添加缺省值。

    bugsuse
  • 【Codeforces】1220C - Substring Game in the Lesson

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk
  • map和object相互转换的几种方法和对比

    从这点来看,beanutils比反射好用,它里面做了大量的转换工作,反射的方法更多需要你自己来处理。

    用户7634691

扫码关注云+社区

领取腾讯云代金券