【JMeter】---HTTP压测

597 篇文章 17 订阅
35 篇文章 2 订阅

一、创建线程组

右击–>添加–>Threads(Users)–>线程组

在这里插入图片描述下面对比较重要的几个参数,讲解下:

名称: 就是给你这个线程组起名字。

线程数:指压力测试时候模拟几个用户测试接口。

Ramp-Up:这里指几秒运行完上面的模拟用户数。

循环次数:指循环几次线程数。

总的理解下:上面的意思是2秒内模拟5个用户请求API,循环2次。

二、添加HTTP

在线程组上右击–>添加–>Sampler–>HTTP请求
在这里插入图片描述

@RequestMapping(value = "users", method = RequestMethod.GET)  
    public @ResponseBody Object users() {
        List<String> userList = new ArrayList<>();
        userList.add("张三");
        userList.add("李四");
        userList.add("王五");
        System.out.println("获取用户接口......");
        return userList;
    }

三、查看结果树

在线程组上右击–>添加–>监听器–>察看结果树

在这里插入图片描述 运行JMter查看结果:
在这里插入图片描述 通过测试可以发现,已经向users接口请求10次,10次都成功,也都有返回数据。

四、响应断言

响应断言: 断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。

增加断言: 在线程组上右击–> 添加–> 断言 --> 响应断言

在这里插入图片描述
apply to(应用范围):

Main sample only: 仅当前父取样器 进行断言,一般一个请求,如果发一个请求会触发多个,则就有sub sample(比较少用)

常用响应字段:

    响应文本:即响应的数据,比如json等文本

    响应代码:http的响应状态码,比如200,302,404这些

    响应信息:http响应代码对应的响应信息,例如:OK, Found

    Response Header: 响应头

模式匹配规则:

   包括:包含在里面就成功

equals:完全匹配,区分大小写

再次运行JMeter,查看结果:

在这里插入图片描述发现http请求报错,因为返回数据不包含断言中所设定的数据。(一般调试阶段可以设置断言,但真实压力测试情况下建议不要开启断言和查看结果树,因为会因为性能问题,使测试结果不十分准确)

五、聚合报告

线程组右击–>添加->监听器->聚合报告(Aggregate Report)
在这里插入图片描述 lable: sampler的名称

  Samples: 一共发出去多少请求,例如5个用户,循环2次,则是 10

  Average: 平均响应时间

    Median: 中位数,也就是 50% 用户的响应时间

90% Line : 90% 用户的响应不会超过该时间 (90%的样本不超过这个时间。 剩下的样本至少与此一样长)

95% Line : 95% 用户的响应不会超过该时间

99% Line : 99% 用户的响应不会超过该时间

         min : 最小响应时间

        max : 最大响应时间

    Error%:错误的请求的数量/请求的总数

Throughput: 吞吐量——默认情况下表示每秒完成的请求数(Request per Second) 可类比为qps

KB/Sec: 每秒接收数据量

六、自定义变量

为什么使用:很多变量在全局中都有使用,或者测试数据更改,可以在一处定义,四处使用比如服务器地址你如果每一个里面都手动输入127.0.0.1,那万一那天服务器地址变了,总不能在一个一个改服务器地址
吧,那么这里我们可以写在全局配置文件中。

线程组->add -> Config Element(配置原件)-> User Definde Variable(用户定义的变量)

在这里插入图片描述上面配置了两个全局变量:

引用方式${XXX},在接口中变量中使用:
在这里插入图片描述

七、CSV可变参数压测

作用:你在API接口传入参数的时候,不可能100次请求都传一样的参数,为了更真是的模拟用户,所传的参数当然也是随机的,这样才更真实。

线程组右击–>add -> Config Element(配置原件)–> CSV data set config (CSV数据文件设置)

在这里插入图片描述比较关键的参数:

   文件名:就是你引用的文件地址(因为大量的数据都会写在外部文件中)

变量名称:如果有多个用逗号隔开

    分隔符:csv默认用逗号,如果是txt文件这个需要设置符号

1、user.csv文件
在这里插入图片描述
2、HTTP请求
在这里插入图片描述3、API接口

@RequestMapping(value = "login", method = RequestMethod.POST)  
    public @ResponseBody Object login(String name, String pwd) {
        
         List<String> userList = new ArrayList<>();
            userList.add(name);
            userList.add(pwd);
            userList.add(name.length()+"");
            //输出客户端传来的值
            System.out.println("name:"+name+"----pwd:"+pwd);
            return userList;
    }

测试运行(看控制台)
在这里插入图片描述
希望本文对你有所帮助~~如果对接口测试、自动化测试、面试经验交流感兴趣可以加入我们。642830685,免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值