zoukankan      html  css  js  c++  java
  • Locust 接口性能测试

    转载大佬   ,。。

    另外一篇:https://www.cnblogs.com/imyalost/p/9758189.html
    记录一下接口性能测试的学习

    先熟悉一下概念:

    Locust是使用Python开发的支持分布式的一款开源压力测试工具,Locust在测试时,会产生大量的用户对系统进行访问,每个用户的行为是通过Python代码控制的,并且整个测试过程可以在Web的UI界面实时观察测试数据。 

    Locust在单台机器上能够支持几千并发用户访问,Locust内部采用了协程gevent,通过采用分布式的方式,理论上Locust工具能够模拟无数的用户。

     

    1.安装locust:直接$ pip install locustio 即可

     

     

    安装的过程中会安装其他一些依赖的库,不要慌张,安装结束如上图,查看是否安装可以用 locust -h 来验证,当现实各种命令就是安装成功了!

     

    2.安装完成后开始来写一个性能测试脚本

     

     

    解释一下:baiduy_page()方法表示一个用户行为,使用@task修饰该方法是一个事务,client.get()用于指定请求路径,因为是百度首页所以用‘/’指定为根路径

    websiteuser类用于设置性能测试

    task_set :定义一个用户行为类

    min_wait :执行事务之间用户等待时间的下界(ms)

    max_wait: 用户等待时间的上界

    下面来启动性能测试:

     

     

    -f :指定性能测试脚本文件

    --host :指定被测试应用的url地址,注意,访问百度使用的是https协议

    然后通过该浏览器访问 http://127.0.0.1:8089   locust默认使用8089端口

    如图所示:

     

     

    啊啊啊啊,报错啊,没解决呢,愁死了!默认是8089端口,我改成别的端口还是不行!下班吧!回家思考一下!

     

    3.昨天下班没解决的问题今早搞定啦,不知什么原因,地址输入localhost:8089端口就可以了,有时候就是这么简单:如下图:

     

     

    number of user to simulate:设置模拟的用户数

    hatch rate :每秒产生的虚拟用户数

    输入用户数100,每秒产生10

     

     

    下面作解释一下:

    type: 请求类型

    name: 请求路径,这里是百度首页,https://www.baidu.com

    requests: 当前请求的数量

    fails:当前请求失败的数量

    median: 中间值,单位毫秒 一半的服务器响应时间低于该值,另一半高于该值

    average: 平均值,单位ms 所有请求的平均响应时间

    min: 请求服务器最小响应时间 ms

    content size : 单个请求的大小,单位字节

    reqs/sec: 每秒钟请求的个数

     

    总结:由于这是百度首页的测试,性能需求不明,服务器配置未知,没有分析的必要!

     

    下面拿自己公司的后台管理系统作一个简单的性能测试:

     

     

    这是脚本内容

    所有的操作都要先登录,所以先写一个on_start方法定义了每个用户开始做的第一件事

    @task方法装饰的是一个事务

     

     

    下面启动执行:

     

     

    此时打开localhost:8089 查看:

     

     

    这就是我司的后台的测试结果:

    进入charts查看折线图:

     

     

    然后我又把用户数设置为1000,每秒启动20,但是,但是,,此时,我司的后台管理系统就挂掉了,我了割草啊,吓死我了。吓得我赶紧关掉locust,尼玛,吓了我一身冷汗!哎

    由此可以看出我司的后台管理系统还是比较渣渣的哈!

    php写的,不过这件事只有我自己知道,哈哈哈!好了,这次的练习就到此为止吧!有机会再继续学习locust!

    讲解到这里小伙伴应该都会用了;locust做简单的性能测试了啊,有不明白的可以加群,一起学习!

     

    最后附上一个大牛写的关于locust的东西,值得深入学习,有机会仔细阅读!

     

    以下部分为2018年8月9日更新!

    由于我司下期项目要新增一个直播的模块,直播嘛想想就只到要做压力测试啦,所以今天把locust有稍微研究了下(半天时间),因为手上有项目不能耽误太久时间!

    今天我要做的就是课程的详情页。就是模拟多人并发请求这个课程的详情页,也就相当于同时多个人进入这个课程.

     

     

    当一切准备就绪时开始执行locust -f locustfile2.py --host=xxx 后一直给我报错,说找不到一个叫common的模块。我一想不对呀,怎么会找不到呢,因为我在locust文件中导入我的公共模块都是正常的啊,为什么执行报错呢?百思不得解!

    最后在一边文章中看出了一些端倪:https://www.jianshu.com/p/ec210fd6ca4b

     


    所以我特地根据这个改了一下我的项目结构(真够奇葩的)

     

     

    把locust文件和要导入用到的文件圈放在根目录,然后执行命令

     

     

    居然这就成功了,我也是醉了,对于这块我觉得可能是locust对于文件层级目录还是有要求的!还需要好好研究!

    还有一种方法就是这种结构:

     

     

    下次尝试吧!!
    ————————————————
    版权声明:本文为CSDN博主「xgh1951」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/xgh1951/article/details/80511365

  • 相关阅读:
    POJ 1386 Play on Words(单词建图+欧拉通(回)路路判断)
    HTTP协议详解??
    Python 中三大框架各自的应用场景??
    django 开发中数据库做过什么优化??
    谈一下你对 uWSGI 和 nginx 的理解??
    django 中间件的使用??
    Flask 中请求钩子的理解和应用?
    七层模型? IP ,TCP/UDP ,HTTP ,RTSP ,FTP 分别在哪层?
    说说 HTTP 和 HTTPS 区别??
    hasattr() getattr() setattr() 函数使用详解??
  • 原文地址:https://www.cnblogs.com/beile/p/11959384.html
Copyright © 2011-2022 走看看