自动化测试实战篇(8),jmeter并发测试登录接口,模拟从100到1000个用户同时登录测试服务器压力

news/2024/7/8 8:15:03

在这里插入图片描述

  • 首先进行使用jmeter进行并发测试之前就需要搞清楚线程和进程的区别
  • 还需要理解什么是并发、高并发、并行。
  • 还需要理解高并发中的
  • 以及老生常谈的,TCP三次握手协议和TCP四次握手协议
    • **TCP三次握手协议指:**
    • **TCP四次挥手协议:**
  • 进入Jmeter,新建一个线程组
  • 新建一个HTTP请求
  • 模拟用户同时登录,这里使用cms搭建的后台有需求可以自行搜索
  • 添加这三个监控器
  • 模拟线程数:100
  • 模拟线程数:200
  • 模拟线程数:400
  • 模拟线程数:800
  • 模拟线程数:1000
  • 总结

首先进行使用jmeter进行并发测试之前就需要搞清楚线程和进程的区别

进程是资源分配最小单位,线程是程序执行的最小单位;
每个进程内部会有N个线程,但至少要有1个线 程。
比如公司就是一个进程,公司的员工就是线程。
线程占用的资源要⽐进程少很多。
线程之间通信比进程更方便

还需要理解什么是并发、高并发、并行。

并发是指在一个时间段内有多个进程在执行
并行指的是在同一时刻有多个进程在同时执行
高并发是使用技术手段使系统可以并行处理很多请求

还需要理解高并发中的

响应时间(Response Time)
吞吐量(Throughput)
每秒查询率QPS(Query Per Second)
每秒事务处理量TPS(Transaction Per Second)
同时在线用户数量

以及老生常谈的,TCP三次握手协议和TCP四次握手协议

TCP三次握手协议指:

第一次握手:建立连接时,客户端发送syn包到服务器,并等待服务器确认
第二次握手:服务器收到syn包,同时自己也给客户端发送一个确认包syn+ack包
第三次握手:客户端收到服务器syn+ack包,向服务器发送一个确认包

包发送完毕后,客户端和服务器进入连接成功,完成三次握手,双方通信完毕,关闭连接时,进行第四次挥手

TCP四次挥手协议:

第一次挥手:客户端发送一个fin包,申请断开连接,并等待服务器确认。
第二次挥手:服务端回复一个ACK包,表示接收到客户端的关闭连接请求,但是现在服务端还是不能马上关闭,需要检查下是否还有未处理完成的数据
第三次挥手:服务端处理完所有数据,给客户端发送fin包,表示可以断开连接
第四次挥手:客户端回复ACK包,表示断开连接

进入Jmeter,新建一个线程组

在这里插入图片描述
在这里插入图片描述

线程数:表示模拟的用户数量我们本次从100到1000,每次压测+100

Ramp-up就是每个线程的执行时间间隔,0表示并发

循环次数表示循环多少次,如果点击永远就是一直循环下次

调度器表示开始时间和持续时间以及启动延迟的时间

新建一个HTTP请求

在这里插入图片描述

模拟用户同时登录,这里使用cms搭建的后台有需求可以自行搜索

在这里插入图片描述
因为需要模拟同时登录,所以就要在请求体里面加入相应的信息进去
在这里插入图片描述

添加这三个监控器

在这里插入图片描述
再添加一个常数吞吐量定时器
在这里插入图片描述

模拟线程数:100

在这里插入图片描述
在这里插入图片描述

模拟线程数:200

在这里插入图片描述
在这里插入图片描述

模拟线程数:400

在这里插入图片描述
在这里插入图片描述

模拟线程数:800

在这里插入图片描述
在这里插入图片描述

模拟线程数:1000

在这里插入图片描述
在这里插入图片描述

总结

可以看到在100的时候服务器还算是比较稳定,200时也是较为平稳,到400时就开始有些走势不稳,到800时已经开始出现走势乱的情况,到1000时就出现不少的数据异常以及偏离值严重。可以根据项目情况去不断增加压力进行测试
在这里插入图片描述


http://lihuaxi.xjx100.cn/news/957603.html

相关文章

Qt 防止程序退出

文章目录摘要QWidgetQML方法 1方法 2关键字: Qt、 eventFilter、 Close、 键盘、 任务管理器摘要 今天要聊得内容还是怎么防止别人关闭我的程序,之前都是在win下面,一般都是用过钩子连捕获键盘事件,完了吧对应的事件忽略&#x…

Flutter Button 实例

大家好,我是 17。 在上篇文章 使用 Flutter Button 介绍了如何修改 button 的样式,本文来具体实践一下。 本文列举一些常用的 button 效果,以便在用到的时候方便使用。因为 ElevatedButton 最常用,所以大多以 ElevatedButton 举…

干货 | 提升前端工程化,携程 Design2Code 从零到一的实践

作者简介by,携程高级研发经理,专注低代码平台搭建和前端智能化技术。Jialu,携程研发总监,专注大前端技术和工程化的研究与发展。一、 背景在软件开发过程中,团队协作效率的提高是我们共同关注的问题。为了解决这一问题…

Java多线程(二)——同步

这一节主要是继上次提到的线程同步三大方法:同步代码块、同步方法、Lock锁。同步代码块,把出现线程安全问题的核心代码给上锁。还是继上次的例子,对代码块加上synchronized ("getMoney") {}之后就不会出现线程安全问题了&#xff1…

元数据的类型

元数据通常分为三种类型:业务元数据、技术元数据和操作元数据。这些类别使人们能够理解属于元数据总体框架下的信息范围,以及元数据的产生过程。也就是说,这些类别也可能导致混淆,特别是当人们对一组元数据属于哪个类别或应该由谁…

Linux 进程:exit和_exit的辨析

目录1.接口与函数2.缓冲区3.exit 与 _exit(1)_exit(2)exit这里来认识exit函数和 _exit接口 ,它们的作用是类似的,都是在调用后退出程序,可以在程序的任何地方调用。 1.接口与函数 exit函数和_exit接口,一个函数,一个…

IP协议的漏洞及防护措施

文章目录一、TCP/IP协议族二、IP协议三、IP协议的安全问题及防护措施一、TCP/IP协议族 二、IP协议 网际协议(Internet Protocol,IP)是TCP/IP协议族的核心,也是网际层最重要的协议。 IP数据报由首部和数据两部分组成&#xff1b…

Spring Boot2中如何优雅地个性化定制Jackson

概述 本文的编写初衷,是想了解一下Spring Boot2中,具体是怎么序列化和反序列化JSR 310日期时间体系的,Spring MVC应用场景有如下两个: 使用RequestBody来获取JSON参数并封装成实体对象;使用ResponseBody来把返回给前…