• 1
  • 1
分享
  • 压力测试实战——软件测试圈
  • TIMI 2022-07-07 15:55:55 字数 1710 阅读 2329 收藏 1

起因

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

需求

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

代码及运行结果

1、定义一个运行类继承HttpUser,user_password_list存放所有测试的账号密码,key_token_list存放所有账号登录后的token

1.png

2.png

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

3.png

3、下一个task就是,用户取出来一组key和token用来给下面task的接口使用,然后再把取出来的put进去,供其他用户循环使用

4.png

4、根据后台接口编写对应的上传数据的准备工作,self.tasteUser、 self.tasteToken是上面task取出来的(代码中的api是我封装的接口请求方法)

5.png

5、完成文件上传

6.png

6、执行 locust -f locust_slave1.py --host=https://xxxxxxxxxxx,只会登录3次但是会上传10次

7.png

8.png

分布式运行

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

master代码:

9.png

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后等待从机的连接

10.png

3、执行两个slave后,master显示运行的结果

11.png

slave显示接口详情

12.png

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


作者:野马くん

原文链接:https://blog.csdn.net/qq_20550447/article/details/108205218

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   很多软测人吐槽因为疫情,公司都在裁员,别说跳槽涨薪,能保住现在的工作就不错了。但也有那么一批人,凭借自己口才与实力拿到年薪近50W的offer。  面试是初见1小时就要相互了解优缺点的过程,在你问我答的交锋中如何不露声色、不卑不亢的展现自己,通过以下几个常见问题的拆解,你会得到答案的~  Q 你的期望薪资是多少?  菜鸟的回答:假设上家公司是10K,一般人会说我想要11K或者12K,因为我上家公司是10K。  解析:如果问到你的期望薪资了,那说明技术上已经非常认可你了,只要薪资是在公司预算范围内,offer就到手了,但是谈薪资,切记!先开价者为下!要得过高容易凉,要得过低,觉得吃亏。  高...
            0 1 1120
            分享
          • 什么是bug,英文直译过来叫虫,是指程序运行过程中出现的一些问题。任何人都有自己的问题,程序也是,更何况程序是开发人员写的。日常生活中直接冲到别人面前去嚷嚷:“喂,你这里有问题!”你觉得别人会愿意搭理你吗?而如果你有礼貌一点:“你好,我发现你这块有点不妥,换个方式应该会更好”效果会大不相同。同理,测试人员的日常工作中,最主要的就是报bug,bug提交的好,能够减少沟通成本,也会尽快提高软件质量。笔者特地总结了关于报bug的一些注意事项,分享给大家,遵守这些礼仪,可以让我们汇报bug的效果锦上添花。一、注明前置条件先来看下禅道上面默认的bug模板是什么样子的:步骤:是怎么操作出这个bug的,要尽...
            0 1 2920
            分享
          • 它跟安卓APP与IOSAPP有什么样的区别呢?★我们以往的APP是使用原生系统内核的,相当于直接在系统上操作,是我们传统意义上的软件,更加稳定★H5的APP先得调用系统的浏览器内核,相当于是在网页中进行操作,较原生APP稳定性稍差,似乎还没有百万级用户量的H5APP★H5最大的优点是可以跨平台,开发容易,APP的话需要用ANDROID的语言和IOS的语言各自写,H5只要开发一套★简单的说:H5是基于web,native基于客户端H5测试应该从哪些方面考虑?1、业务逻辑相关除基本的功能测试之外,H5页面的测试,需要关注以下几点:1.1 登陆目前H5与native各个客户端都做了互通,所以大家在测...
            0 0 2231
            分享
          •   继 3 月 28 日发布 SU7 后,蓝鲸财经记者号称“从可靠信源获悉”,小米或将于今年年底发布 SUV 车型。  小米官方此前在“答网友 100 问”中提到了第一辆车为什么选择了轿车,而不是 SUV。小米称汽车是“工业之王”,而轿车是每个时代 “时代精神”典型代表,是每个时代 “时代精英”第一选择。  小米 SU7 定位“C 级高性能生态科技轿车”,提供双电机版本和单电机版本车型选择,并提供容量为 73.6 千瓦时以及 101 千瓦时电池可选,售价 21.59 万元-29.99 万元。作者:汪淼原文链接:IT之家(ithome.com)
            0 0 751
            分享
          •   前言  在这个行业,到了35+还没有干到高级测试开发或者架构师的水平,那就真是的不好干了,因为这个年龄,面对的竞争不是20多岁小年轻可以比的。  如果你25岁了,中间有10年的时间,保持敬畏心,持续学习,10年时间你觉得自己可以达到什么程度的大佬?  但是话说回来,你也一定听说过做点点点做了五六年,最后找不到工作,扔下一句,测试行业就是吃青春饭的,这上哪说理去?  简单来说,就是年龄上去了,但是能力没有上去。  你不是具备10年工作经验的测试工程师,你只不过是一年的工作经验用了10年。  我以以下三点进行一个深度的解析:  1,谈谈二十五岁做软件测试怎么样?  2,软件测试前景怎么样?  ...
            0 0 987
            分享
      • 51testing软件测试圈微信