Locust:深入使用 断言 参数化 压测工具对比

###

Locust 设置断言

性能测试也需要设置断言么? 某些情况下是需要,比如你在请求一个页面时,就可以通过状态来判断返回的 HTTP 状态码是不是 200。

使用TaskSet实现

####

Locust 参数化

使用 LoadRunner 和 JMeter 的同学都知道,性能测试工具设置参数化颇为麻烦,但对于 Python 来说,生成点数据再简单不过了。 

使用TaskSet实现

 

####

好文推荐:

1、https://debugtalk.com/post/locustplus-talk-about-performance-test/

这篇博客从性能测试方法、性能瓶颈定位、性能测试工具的基本组成、性能测试工具推荐(比较了loadrunner,jmeter,Locust优缺点)等方面做了深入的介绍,推荐!

蝗虫比Jmeter好的一点就是高并发,但是相对的不好的地方也有,就是需要另外的工具去监控服务器,而且需要去编写代码。

下面贴上这个文章的对比内容:

性能测试工具推荐

经过充分的理论铺垫,现在总算可以进入正题,开始讲解工具部分了。

在性能测试工具方面,我重点向大家推荐Locust这款开源工具。目前阶段,该款工具在国内的知名度还很低,大多数测试人员可能之前都没有接触过。为了便于理解,我先将Locust与LoadRunner、Jmeter这类大众耳熟能详的性能测试工具进行简单对比。

\LoadRunnerJmeterLocust
授权方式 商业收费 开源免费 开源免费
开发语言 C/Java Java Python
测试脚本形式 C/Java GUI Python
并发机制 进程/线程 线程 协程
单机并发能力
分布式压力 支持 支持 支持
资源监控 支持 不支持 不支持
报告与分析 完善 简单图表 简单图表
支持二次开发 不支持 支持 支持

通过对比,大家可能会疑惑,Locust也不怎么样嘛,资源监控也不支持,报告分析能力也这么弱,那为啥还要选择它呢?

授权方式这个就不说了。虽然LoadRunner是商业软件,价格极其昂贵,但是国内盗版横行,别说个人,就算是大型互联网公司,用正版的也没几个。

从功能特性的角度来讲,LoadRunner是最全面的,用户群体也是最多的,相应的学习资料也最为丰富。个人建议如果是新接触性能测试,可以先熟悉LoadRunner,借此了解性能测试工具各个模块的概念和功能,在此基础上再转到别的测试工具,也都比较好上手了。不过,LoadRunner只能在Windows平台使用,并且并发效率比较低,单台压力机难以产生较高的并发能力,这也是现在我弃用该款工具的主要原因。

同样地,Jmeter的并发机制也是基于线程,并发效率存在同样的问题;另外,Jmeter在脚本编写和描述方面是基于GUI操作,个人感觉操作比较繁琐(这个因人而异),因此不是很喜欢。

那么,我重点推荐的Locust有啥特别的地方呢?

如果从整体功能上来看的话,Locust的功能的确比较单薄。不过,作为性能测试工具最核心的压力发生器部分,却是非常不错的。抛开官方文档的介绍,个人觉得最赞的有两点。

首先是模拟用户操作,也就是测试脚本描述方面。Locust采用Pure Python脚本描述,并且HTTP请求完全基于Requests库。用过Requests的都知道,这个库非常简洁易用,但功能十分强大,很多其它编程语言的HTTP库都借鉴了它的思想和模式,如果将其评选为最好用的HTTP库之一(不限语言),应该也不会有太大的争议。除了HTTP(S)协议,Locust也可以测试其它任意协议的系统,只需要采用Python调用对应的库进行请求描述即可。

另外一点就是并发机制了。Locust的并发机制摒弃了进程和线程,采用协程(gevent)的机制。采用多线程来模拟多用户时,线程数会随着并发数的增加而增加,而线程之间的切换是需要占用资源的,IO的阻塞和线程的sleep会不可避免的导致并发效率下降;正因如此,LoadRunner和Jmeter这类采用进程和线程的测试工具,都很难在单机上模拟出较高的并发压力。而协程和线程的区别在于,协程避免了系统级资源调度,由此大幅提高了性能。正常情况下,单台普通配置的测试机可以生产数千并发压力,这是LoadRunner和Jmeter都无法实现的。

有了一个不错的引擎,外表装饰简陋点也都是可以接受的了。不过虽然Locust功能单薄,特别是在性能指标监控和测试报告图表方面比较缺失,但是Locust的代码结构清晰,核心代码量也只有几百行,可扩展性也非常不错。换言之,Locust的可玩性(hackable)极强,对于一个想深入挖掘性能测试工具原理的人来说,Locust非常适合。

好了,Locust的介绍暂且到这儿,后续我会再对Locust的使用方法和二次开发进行详细介绍,也算是弥补官方文档的不足吧。

总结:locust外表简单,但是功能不简单,

 

 https://debugtalk.com/post/head-first-locust-advanced-script/

####

posted @ 2021-11-29 12:38  技术改变命运Andy  阅读(275)  评论(0编辑  收藏  举报