zoukankan      html  css  js  c++  java
  • 性能测试利器Locust框架解析

    本文章出自【码同学软件测试】

    码同学公众号:自动化软件测试,领取资料可加:Matongxue_8

    码同学抖音号:小码哥聊软件测试

     

    1 认识Locust

    说起性能测试工具,大家肯定想到的都是Jmeter,是的,由于其简单易用、功能强大,已经变成主流的压测工具之一。当需要实现一些高级功能的时候,可以使用Java语言对Jmeter进行扩展。

    但是很多小伙伴只会Python,不会Java,可不可使用Python语言来做性能测试呢?答案是肯定的,今我们就来介绍下基于Python的强大的性能测试框架Locust。

    Locust直译是“蝗虫”的意思,意在压测时产生的压力就像是漫天蝗虫一样,铺天盖地。Locust是用Python实现的开源性能测试框架,不同于其他压测工具基于进程/线程产生压力,Locust是完全基于事件,支持分布式,一个Locust节点可以在一个进程中轻松支持上千并发用户。从这一点来看,它的设计思路要远优于Jmeter、Loadrunner之类的工具。

    2 Locust环境搭建

    1、安装Python,建议使用Python3.6+

    2、安装Locust及其依赖:pip3 install -i https://pypi.douban.com/simple locust

    3、验证是否安装成功,执行命令:locust -V,如果能看到版本信息,即代表安装成功

    3 Locust脚本编写

    不同于Jmeter的界面化脚本配置,Locust的脚本需要完全写Python代码,虽然从一定程度提高了脚本编 写的门槛,但是对于熟悉Python的人来说还是比较简单的,况且自己写代码的话,脚本的灵活性更高。

    Locust脚本就是一个普通的Python文件,但是在脚本中必须先定义一个类,然后继承Locust提供的一个HttpUser类。在测试类里,将压测的请求封装到一个函数里,一个简单的Locust脚本就完成了。

    看个实际的例子,比如现在要测试这样一个接口

    URL:http://192.168.2.130:8080/pinter/login

    参数:userName=admin&password=1234

    在上面脚本中,login_test是自定义的测试函数,函数上添加了一个装饰器@task,标明此函数是需要

    Locust并发执行。在函数内调用了父类的client对象中post方法,发起了一次HTTP post请求。

    在MyTest类里,必须添加一个wait_time属性,此属性设置了循环调用login_test之间的等待时间,

    between(1,1)代表等待时间为1秒

     

    免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可加微信:Matongxue_8

     

     

    4 Locust脚本运行

    脚本写好后,需要在命令行上去运行Locust脚本,在cmd下(或者Mac的终端、Linux命令行),进入到脚本目录,执行命令

    然后在浏览器上访问URL:http://localhost:8089/,就可以打开Locust的压测控制页面

    5 Locust压测执行

    在Locust的压测控制页面打开后,就可以针对脚本做一些压测的配置了,比如并发数,压测持续时间,

    host等,其中:

    Number of total users to simulate:并发数,代表模拟了多少虚拟用户

    Hatch rate:每秒产生的用户数

    Host:目标服务器的ip或域名

    点击"Start swarming",即可开始压测,在web页面会上统计出实时的性能汇总数据

    字段解释

    TPS和响应时间曲线图

    好啦,关于Locust的入门,今天就介绍这么多啦,后续会继续介绍Locust的高级特性和详细功能,敬请期待!

     

    END

    免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频,可加:Matongxue_8/关注码同学公众号

    本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 相关阅读:
    LeetCode 252. Meeting Rooms
    LeetCode 161. One Edit Distance
    LeetCode 156. Binary Tree Upside Down
    LeetCode 173. Binary Search Tree Iterator
    LeetCode 285. Inorder Successor in BST
    LeetCode 305. Number of Islands II
    LeetCode 272. Closest Binary Search Tree Value II
    LeetCode 270. Closest Binary Search Tree Value
    LeetCode 329. Longest Increasing Path in a Matrix
    LintCode Subtree
  • 原文地址:https://www.cnblogs.com/testfan2019/p/15787031.html
Copyright © 2011-2022 走看看