ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

性能测试-locust

2022-05-24 17:32:55  阅读:190  来源: 互联网

标签:协程 请求 性能 locust 线程 测试 服务端


1、locust介绍

locust翻译过来是蝗虫的意思,模拟一群用户访问你的系统。是非常优秀的性能测试工具,它是依赖于Python的环境,所以使用它的前提是首先需要安装它。

 

官网:https://locust.io/

 

locust是基于协程的设计,协程 可以把它理解为微小的线程,基于用户的行为可以控制它。python一直很优秀,但是python在性能方面的表现很差劲,所以python设计了协程来改进这部分的设计缺陷。locust对服务端的负载能力很强,所以使用它可以来做服务端的稳定性测试。

在Python的技术栈的体系中,性能测试的⼯具是Locust的测试框架,Locust是⼀种易于编写,可以编写测试脚本 和可以扩展的性能测试⼯具,它是基于协程来进⾏设计的,当然也可以说是基于event的事件来进⾏设计的。协程 我们可以简单的理解为是基于⽤户态的线程,更加专业的话说是微线程,基于⽤户可以控制的⼀种微⼩的线程,也可以叫协程。

主要做负载测试和稳定性测试

 

jmeter与locust的区别:

1、JMeter是100%Java语言开发的,它是基于线程的模式向服务端发送请求

2、Locust是Python语言开发的,它是基于协程的模式

 

2、操作

(1)安装python3(之前学习已经安装)

A、c盘下创建python3的文件夹 B、打开安装包,安装,目录选择创建的python3 C、安装的时候,勾选add to path

 

(2)安装locust

pip3 install locust

 

 

(3)启动jar包 (spring boot 服务)

 

 

 

(4)启动jvisualvm

 

 

 

WEB模式:

常规的压力测试使用web模式

(1)编辑locustfile文件:

定义任务、定义任务集、定义用户类

 

 

 

import time
from locust import HttpUser,task,between

class QuickStartUser(HttpUser):
  wait_time = between(1,2.5)

  @task
  def index(self):
    r=self.client.get('/testDev')
    assert r.status_code==200
 

/testDev是开发给的,也就是端口之后的地址,工作中修改这一部分

 

(2)先进入到放locustfile这个文件的目录,执行命令来启动locustfile这个py文件:locust -f locustfile.py

 

(3)访问:

http://localhost:8089

端口是开发给的

 

 

下⾯具体针对界⾯的⽂字设置进⾏解释,具体如下:

• Number of total users to simulate:设置模拟的⽤户总数

• Spawn rate (users spawned/second):每秒启动的⽤户虚拟数

• Host (e.g. http://www.example.com):被测的⽬标服务器的地址信息

spring boot 的端口是8081

 

Type:请求类型(也就是请求具体是那个=⽅法)
Name:请求的路径地址信息
Requests:当前已完成的请求数量
Fails:当前失败的数量
Mediam(ms): 响应时间的中位数
90%ile (ms):90%的请求响应时间
Average (ms):平均响应时间
Min (ms):最⼩响应时间
Max (ms):最⼤响应时间
Average size (bytes):平均请求的数据量
Current RPS:每秒中处理请求的数量,也就是RPS
New test:点击该按钮可对模拟的总虚拟⽤户数和每秒启动的虚拟⽤户数进⾏编辑;
Statistics:聚合报告
Charts:测试结果变化趋势的曲线展示图,分别为每秒完成的请求数(RPS)、响应时间、不同时间的虚拟⽤户数;
Failures:失败请求的展示界⾯;
Exceptions:异常请求的展示界⾯;
Download Data:测试数据下载模块, 提供三种类型的CSV格式的下载,分别是:Statistics、responsetime、exceptions;

 

 

你之前有做过服务端稳定性测试吗?你是怎么理解它的?(面试题)

1、服务端稳定性测试指的是持续高并发的向服务端发送请求,服务端都能够处理客户端发送的处理,通过这样的一个模式来验证服务端它在持续高负载下它的业务处理能力,和系统的整体设计能力。如一码通,持续72小时连续不停的扫描二维码,都应该能够很快速的出健康码。

 2、有做过,如果是使用JMeter,就是无限循环,如果是locust,就一直持续的请求,具体多久,我们之前是24小时连续不停的请求

 

负载模式:

用于负载测试的时候

(1)编辑locustfile2文件:

 

 

import time
from locust import HttpUser,task,between

class QuickStartUser(HttpUser):
  host = 'http://localhost:8081'
  min_wait = 3000
  max_wait = 6000
  @task
  def index(self):
    r=self.client.get('/testDev')
    assert r.status_code==200

 

(2)执行命令来启动locustfile这个py文件:locust -f locustfile2.py

 

(3)访问:http://localhost:8089/

 

 

标签:协程,请求,性能,locust,线程,测试,服务端
来源: https://www.cnblogs.com/jiaruiqi/p/16306333.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有