如何选择一个性能测试工具(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发送请求的机制更快,单位时间内发送请求更多,从而导致服务端要处理的请求更多,影响了响应时间的结果。
但是性能测试无论用哪个工具都是一个相对结果,因此我们只要保证在测试、优化过程中用同一个工具、相同的网络环境进行测试,就可以达到我们性能测试和优化的原始工作的预期的。
From:https://mp.csdn.net/mdeditor/98041663#
关注我,关注测试