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

举报
Criss@陈磊 发表于 2020/06/01 16:10:44 2020/06/01
【摘要】 LoadRunnerLoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 LoadRunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。LocustLoc...

LoadRunner

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


Locust

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


模拟的场景及设置


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

LoadRunner的场景设置

image.png

上面的场景设置的含义就是,并发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测试结果

image.png


从上面的测试结果看,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毫秒,无失败的访问。

对比

image.png


从上面可以看出来,两个工具在最大的响应时间和最小的响应时间处理差不多,但是Locust发送请求的效率比LoadRunner要大很多,因此会导致服务端处理的请求会更多。

平均响应时间上,LoadRunner的结果优于Locust,90分位数也优于Locust,这可能出现的原因是因为Locust发送请求的机制更快,单位时间内发送请求更多,从而导致服务端要处理的请求更多,影响了响应时间的结果。


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


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。