全网最细,性能测试-接口压测 Locust固件实战,从0到1进阶...

21 篇文章 0 订阅
1 篇文章 0 订阅


前言

python如何进行性能测试呢?

其实原理就是对于接口进行加线程,打个比方就是当你有一个电梯,你同时可以搭载多少个人坐电梯那这个人数就是这部电梯的其中一个性能指标,那么对于接口来说每秒钟能有多少人成功发起请求后得到成功的响应就是性能测试的一个指标

21

我们在做性能测试主要去看的就是以上四点:错误率,响应时间,tps和rps

当我们使用Python去构建自动化测试框架时,我们用Locust来对接口进行压测,具体写法如下:

首先我们需要在cmd中安装locust,命令:pip install locust

22

安装好后我们可以通过命令:locust --version查看其安装的版本

23

接下来我们看代码中具体如何实现对于locust的使用:

from locust import HttpUserfrom locust import task
import os
#我们在做接口自动化测试时,使用的是request对接口发起请求,在这里我们用的是locust中的httpuser对接口进行发起请求
class Opms(HttpUser):
    def on_start(self):
        print("我是一个用户,我启动了")

    def on_stop(self):
        print("我是一个用户,我退出了")
#定义好的接口必须使用task装饰器使其成为一个需要执行的任务,否则的话即使启动了locust也不会将定义好的函数作为一个需要执行的任务
    @task
    def login(self):
        url = "/login"
        with self.client.get(url=url, name="获取登录页", catch_response=True) as res:#下面断言,当我们返回的text中有项目管理则登录成功,反之失败
            if "项目管理" in res.text:
                res.success()
            else:
                res.failure("自定义失败:获取主页失败")

    @task
    def postLogin(self):
        url = "/login"
        data = {
            "username": "libai",
            "password": "opms123456"
        }
        with self.client.post(url, data=data, name="登录", catch_response=True) as res:
            if res.json()["code"] == 1:
                res.success()
            else:
                res.failure("自定义失败:登陆失败")

if __name__ == '__main__':
    os.system("locust -f loginLocust.py --web-host=127.0.0.1")

右键启动,或者直接在终端使用命令。

locust -f loginLocust.py --web-host=127.0.0.1

成功启动后我们会在终端看到如图所示:

24

复制url到浏览器打开网页

25

我们成功启动了locust其中第一行Number of users 是用户数(线程数),Spawn rate(几秒内集合),Host(根URL)。

我们输入50人 在2秒内尝试压测一下登录接口和登录页面

26

启动压测中,这时候我们等待一段时间,当50个线程组全部加压上去后过段时间我们看一下其性能表现,注意一定要等一段时间,因为在一开始线程组没上去时产生的数据并没啥用。

27

关注其中几个重要的指标,Fails,90%ile,99%ile,以及RPS,通过分析,我们在压测的过程中,产生的错误数<5%只有1%说明错误数是在可控制范围内。

再看响应速度,90%的人是2秒和1.3秒,99%的人是4.6秒和3.1秒,其实如果超过3秒已经有点慢了,但是也不是不可以接受,RPS是55.2。

这个数据还可以接受说明远没有到性能瓶颈,接下来我们可以继续加大线程数继续压测。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

不畏艰难险阻,逆风扬帆追梦;坚守初心使命,百炼成钢铸辉煌。积极进取,超越自我,勇往直前,绽放光芒。脚踏实地,不止步,奋斗成就人生辉煌。

困境是磨砺意志的试金石,挫折是铸就成功的催化剂。不怕跌倒,只求起舞;拥抱挑战,追逐梦想;坚持不懈,奋发拼搏,终将征服世界,书写辉煌传奇。

每一次努力都是一种积累,每一步坚持都是一种成长。不论风雨与否,心怀梦想,勇往直前,奋力拼搏,终将绽放属于自己的辉煌光芒。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值