Jmeter——性能测试的认知以及思考bug(一)
迪丽瓦拉
2025-05-29 03:56:16
0

前言

性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据。

测试流程:

  1. 需求分析→环境搭建→测试计划→脚本开发→执行与监控→缺陷管理→结果与报告
    压力测试
  • 1、线程组设置,这里的线程数与同步定时器的用户数量一样
  • 2、添加HTTP cookie管理器
  • 3、默认请求值
  • 4、添加一个事务控制器,可以当作一个业务
  • 5、在事务控制器下添加,同步定时器
  • 设置用户数量,这里与线程组的线程数一样,超时时间可设置
  • 6、添加脚本(http请求)
  • 7、添加查看结果树
  • 8、添加->监听器
  • 9、在最后添加一个聚合报告,添加处:添加->监听器
  1. 负载测试实战
  • 1、线程组的设置50个用户(持续时间:按秒计算,这里300=60*5,意思就是运行时长为5分钟)
  • 2、添加HTTP cookie管理器
  • 3、默认请求值
  • 4、添加一个事务控制器,可以当作一个业务
  • 5、在事务控制器下添加,高斯随机定时器
  • 总的延时 = 固定延迟时间 + 高斯随机生成的偏差值(说明:单位都是毫秒,固定延迟300ms,偏差100ms,意思是时间延迟300-400ms之间)
  • 6、添加脚本(http请求)
  • 7、添加->监听器
  • 8、在最后添加一个聚合报告,添加处:添加->监听器

第一章 Bug引发的又一次思考

1. 打开一个页面非常慢是Bug吗

  1. 打开一个页面非常慢是Bug吗
  • 可能是,原因:网络慢、客户端运算能力不足、资源大到现有的网络无法承载、服务端资源响应时间过长。
  1. 页面打开慢的影响是什么?
  • 用户体验不好,从而导致用户流失
  • 用户流失会导致项目失败
  • 项目失败可能会导致公司破产

2. 页面响应耗时可以提前预知吗?

  1. 在测试阶段是否能够发现页面响应慢

    当然可以

  2. 如何在测试阶段发现页面响应慢?

  • 模拟大量用户访问
  • 监控每个请求的响应是否准确
  • 监控服务器的资源使用

第2章 性能测试认知

1. 企业级软件为什么要做性能测试

  1. 历史上由于性能问题引发的事件
  • 12306网站崩溃,用户购票失败
  • 淘宝双十一网站崩溃
  1. 网站崩溃或慢对用户的影响
  • 离开
  1. 企业为什么要做性能测试?
  • 提升用户体验
  1. 细化性能测试的目的
  • 预估软件性能瓶顶,预估软件优化时间
  • 验证是否存在多并发的逻辑问题

2. 什么是性能测试?

1675939885447.png

  • 性能是用来描述产品除功能外的所具有的速度,效率和能力的综合能力评价

  • 对产品或是物品的性能惊喜定性或是定量的量测过程

  • 在这个过程中我们使用一些工具来进行场景的模拟,从而进行性能测试

3. 性能测试案例

  1. 测试需求:测试20个用户访问网站在负载达到30QPS时的平均响应时间
  2. QPS:Query Per Second 每秒查询率。(一台查询服务器每秒能够处理的查询次数,作为域名服务器的性能经常用每秒查询率来衡量)
  3. 测试步骤
  • 1、添加线程组(线程数+准备时长+循环次数)
  • 1.1、线程数:虚拟用户数,一个虚拟用户占用一个进程或线程(设置多少个虚拟用户=设置多少个线程)
  • 1.2、准备时长(s):设置的虚拟用户数需要多长时间全部启动。eg:线程数为20,准备时长为10,则说明需要10秒钟启动20个进程。
  • 1.3、循环次数:每个线程发送请求的次数。eg:线程数为20,循环次数为5,那么每个线程发送5次请求,总请求数为20*5=100

image.png

  • 2、添加HTTP请求

image.png

image.png

  • 3、设置QPS限制:控制给定的取样器发送请求的吞吐量

image.png

image.png

  • 4、添加监视器-聚合报告、察看结果树

image.png

image.png

image.png

  • 5、运行脚本

image.png

  • 6、聚合报告解析(响应时间单位:毫秒)
  • 1)Label:每个Jmeter的element都有一个Name属性,这里显示的就是Name属性的值
  • 2)#Sample:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
  • 3)Average:平均响应时间-默认情况下是单个Request的平均响应时间当使用了Transaction Controller 时,也可以以Transaction为单位显示平均响应时间
  • 4)Median:中位数,50%用户的响应时间
  • 5)90%Line:90%用户响应时间
  • 6)Min:最小响应时间
  • 7)Max:最大响应时间
  • 8)Error%:本次测试中出现错误的请求的数量/请求的总数
  • 9)Throughput:吞吐量-默认情况下白石每秒的请求数
  • 10)KB/sec:每秒从服务器端接收到的数据量

image.png

image.png

4. 性能测试的分类

  1. 性能测试的分类
  • 压力测试、负载测试、并发测试、稳定性测试
  1. 什么是压力测试?
  • 压力测试也叫强度测试,它是指逐步给系统增加压力,测试系统的性能变化,使系统某些资源达到饱和或系统崩溃的边缘,从而确定系统所能承受的最大压力
  • 举个例子:百米赛跑,逐步增加你的负重,直到你完不成百米的程度,也就是崩溃的边缘你所能承受的最大负重
  1. 什么是负载测试?
  • 被测试系统正常服务的前提下,系统所能承担的最大服务负荷数量(即最大并发数量),最终分析出系统性能的瓶颈
  • 举个例子:百米赛跑,设置必须15秒完成,负重奔跑(不断增加负重)
  1. 压力测试和负载测试的区别
  • 压力测试要测试出系统即将崩溃时,能够承受的最大并发数
  • 负载测试是满足系统指标要求的情况下,能够承受的最大并发数
  1. 什么是并发测试
  • 举个例子:商场卖货,售后员根据库存表单记录表卖货
  • 仓库管理员应该在出货时同时更新库存表单记录表,但由于用户过多,表单记录更新不及时
  • 导致仓库已经没有货了,但是售货员看到库存表单记录表中还显示有库存,仍然在卖货,但已经发不出去货了

5. 性能测试场景剖析

  • 电商秒杀、学习系统考试、12306抢票、新闻热点事件、
    网络游戏运营、视频网站播放

6. 必知必会的性能测试指标

  • 并发用户量:同一单位时间进行同一操作的用户数量
  • 吞吐量:单位时间内系统成功传输的数据量,单位通常是MB、GB
  • 吞吐率:又叫Throughput,单位时间内系统成功处理的请求数量,通常单位为(请求数量/每秒、req/s)

7. 性能测试基本流程

  1. 标准性能测试流程
    1675943449153.png

8. 简述 性能测试流程?

1.分析性能需求。挑选用户使用最频繁的场景来测试,比如:登陆,搜索,下单等等。确定性能指标,比如:事务通过率为100%,TOP99%是5秒,最大并发用户为1000人,CPU和内存的使用率在70%以下

2.制定性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具

3.编写测试用例

4.搭建测试环境,准备好测试数据

5.编写性能测试脚本

6.性能测试脚本调优。设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本

7.设计测试场景,运行测试脚本,监控服务器,

8.分析测试结果,收集相关的日志提单给开发

9.回归性能测试

10.编写测试报告

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...