locust性能测试: helloworld

0|1简介

An open source load testing tool.

一个开源性能测试工具。

define user behaviour with python code, and swarm your system with millions of simultaneous users.

使用Python代码来定义用户行为。用它可以模拟百万计的并发用户访问你的系统。

Locust 完全基本 Python 编程语言,采用 Pure Python 描述测试脚本,并且 HTTP 请求完全基于 Requests 库。

除了 HTTP/HTTPS 协议,Locust 也可以测试其它协议的系统,只需要采用Python调用对应的库进行请求描述即可。

LoadRunner 和 Jmeter 这类采用进程和线程的测试工具,都很难在单机上模拟出较高的并发压力。

Locust 的并发机制摒弃了进程和线程,采用协程(gevent)的机制。协程避免了系统级资源调度,由此可以大幅提高单机的并发能力

安装:

0|2通过PIP命令安装:

pip install locust

0|3编写脚本:

from locust import HttpUser, TaskSet, task

class UserBehavior(TaskSet):

@task(1)
def baidu(self):
    self.client.get("/")

class WebsiteUser(HttpUser):
    task_set = UserBehavior
    min_wait = 3000
    max_wait = 6000

创建UserBehavior()类继承TaskSet类,为用户行为。

  创建baidu() 方法表示一个行为,访问百度首页。用@task() 装饰该方法为一个任务。1表示一个Locust实例被挑选执行的权重,数值越大,执行频率越高。在当前UserBehavior()行为下只有一个baidu()任务,所以,这里的权重设置为几,并无影响。

  WebsiteUser()类用于设置性能测试。

  task_set :指向一个定义了的用户行为类。

  min_wait :用户执行任务之间等待时间的下界,单位:毫秒。

  max_wait :用户执行任务之间等待时间的上界,单位:毫秒。

0|4运行脚本:

locust -f .\locustfile.py --host=https://www.baidu.com

-f 指定性能测试脚本文件。
–host 指定被测试应用的URL的地址

输出:

[2020-06-20 11:16:09,859] WINDOWS-8TS3PNG/WARNING/locust.main: System open file limit setting is not high enough for load testing, and the OS wouldnt allow locust to increase it by itself. See https://docs.locust.io/en/stable/installation.html#increasing-maximum-number-of-open-files-limit for more info.
[2020-06-20 11:16:09,860] WINDOWS-8TS3PNG/INFO/locust.main: Starting web interface at http://:8089
[2020-06-20 11:16:09,874] WINDOWS-8TS3PNG/INFO/locust.main: Starting Locust 1.0.3

0|5进行测试:

通过浏览器访问:http://localhost:8089(Locust启动网络监控器,默认为端口号为: 8089)

 

 Number of users to simulate 设置模拟用户数。

Hatch rate(users spawned/second) 每秒产生(启动)的虚拟用户数。

点击 “Start swarming” 按钮,开始运行性能测试。

运行结果:

参数说明
Type请求的类型,例如GET/POST
Name请求的路径。
request当前请求的数量
fails当前请求失败的数量
Median中间值,单位毫秒,一半的服务器响应时间低于该值,而另一半高于该值
Average平均值,单位毫秒,所有请求的平均响应时间
Min请求的最小服务器响应时间,单位毫秒
Max请求的最大服务器响应时间,单位毫秒
Content Size单个请求的大小,单位字节
reqs/sec是每秒钟请求的个数

1|0Charts

吞吐量/每秒响应事务数(rps)实时统计

 

 平均响应时间/平均事务数实时统计

 

 虚拟用户数运行

 

 基本测试完成,重点是测试脚本的编写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值