• 0
  • 0
分享
  • 微软谷歌都在用 Python 性能测试工具——软件测试圈
  • 落叶凌飒 2022-12-28 13:41:54 字数 2770 阅读 1064 收藏 0

  Locust是一款Python技术栈的开源的性能测试工具。Locust直译为蝗虫,寓意着它能产生蝗虫般成千上万的并发用户。

1-1.png

  Locust并不小众,从它Github的Star数量就可见一斑:

1-2.png

  链接:github.com/locustio/lo…

  截止文章写作时,一共15951Star。

  Locust生态良好,它已在多家外企(包括世界500强)投入使用:

1-3.png

  如此看来,Locust是非常值得学习和掌握的一款工具。

  Python的魔力在于化繁为简,基于Python的Locust也能给仍然困惑于性能测试的我们带来启发。

  Locust特点

  · 以纯Python方式编写用户脚本,提供极大自由度。

  · 用户脚本可以串行方式编写,Locust会通过轻量级进程/协程产生并发,无需自己做并发编程。

  · 并发量大,借助于gevent库,Locust能产生成千上万并发请求。

  · 开销小,Locust用户运行时开销很小。

  · 良好的Web UI对性能结果实时监测。

  · 能测任何系统任何协议,只需要写个client即可。

  · 开放REST API,尽情发挥。

  安装Locust

  需要Python版本3.6及以上。执行pip命令:

  $ pip install locust

  验证安装成功:

  $ locust -V

  安装时会一并安装依赖库:Installing collected packages: Werkzeug, pywin32, zope.event, greenlet, gevent, geventhttpclient, itsdangerous, flask, Flask-BasicAuth, ConfigArgParse, pyzmq, psutil, locust能看出来flask为Locust提供了Web功能。

  快速上手

  使用Locust一般按照以下步骤进行:

  1.编写Python用户脚本。

  2.使用locust命令执行性能测试。

  3.(可选)通过Web界面监测结果。

  示例代码如下,新建locustfile.py文件:

  import time  
  from locust import HttpUser, task, between  
    
  class QuickstartUser(HttpUser):  
      wait_time = between(1, 2.5)  
    
      @task  
      def hello_world(self):  
          self.client.get("/hello")  
          self.client.get("/world")  
    
      @task(3)  
      def view_items(self):  
          for item_id in range(10):  
              self.client.get(f"/item id={item_id}", name="/item")  
              time.sleep(1)  
    
      def on_start(self):  
          self.client.post("/login", json={"username":"foo", "password":"bar"})

  路径切换到locustfile.py文件所在目录,执行命令:

  $ locust

  也可以通过-f指定某个目录文件:

  $ locust -f locust_files/my_locust_file.py

  运行后,打开http://127.0.0.1:8089看到Web界面:

1-4.png

  填写信息后,就能开始压测了。Web界面提供了结果统计数据:

1-5.png

  和性能指标走势图:

1-6.png

  脚本解析

  示例脚本解析如下:

  # Locust用户脚本就是Python模块  
  import time  
  from locust import HttpUser, task, between  
    
  # 类继承自HttpUser  
  class QuickstartUser(HttpUser):  
      # 每个模拟用户等待1~2.5秒  
      wait_time = between(1, 2.5)  
    
      # 被@task装饰的才会并发执行  
      @task  
      def hello_world(self):  
          # client属性是HttpSession实例,用来发送HTTP请求  
          self.client.get("/hello")  
          self.client.get("/world")  
    
      # 每个类只会有一个task被选中执行  
      # 3代表weight权重  
      # 权重越大越容易被选中执行  
      # view_items比hello_wolrd多3倍概率被选中执行  
      @task(3)  
      def view_items(self):  
          for item_id in range(10):  
              # name参数作用是把统计结果按同一名称进行分组  
              # 这里防止URL参数不同会产生10个不同记录不便于观察  
              # 把10个汇总成1个"/item"记录  
              self.client.get(f"/item id={item_id}", name="/item")  
              time.sleep(1)  
    
      # 每个模拟用户开始运行时都会执行  
      def on_start(self):  
          self.client.post("/login", json={"username":"foo", "password":"bar"})

  小结

  本文先了解了Locust的背景和生态,它是值得学习的,对于Python技术栈来说更加如此。接着介绍了使用pip命令安装Locust,其中发现顺带安装了flask,Locust的Web功能是flask提供的。


