• 1
  • 1
分享
  • 压力测试实战——软件测试圈
  • TIMI 2022-07-07 15:55:55 字数 1710 阅读 2067 收藏 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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。今天笔者就总结下如何使用unittest单元测试框架来进行WEB自动化测试。一、unittest模块的各个属性说明点击返回目录    先来聊一聊unittest模块的各个属性,所谓知己知彼方能百战百胜,了解unittest的各个属性,对于后续编写用例有很大的帮助。1.unittest的属性如下:['BaseTestSuite', 'FunctionTestCa...
            13 14 1251
            分享
          • 前言随着软件测试技术的发展,人们已经从最初的纯粹的手工测试转变为手工与自动化测试技术相结合的测试方法。近年来,自动化测试越来越受到人们的重视,对于自动化测试的研究也越来越多。背景项目版本功能日趋增加,系统模块越来越多,功能趋于完善,此一、外系统经常更新,测试人员无法满足多模块的测试需求,测试压力日渐增大,尤其在做回归测试时,无法确保每次更新后系统都得到完整的回归测试。一、自动化测试基础知识什么是自动化测试把人为驱动的测试行为改成机器执行,通过设计的测试用例,由机器按照测试用例的执行步骤对其进行自动操作,输出结果,由测试人员进行比较。自动化测试往往通过一些测试工具或框架,编写自动化测试用例,来模...
            2 2 3242
            分享
          •   51testing软件测试圈“季度更文活动——万字更文”已经结束了,感谢各位的参与。  本次更文活动时间为2023年3月1日--2023年4月16日!  获奖情况和评审情况如下表所示:作者投稿字数6分及以上的文章数活动奖品九哥91542篇公牛魔方插座米果橙柠149140篇小米加湿器FunTeste742958篇小米加湿器*额外奖励100元京东卡优秀文章一览:· 卷完职场卷AI,测试真的会被ChatGPT代替吗?· 金三银四想跳槽?这篇测试人分龄跳槽指南请收好· 应对自动化测试9大挑战· 敏捷 ? DevOps ?· 国际化和本地化测试·&n...
            1 1 6155
            分享
          •   如果您的网站在用户访问时的加载时间需要很久,那么,这篇文章兴许能为您的优化工作带来一些启发。不过即便没能帮您解决你的问题,您也能了解到影响了网站加载时间的几种常见错误是什么。  为什么页面加载时间这个指标很重要?  页面的加载时间直接影响到了用户对网站性能的直观感受。有调研数据表示,  一旦页面加载时长超过3秒,那么将会有一半的访问用户在等待中而流失。  · 搜索引擎排名 — 页面加载时间是搜索引擎在搜索结果中对你的网站进行排名的重要依据之一。因此,网页的加载时间会影响用户在Web上查找该网页的难易程度。  · 转化率 — 页面加载越快,用户的参与度就越高。网站速度慢,显而易见地会导致转化...
            0 0 1891
            分享
          •        在软件测试技术中,现有的测试方法、测试技术中均未提及到通过测试与失败测试。       而在实际项目测试过程中,很多项目组却再应用该方法。虽然该方法被采用,但是很多人对通过测试与失败测试理解并不透侧,在实际使用过程中并未按统一的标注去做。很多测试工程师只是在自己项目中采用这种名称的测试方法,而并未理解该方法如能够用,也就是说使用过程中,其实还是以前熟知的测试方法,如边界值、等价类等。       本文旨在跟大家一起讨论该方法,希望能给其下个标准,能在实际应用中规...
            0 0 1541
            分享
      • 51testing软件测试圈微信