最近学习这个locust是一个开源的python压力测试的框架,代码相对简单,涵盖的东西却不少。
locust是基于python的性能测试工具、支持python2.7及其以上的版本、相对于主流的LR与Jmeter工具使用的方式不一样、locust是通过编写python代码来完成性能测试的。
Locust是一款易于使用的分布式用户负载测试工具。它用于对网站(或其他系统)进行负载测试,并确定系统可以处理多少并发用户。
** gevent是第三方库,通过greenlet实现协程。greenlet是python的并行处理的一个库。 python 有一个非常有名的库叫做 stackless ,用来做并发处理, 主要是弄了个叫做tasklet的微线程的东西, 而greenlet 跟stackless的最大区别是greenlet需要你自己来处理线程切换, 就是说,你需要自己指定现在执行哪个greenlet再执行哪个greenlet。** |
主要好的一些学习地址如下:
- 最好的最全的是先从官网开始了解。Locust 官方网站:https://www.locust.io/
- locust的介绍和简单使用:https://www.cnblogs.com/imyalost/p/9758189.html
- 入门、复杂场景、其他、易懂:https://www.jianshu.com/nb/32734542
- locust性能测试(虫师、详细):http://www.testclass.net/locust/introduce/
- 深入浅出开源性能测试工具 Locust(使用篇):https://debugtalk.com/post/head-first-locust-user-guide/
- locust性能测试1-5:https://www.cnblogs.com/yoyoketang/tag/locust/
总结:
这些我看了2周,并在我们自己的项目中实际操作过,基本的没问题,后面会继续学习,研究,多看多操作很重要,后面打算好好看看python的requests库
之前学习python会只用到这个库,但是很多时候都不知道里面的意思,库里面有哪些内容,一直没有去好好细化的学习这个。下一步打算好好看看。
性能工具对比
LoadRunner 是非常有名的商业性能测试工具,功能非常强大。使用也比较复杂,目前大多介绍性能测试的书籍都以该工具为基础,甚至有些书整本都在介绍 LoadRunner 的使用。
Jmeter 同样是非常有名的开源性能测试工具,功能也很完善,在本书中介绍了它作为接口测试工具的使用。但实际上,它是一个标准的性能测试工具。关于Jmeter相关的资料也非常丰富,它的官方文档也很完善。
Locust 同样是性能测试工具,虽然官方这样来描述它 “An open source load testing tool.” 。但其它和前面两个工具有着较大的不同。相比前面两个工具,功能上要差上不少,但它也并非优点全无。
-
Locust 完全基本 Python 编程语言,采用 Pure Python 描述测试脚本,并且 HTTP 请求完全基于 Requests 库。除了 HTTP/HTTPS 协议,Locust 也可以测试其它协议的系统,只需要采用Python调用对应的库进行请求描述即可。
-
LoadRunner 和 Jmeter 这类采用进程和线程的测试工具,都很难在单机上模拟出较高的并发压力。Locust 的并发机制摒弃了进程和线程,采用协程(gevent)的机制。协程避免了系统级资源调度,由此可以大幅提高单机的并发能力。
正是基于这样的特点,使我选择使用Locust工具来做性能测试,另外一个原因是它可以让我们换一种方式认识性能测试,可能更容易看清性能测试的本质。(整理)
. | loadrunner | jmeter | locust | wrk |
---|---|---|---|---|
分布式压力 | 支持 | 支持 | 支持 | 不支持 |
单机并发能力 | 低 | 低 | 高 | 低 |
并发机制 | 进程/线程 | 线程 | 协程 | 线程 |
开发语言 | C/Java | Java | Python | C |
报告与分析 | 完善 | 简单图标 | 简单图表 | 简单结果 |
授权方式 | 商业收费 | 开源免费 | 开源免费 | 开源免费 |
测试脚本形式 | C/Java | GUI | Python | C |
资源监控 | 支持 | 不支持 | 不支持 | 不支持 |
附locust安装步骤
环境准备:
python3.6
windows电脑
locust
1、首先安装python,操作步骤见:python环境安装(一)
2、安装后,再安装locust只需命令: pip install locustio
、
前几次都失败了,不知道哪里错了,后面查了下都是这样写,我就复制了,再粘贴就好了、pip install locustio
pip install locustio
使用locust -V可查看是否安装成功。查看到安装的locust的版本
这里想简单介绍 Locust 都基于了哪些库。当我们在安装 Locust 时,它会检测我们当前的 Python 环境是否已经安装了这些库,如果没有安装,它会先把这些库一一装上。并且对这些库版本有要求,有些是必须等于某版本,有些是大于某版本。我们也可以事先把这些库全部按要求装好,再安装Locust时就会快上许多。
gevent 是在 Python 中实现协程的一个第三方库。协程,又称微线程(Coroutine)。使用gevent可以获得极高的并发性能。
flask 是 Python 的一个 Web 开发框架。
Requests 用来做 HTTP 接口测试。
msgpack-python 是一种快速、紧凑的二进制序列化格式,适用于类似JSON的数据。
six 提供了一些简单的工具用来封装 Python2 和 Python3 之间的差异性。
pyzmq 如果你打算运行 Locust 分布在多个进程/机器,建议你安装pyzmq。
放一个开始自己安装locust失败的截图,到现在不知道哪里写错了。很奇怪。。。