JMeter之HTTP压测详解

news2024/10/6 10:29:40

一、创建线程组

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

下面对比较重要的几个参数,讲解下:

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

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

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

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

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

同时,在这我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺,免费领取

软件测试视频教程观看处:

京东内部员工自动化测试培训课程!盲目自学真的会毁终生,27天学完,能救一个是一个...

二、添加HTTP

在线程组上右击-->添加-->Sampler-->HTTP请求

在java代码中添加API接口

@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;
    }

 测试运行(看java控制台)

八、写在最后

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1217569.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows环境VSCode配置OpenCV-项目配置(二)

修改c_cpp_properties.json {"configurations": [{"name": "windows-gcc-x64","includePath": ["${workspaceFolder}/**","D:/mingw64/mingw64/include","D:/openCV_win/build/install/include","…

【linux】htop 命令行工具使用

htop是一个跨平台的交互式流程查看器。 htop允许垂直和水平滚动进程列表&#xff0c;以查看它们的完整命令行和相关信息&#xff0c;如内存和CPU消耗。还显示了系统范围的信息&#xff0c;如负载平均值或交换使用情况。 显示的信息可以通过图形设置进行配置&#xff0c;并且可…

Python与ArcGIS系列(八)通过python执行地理处理工具

目录 0 简述1 脚本执行地理处理工具2 在地理处理工具间建立联系0 简述 arcgis包含数百种可以通过python脚本执行的地理处理工具,这样就通过python可以处理复杂的工作和批处理。本篇将介绍如何利用arcpy实现执行地理处理工具以及在地理处理工具间建立联系。 1 脚本执行地理处理…

python接口自动化-参数关联

前言 我们用自动化发帖之后&#xff0c;要想接着对这篇帖子操作&#xff0c;那就需要用参数关联了&#xff0c;发帖之后会有一个帖子的id&#xff0c;获取到这个id&#xff0c;继续操作传这个帖子id就可以了 &#xff08;博客园的登录机制已经变了&#xff0c;不能用账号和密…

C语言加密字符(ZZULIOJ1064:加密字符)

题目描述 从键盘输入一批字符&#xff0c;以结束&#xff0c;按要求加密并输出。 输入&#xff1a;从键盘输入一批字符&#xff0c;占一行&#xff0c;以结束。 输出&#xff1a;输出占一行 加密规则: 1&#xff09;所有字母均转换为小写。 2&#xff09;若是字母a到y&#xff…

最新版仿东郊到家小程序源码 上门服务小程序源码

最新版仿东郊到家小程序源码 上门服务小程序源码 1、数据概况&#xff08;新增业务城市用户投票功能&#xff0c;更加直观的查看业务城市的关注度、人气和影响力,促进业务开展&#xff09; 2、数据概况 &#xff08;增加可视化数据大盘&#xff0c;代理商端可查看自己下面的技…

虚幻C++ day5

角色状态的常见机制 创建角色状态设置到UI上 在MainPlayer.h中新建血量&#xff0c;最大血量&#xff0c;耐力&#xff0c;最大耐力&#xff0c;金币变量&#xff0c;作为角色的状态 //主角状态UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category "Playe Stats&…

【Gitpod】云部署Stable Diffusion并且可以本地访问

文章目录 前言项目部署 项目启动参考文献 前言 本文介绍如何使用 Gitpod 部署 Stable Diffusion web UI。Gitpod 是一个基于云的开发环境&#xff0c;通过与 GitHub 集成&#xff0c;可以在浏览器中轻松进行代码开发和部署&#xff1b;Stable Diffusion 是 GitHub 上面的开源 …

2023 OPPO开发者大会正式开幕,ColorOS 14亮相,手机流畅进入「最后一公里」比拼

2023年11月16日,OPPO开发者大会正式开幕,万众期待的ColorOS 14正式发布,并且已经确定,将由OPPO Reno11系列首发。 本次的ColorOS 14将OPPO之前布局的AndesGPT、潘塔纳尔自研系统、超算平台三大技术全面整合,带来全新智慧新体验。智慧互融,化繁为简;软硬芯协同,设备流畅度全面进…

SDL音视频渲染

01-SDL简介 官网&#xff1a;https://www.libsdl.org/ 文档&#xff1a;http://wiki.libsdl.org/Introduction SDL&#xff08;Simple DirectMedia Layer&#xff09;是一套开放源代码的跨平台多媒体开发库&#xff0c;使用C语言写成。SDL提供了数种控制图像、声音、输出入的函…

数字化转型的“支点”是什么?

​当前&#xff0c;数字化转型在推动各行各业降本增效的过程中扮演着越来越重要的角色&#xff0c;数字化转型不仅可以提高企业的生产效率和降低企业生产经营成本&#xff0c;也成为了推动经济发展的新引擎。对于企业而言&#xff0c;想要成功推动企业数字化转型&#xff0c;不…

【路径穿越】vulfocus/apache-cve_2021_41773

1.1漏洞描述 漏洞编号cve_2021_41773漏洞类型路径穿越漏洞等级高危漏洞环境vulfocus攻击方式 1.2漏洞等级 高危 1.3影响版本 Apache HTTP Server 2.4.49、2.4.50 1.4漏洞复现 1.4.1.基础环境 靶场VULFOCUS工具BurpSuite 1.4.2.前提 1.5深度利用 1.5.1漏洞点 利用网上爆出…

干货分享!各大跨境电商平台入驻指南及跨境电商实用工具推荐!

当跨境电商成为一个所有人都耳熟能详的名词&#xff0c;各类跨境电商平台和软件都一拥而上&#xff0c;跨境电商平台和工具千千万&#xff0c;那么很多人就在问了&#xff0c;该怎么入驻这些电商平台呢&#xff1f;又该选择什么样的跨境电商软件呢&#xff1f;今天这期干货分享…

event事件分发器||静态类型转换

由于类型不一样在event事件分发器中要进行静态类型转换&#xff0c;将基类转换为派生类进行处理 对event事件分发器拦截后最后要将其他函数交给父类处理&#xff0c;否则不会运行

Confluence的安装部署

先介绍一下confluence Confluence是一个专业的企业知识管理与协同软件&#xff0c;也可以用于构建企业wiki。使用简单&#xff0c;但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论&#xff0c;信息推送。 confluence是Atlassian公司的&#x…

Mysql分组查询每组最新的一条数据

在工作中遇到一个问题&#xff0c;需要查出每个公司最新的那条数据。 所以需根据公司进行分组&#xff1a; 未进行分组时&#xff1a; select a.id, b.name companyName, result_asset ,result_liability ,result_net_asset, a.create_time ,a.is_deleted from bus_proper…

【Git操作】Author identity unknown Please tell me who you are

前言 这错误主要是在上传到Gitee的时候&#xff0c;我们没有设置用户名和和邮箱&#xff0c;原因有很多&#xff0c;更换设备&#xff0c;或者第一次提交的时候都会遇到这个问题&#xff0c;我们只需要在终端简单的输入两行指令就可以解决。 git config --global user.email &q…

都有哪些大厂有自己的Web组件库?

有TDesign、ArcoDesign、AntDesign、随着Materialdesign等优秀web组件库的发布&#xff0c;设计师可能会觉得大厂之间的web组件库差别不大。其实大厂的产品线很多&#xff0c;业务复杂。设计系统是对以往项目经验的深刻沉淀&#xff0c;可以支撑业务逻辑&#xff0c;保证设计系…

个人简历管理系统winform

说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于C#winform架构和sql server数据库 功能模块&#xff1a; 个人简历管理系统 简历信息添加 修改 删除 查询简历 运行环境&#xff1a; 运行需vs2013或者以上版本&#xff0…

关于新能源汽车的英语翻译

近年来&#xff0c;随着全球对环保和可持续发展的重视&#xff0c;新能源汽车已经成为汽车产业的重要发展方向。各国政府和企业都在加大投入&#xff0c;推动新能源汽车的技术研发和产业化发展&#xff0c;进而促进了新能源汽车翻译的需求不断提升 。那么&#xff0c;关于新能源…