性能测试Ⅲ——Locust框架

总目录

测试开发系列(功能+接口+性能+自动化)

性能测试资源下载链接

Locust介绍和安装

1. Locust简介

Locust是一个开源的性能测试工具,主要思想就是模拟一群用户访问你的系统。

1.1 特点

  1. 在代码中定义用户行为
    不需要安装笨重的软件,只是简单的Python代码
  2. 分布式和可扩展
    Locust支持在多台机器上的运行负载测试,因此可用于模拟数百万用户的请求
  3. 经过验证和战斗测试
    Locust被用于许多真实的项目中
  4. Locust有一个整洁的HTML+JS的用户界面,实时显示相关测试细节
    由于用户界面是基于网络的,它是跨平台的和容易扩展

2. Locust安装

安装命令:

pip install locustio==0.12.2

3. Locust使用

1. 案例演示环境说明

某系统包含以下接口:

  1. 登录
    • URL:http://182.92.81.159:1880/bms/login
    • 请求方式:POST
    • 请求参数:{“username”: “admin”, “password”: “123456”}
  2. 首页
    • URL:http://182.92.81.159:1880/bms/index
    • 请求方式:GET
  3. 获取用户信息
    • URL:http://182.92.81.159:1880/bms/profile
    • 请求方式:GET
  4. 退出
    • URL:http://182.92.81.159:1880/bms/logout
    • 请求方式:POST

2. 编写测试脚本

实现步骤:

  1. 定义任务(接口请求)
  2. 定义任务集(用户行为)
  3. 定义Locust类(用户)
2.1 定义任务

locust里发送请求是基于requests实现的,请求方法、参数、响应对象和requests使用方式一样。

def index(l):
	l.client.get("/index")
	
def login(l):
	l.client.post("/login", data={"username": "admin", "password": "123456"})
2.2 定义任务集

定义一个用户行为(任务集),包含多个具体的任务。

from locust import TaskSet

class UserBehavior(TaskSet):
	tasks = {index: 3, profile: 1}
	
def on_start(self):
	login(self)
	
def on_stop(self):
	logout(self)

如何定义?

一个用户行为类,要继承TaskSet类,表示一个任务集

on_start:前置方法(前置任务),在所有任务之前调用

on_stop:后置方法(后置任务),当任务集停止时调用

tasks:用来添加任务,它是一个dict类型,key表示任务的方法名,value表示挑选执行的权重,数值越大执行频率越高
2.3 定义Locust类

定义一个Locust类,这个类代表用户。

from locust import HttpLocust

class WebsiteUser(HttpLocust):
	task_set = UserBehavior
	min_wait = 2000
	max_wait = 3000
	host = "http://182.92.81.159:1880/bms"
	weight = 10

如何定义?

自定义的Locust类继承了 HttpLocust 类,这个类代表用户,生成一个实例,模拟用户发送http请求

task_set:该属性指向 TaskSet 类,定义用户的行为

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

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

host:被测应用的网址,例如:http://localhost:8080/bms

weight:用户被选中的概率,权重越大,被选中的机会就越大。默认值:10
2.4 示例代码
from locust import HttpLocust, TaskSet

def login(l):
	l.client.post("/login", data={"username": "admin", "password": "123456"})

def logout(l):
	l.client.post("/logout")

def index(l):
	l.client.get("/index")

def profile(l):
	l.client.get("/profile")

class UserBehavior(TaskSet):
	tasks = {index: 3, profile: 1}
	
	def on_start(self):
		login(self)
		
	def on_stop(self):
		logout(self)
		
class WebsiteUser(HttpLocust):
	task_set = UserBehavior
	min_wait = 5000
	max_wait = 9000
	host = "http://182.92.81.159:1880/bms"

3. 运行Locust

运行命令:

locust -f locust_files/my_locust_file.py --host=http://example.com

参数介绍:

-f:用来指定locust文件所在路径

--host:用来指定测试应用的网址
3.1 打开Locust的web界面

使用上面的命令行启动Locust之后,打开浏览器并访问:http://localhost:8089 (如果你在本地运行Locust)。可以看到如下界面
在这里插入图片描述

参数说明:

Number of users to simulate:要模拟的用户数量

Hatch rate (users spawned/second):孵化率(用户生成/),即每秒启动虚拟用户数

点击Start swarming 开始运行性能测试

效果展示:设置虚拟用户数10,每秒启动2个用户,点击Start swarming 开始运行
在这里插入图片描述

界面说明:

Type:请求类型

Name:请求路径

Requests:当前请求的数量

Fails:当前请求失败的数量

Median (ms):中间值,单位毫秒,一半服务器响应时间低于该值,而另一半高于该值

Average (ms):所有请求的平均响应时间,毫秒

Min (ms):请求的最小的服务器响应时间,毫秒

Max (ms):请求的最大服务器响应时间,毫秒

Average size (bytes):平均单个请求的大小,单位字节

Current RPS:每秒钟请求的个数

点击Edit可以编辑请求用户数

点击STOP按钮可以停止测试

点击New test可以重新开始测试

Charts图表展示
在这里插入图片描述

三个图标分别是:

Total Requests per Second:每秒发送请求数

Response Times(ms):平均响应时间

Number of Users:虚拟用户数
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zkFun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值