压力测试实战(史上最全最详细教程)

起因

受人之托。网上大都是好久之前旧版的demo,而且demo就只是demo。简单写下用法,很少有结合实际的需求进行讲解。

需求

只使用几个测试账号,模拟N个用户进行数据的上传。比如我有3个账号,要模拟100个用户的压测,只是调用3次登录接口,拿到3个用户的token后,这100个用户循环调用这3个账户的token进行一系列操作。

代码及运行结果

  1. 定义一个运行类继承HttpUser,user_password_list存放所有测试的账号密码,key_token_list存放所有账号登录后的token
    在这里插入图片描述

在这里插入图片描述
2. 定义一个任务类,继承SequentialTaskSet后,任务会顺序执行。onstart方法每个模拟用户只会执行一次,(queue队列中取值,直到取完为止,因为有3个账户所以只会取3次登录3次,如果并发数是100剩下的97个用户会取不到值所以会抛出异常,为了防止这97个用户还没等到这三个账户登陆成功就进行下一个task,需要在这等待几秒钟,等3个用户登录成功key_token_list中有token了再进行下一个task),登录成功后接口中取key和token,存放到key_token_list
在这里插入图片描述

  1. 下一个task就是,用户取出来一组key和token用来给下面task的接口使用,然后再把取出来的put进去,供其他用户循环使用在这里插入图片描述

  2. 根据后台接口编写对应的上传数据的准备工作,self.tasteUser、 self.tasteToken是上面task取出来的(代码中的api是我封装的接口请求方法)
    在这里插入图片描述

  3. 完成文件上传在这里插入图片描述

  4. 执行 locust -f locust_slave1.py --host=https://xxxxxxxxxxx,只会登录3次但是会上传10次
    在这里插入图片描述
    在这里插入图片描述

分布式运行

  1. 创建一个master,master 节点自身不会模拟任何用户,负责启动运行并查看实时统计数据。然后复制上面的locust_slave1.py,改成locust_slave2.py,把userInfos的账号改成其他的账号,不然两个slave同时运行一个账号会冲突。

    master代码:

    1. 执行master: 
       locust -f UserTask/locust_master.py --host=https://xxxxxxxxxxx --headless -u 10 -r 10 --run-time 10s --    expect-workers=2 --master --master-bind-host=192.168.1.1
       (-f文件名)            (--host压测地址)                         (-u虚拟用户数)(-r 每秒启动数)(--run-time执行时间)
        (expect-workers=2  启动两个slave)  (--master  表示该节点是master)(--master-bind-host  主机服务地址)
    
    2. 执行slave1.py:
       locust -f locust_slave1.py --host=https://xxxxxxxxxx --worker --master-host=192.168.1.1
        (--worker 指定当前为从服务   )(--master-host 指定主服务地址)
        
    3.  执行slave2.py:
       locust -f locust_slave2.py --host=https://xxxxxxxxxx --worker --master-host=192.168.1.1
        (--worker 指定当前为从服务   )(--master-host 指定主服务地址)
    
  2. 执行master后等待从机的连接在这里插入图片描述

  3. 执行两个slave后,master显示运行的结果在这里插入图片描述
    slave显示接口详情 在这里插入图片描述

至此Locust的讲解就到这里了,有问题请多指正。互相学习、共同努力

https://www.lanqiao.cn/courses/2947,提供准备好的云主机ros环境,进行实操,课程包括了 Topic 通讯, Service 通讯,ROS 自定义消息,URDF可视化,TF坐标转换等技术要点。每个技术点都会结合例子先把原理讲解清楚,为了达到学以致用的目的,我们会再进行知识拓展,针对每个技术点实现对应的生动有趣的需求,保证学完后会有很大的收获。

  • 7
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值