作者:开源前哨    

来源:http://www.51testing.com/html/15/n-4478015.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 读者提问:什么时候需要写测试日报,为什么要写测试日报,怎么写测试日报 ?阿常回答:什么时候需要写测试日报,为什么要写测试日报:1、刚入职场的测试新人,测试主管根据测试新人的工作表现(含测试日报),对新人做试用期转正考核;2、临近项目关键节点,需要给出测试交付物时,和项目组汇报当下测试进展,是否有遇到阻碍、项目是否有延期风险;3、测试进度受到阻碍,项目存在延期风险,需要及时和项目组反馈当前测试情况。怎么写测试日报:1、整体测试进度有无风险:进度正常无风险、低风险、中风险、高风险。2、列出所存在的风险及对应策略,需要谁提供帮助。3、所测试模块,用例执行 XX %,发现了 XX 个 BUG...
            0 0 2654
            分享
          • 读者提问:移动端 APP 测试,安卓手机和 iPhone 手机机型那么多,如何保证不漏测 ?阿常回答:可以采用云真机测试,选取 Top 机型。前面两天阿常和大家聊了 APP 的安装和更新测试,今天测试群内的小伙伴问到上面?的问题,阿常来和大家分享一下我的经验。市面上机型很多,基于成本考虑,公司不会采购大量的测试机,也不会因此配置更多的测试资源,而是采用云真机测试。云测试通常能将企业的软件和系统测试效率提高 50%,测试成本降低 30%。常见的云测试平台包括 Testin、TestBird、阿里云移动测试等等。拿阿里云移动测试来举例,它提供的测试服务包括兼容测试、功能测试、性能测试、远...
            0 0 1019
            分享
          • 在宣布关停“QQ花藤”不到10天后,8月29日,腾讯又宣布即将停止《冒险岛2》在中国大陆地区的运营。实际上不只是腾讯,最新一些互联网大厂均迎来了App下架潮。据Tech星球报道,据不完全统计,今年1月到8月,各互联网大厂总共有60多款App密集下架,其中腾讯最多,腾讯在今年已经宣布下架的产品(含游戏类)已接近40款,平均每月下架5款产品。截至今年7月,腾讯下架了《QQ堂》、《QQ连连看》、《QQ美女找茬》、《全民斩仙》、《捕鱼来了》等多达28款游戏。网易游戏在今年也陆续下架了《黑潮之上》、《猎手之王》、《月神的迷宫》等6款产品。字节跳动在今年也有多款游戏下架,比如《战争艺术》、《全明星激斗》、...
            0 0 1127
            分享
          • 介绍研究网站:花瓣网产品定位:一个给用户提供灵感、素材收集与分享的图片社交平台。用户需求:基本需求:搜索图片,采集图片。 期望需求:高质量图片,图片栏目归类,相关图片推荐,极简风格页面。 兴奋需求:商业高质量图片,社交功能,有奖设计活动。研究对象:8人,以年轻人为主要研究对象用户划分维度:具有样本多样性:性别;专业不同;专业性质(是否为专业人士,专业领域知识性高/低);使用频率(有没有使用过这个网站);使用该网站的经验。问题:6题(具有目的性,看得出信息架构或交互等方面的问题)测试时间:2019年第二学期15-16周测试目标:此测试目的是通过给用户制定任务,在用户执行任务的过程中,发现产品设计...
            1 1 2612
            分享
          •        从前是学经济贸易的,由于对测试行业的强烈兴趣,毕业后在北京新科海学校学习软件测试工程专业。工作不到一年的时间里,她已经从测试员升职到测试主管了。对于学习、工作,她积累了许多点点滴滴的经验,愿意与大家分享。       走入测试行业:兴趣、知识       说实话,我做测试工作的时间不是很长,学完软件测试工程师的课程后,到现在也就是一年多的时间吧,不过,我愿意自己学习和工作中积累起的这些点滴与大家分享。       我走入测...
            0 0 1400
            分享
      • 51testing软件测试圈微信