【学习笔记】性能测试——Jmenter的使用入门(自用)

2023-11-13

一 、 性能理论

  1. 性能测试理论

    1. 什么是性能测试
      1. 初始
        1. 服务器崩溃,宕机
        2. 客户机性能
      • 概念: 利用脚本或者工具对于被测系统进行一定的负载测试,观察性能指标是否满足用户需求、得到相关性能指标,并优化
      • 性能测试的目的 : 不是完全为了找bug。是为了验证系统的性能是否满足用户的需求或者做出系统的性能瓶颈、性能指标。
      • 测试手段:主要使用工具
        • JMeter:基于线程
        • loadrunner 基于线程
        • locust :基于协程 python的第三方库,用于压力测试
      1. 被测对象
        1. 代码: 代码+多线程
          1. web协议请求:代码、工具+多线程
        2. app c\s:
          1. 服务器:代码 工具+多线程
          2. 客户端:工具
      2. 核心技术

        1. 多线程|进程|协程 - 模拟多用户(负载)
        2. 尽可能模拟用户的真实场景
          1. 访问系统
          2. 前端相关静态 出资源
          3. 等待时间
        3. 基于协议
          • HTTP HTTPS WEBSOCKET
          • python :requers库
  2. 为什么做性能测试

    1. 稳定性\可靠性
    2. 查找bug
    3. 可用性:是否满足用户需求,达到客户体验
    4. 承载压力多大、负载能达到
    5. 大压力情况下,成功率、错误率是否达到要求
    6. 相应时间
    7. 并发用户数
      1. 节约资源开销
        • 服务器资源 ——通过性能测试去验证服务器资源是否满足需求
  3. 分类

    1. 负载测试
      1. 概念:一定的软硬件、网络环境下,向系统改变负载方式、增加负载观察系统的性能指标,是否存在性能瓶颈
      2. 目的:得到最佳用户数、最大用户数
      3. 场景:功拱形场景
      4. 指标计算
    2. 压力测试
      1. 概念:在一定的软件硬件和环境下,向被测系统添加大量的负载(最佳用户数、最大用户数)进行长时间的观察性 能指标,得到性能瓶颈
      2. 目的:找到性能瓶颈
      3. 场景:门形场景
    3. 容量测试
      1. 概念:在一定的负载和网络环境下,向被测系统的储存设备构造大量的不同的数据,添加一定的负载进行长时间的运行,观察性能指标
      2. 目的:得到存储设备的容积
      3. 场景
    4. 并发测试
      1. 概念:在一定的软件硬件及网络环境下,向被测系统某个功能模块一次性添加大量的负载,并长时间运行,观察系统的性能指标
      2. 目的:慢sql,线程锁,锁表
      3. 集合点:
    5. 基准测试
      1. 概念:在一定的软件硬件及网络环境下,向被测系统添加单个或多个负载进行性能测试,验证性能测试环境、性能测试脚本是否存在问题
      2. 目的:验证性能测试环境、性能测试脚本,得到基础数据
    6. 稳定性测试
      1. 概念:在一定的软件硬件及网络环境下,向被测物体系统添加一定时间的负载并模拟用户真实操作时间(2x24\ 7x24)运行,观察系统性能指标
      2. 目的:稳定性(尽可能模拟真实用户真实场景:环境,环境、长时间)慢sql,内存溢出、宕机
    7. 配置测试
      1. 概念:在一定的负载下,通过调整软件、硬件环境让被测系统性能指标最优,得出被测系统软件、硬件配置最佳
      2. 目的 :得出被测系统软件、硬件最佳配置
        1. 软件:Tomcat\tedis\mysql
        2. 硬件:服务器
  4. 怎么做性能测试

    1. 关注点
      1. 是否满足用户性能需求
      2. 性能指标
      3. 最佳用户数和最大业务量
      4. 慢sql
      5. 系统内存、线程的合理回收、利用
      6. 是否可以长时间运行
      7. 出现问题导致崩溃以后是否可以恢复
  5. 什么时候做性能测试?

    1. 项目时间节点
      • SIT以后,大部分bug修复完成,保证未修复的bug不会对性能测试产生影响
    2. 系统声明周期
      • 新产品
        • 满足用户需求
        • 得到性能数据(最大用户数、最佳用户数)
      • 扩容
        • 用户增减
      • 优化
        • 生产出现性能问题
        • 分析可能会出现性能问题

二、 性能测试流程

  1. 流程

    1. 系统测试流程:分析、设计、实现、执行
      1. 需求分析 —— 由产品经理提供
        1. 分析被测系统有没有必要进行性能测试
        2. 分析测试系统的那些功能需要进行性能测试
        3. 需要的数据(测试数据、指标数据)支撑
          1. 老产品
            1. 运维提供(埋点)
            2. 每个功能模块用户访问量多少?以及访问用户的趋势
            3. 得出系统现阶段、未来某个时间点用户体量
          2. 新产品
            1. 市场竞品
            2. 参考竞品
        4. 常见的性能测试场景
          1. 能力验证
            • 在要求平均响应时间小于2秒的前提下,如何判断系统是否能够支持50万用户/天的访问量?
            • 基准测试、负载测试、压力测试(可选)
          2. 规划能力
            • 某系统计划在一年内获取用户量达到100w,系统到时候能不能支持怎么多用户量?如果不能需不需要做测试?
            • 基准测试、负载测试、配置测试
          3. 性能调优
            • 某某系统上线一段时间以后,相应速度越来越慢,此时应该怎么办?
            • 基准测试,配置测试
          4. 缺陷发现
            • 某些曲线只能在高负载的情况下才能暴露出来,如线程锁,内存溢出
            • 并发测试、压力测试、稳定性测试
          5. 应用场景 —— 团购/秒杀
            • 基准测试、并发测试、压力测试
            • 集合点
  2. 设计

    1. 测试方案
      1. 测试目的
      2. 测试范围
      3. 组织架构
      4. 测试环境
        • 性能测试环境更接近于真实环境
        • I\O密集型
          • 文件服务器-专门用于存放文件、视频的
        • 业务逻辑—— CPU、内步要求比较高
      5. 测试准备(准备数据)
      6. 测试设计
        1. 业务场景分析
          • 根据业务需求去设计场
          • 根据场景选装测试类型
        2. 业务建模
          • 系统一般情况用户访问量最大的是什么时段
          • 二八原则
            • 80%的业务量集中在20%的时间段内
            • 性能测试关注百分之二十的时间段
          • 漏斗模型
            • 百分之百的人会登录软件,最后只有百分之20的人会下单购买产品
        3. 确定测试类型
        4. 测试工具
          • jmeter
          • lodarunner
        5. 启动\结束\暂停\再启动 准则
        6. 测试 输出
  3. 实现

    1. 脚本的实现
    2. 基于脚本的调试
      • 单用户多迭代:一个线程只循环一次
      • 单用户单迭代:一个线程循环多次
      • 多用户单迭代:多个线程循环一次
      • 多用户多迭代:多个线程循环多次
    3. 根据场景、业务模型选择对应的工具 实现性能测试的脚本
    4. 模拟用户真实场景
      • 构造多用户
      • 模拟用户的界面访问(除去接口HTML意外的js、图片、css请求)
      • 等待时间
      • 模拟并发数
      • 参数化
      • 网络带宽
      • 数据的容量(容量测试、稳定性测试)
      • 是否使用缓存
      • 请求数据大小
      • 发送请求的客户端与web的服务器不能在同一台电脑上
    5. 执行

      1. 搭建测试环境
        1. 被测系统测试环境
        2. 测试监控环境
      2. 测试数据的准备
      3. 执行性能测试脚本
        1. 收集性能测试结果
      4. 如果测试环境无法达到真实环境要求,应当如何开展性能测试?
        • 指标换算法
        • 利用深夜、维护时间到生产环境做性能测试
    6. 结果分析

      1. 根据执行数据结果进行性能分析,得出性能指标的结果,找出瓶颈
      2. 存在性能瓶颈,等开发优化,再次运行-分析
      3. 出性能测试的报告
        1. 测试目的
        2. 测试结果
        3. 测试过程及分析
        4. 风险说明

三、性能指标

1. RT(respose time) 响应时间 (用户最直观的感受)

  - 反应的服务器(被测系统、服务器)处理处理请求的快慢
  - 请求或者某个操作从发出的时间到服务器响应的时间的差值就是响应时间
  - 服务器进行业务的逻辑处理时间 + 数据(请求数据、响应时间)传输时间

2. TPS(transaction per second) - 每秒事物数:反应了服务器处理的能力 web、数据库处理能力

  - 单位时间内服务器处理事物的数量
    - 事物:一个请求,或者一组请求
  - 计算公式: 用户数(负载)/ (等待时间+RT)

3.QPS(query per second) 每秒查询数:针对数据库而言的

4.FPS(from per second) 每秒发送帧数

5. Throughtput(吞吐量)

  - 单位时间内服务器处理请求的量(请求数、字节数)
  - 网络带宽
  - 网络带宽&计算存储单位
     1. 分类
           1. Throughtput in - TI 吞: 进入服务器的请求
           2. Throughtput out -TO 吐:服务器返回量(响应)

6. HPS 每秒点击数 反应了客户端向服务器刚发送请求的能力

7. 服务器资源使用率

     - cpu 使用率建议70%——80%
     - 内存:临时存放数据  建议70%——80%
     - 硬盘:磁盘队列,磁盘利用率建议不超过80%
     - 网络:  影响网络传输速度
     1.数据库
        命中率

8. 错误率: 0.6%~5%

9. 并发数

     1. 用于并发操作用户数量
     2. 计算:
        - 估算: 最大用户在线数 * (8% — 12%)
        - 公式估算
        - 使用tps计算

10. PV(page view) 页面浏览量

11. UV(Unique visitor) 独立访客

6.其他

  - 性能指标数据 90%的用户、95%的用户满足   

四、 jmeter工具

1.初认

  - jmeter是apache公司开发的免费软件,java语言开发的
  - 基于多线程
  - 默认jvm内存设置可以模拟300-500个用户,最大可达到1千个用户
  - loadrunner:最大可模拟6.5万个用户;
  - jmeter可支持Windows、linux等多个平台运行;可对 程序做功能\回归测试,

2.Jmeter 启动

    - 运行:bin目录下 jmeter.bat

3.常见组件

1. 创建http请求结构

  • 测试计划 —> 线程组 -> http请求 ->查看结果数

    1. 测试计划 —>添加 —>线程(用户)—线程组在这里插入图片描述
    1. 线程组 —>取样器 —>HTTP请求(配置http请求)在这里插入图片描述
    1. 线程组—>监听器—>汇总报告在这里插入图片描述

2.线程组

在这里插入图片描述

3. HTTP请求

在这里插入图片描述

4.断言

目的:判断实际输出和预期输出是否一致

  • 如果针对的具体http请求的断言,需要通过Http请求选择断言
  • 在这里插入图片描述
    响应断言- 断言代码体、断言代码状态
    在这里插入图片描述
    大小断言 - 判断响应代码内容、长度
    在这里插入图片描述
    在这里插入图片描述
    持续时间断言- 判断运行时间是否符合预期
    单位 毫秒
    在这里插入图片描述

5. 三种定义变量的方式

  • 用户定义遍的变量
    在这里插入图片描述
    在这里插入图片描述
  • 用户参数
    • 针对多用户,不同的取不同的值,超出后循环取值;
    • 在这里插入图片描述在这里插入图片描述
  • CSV文件设置
  • 用于批量传数据
    在这里插入图片描述
    在这里插入图片描述

6. 参数化- 函数

计数器 counter
随机数 Random
时间戳 time
在这里插入图片描述

在这里插入图片描述

将函数复制到需要用到的地方

在这里插入图片描述

7.连接数据库

  • 需要添加jar包

选择路径
在这里插入图片描述
在这里插入图片描述
查询数据库
1调用 JDBC Request
2.编辑sql
3.添加 调试取样器 查看结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、进阶

1. if逻辑控制器

在这里插入图片描述
将http请求放在控制器下
控制器即可判断
符合条件即运行,不符合条件即跳过

在这里插入图片描述

2. foreach 逻辑控制器(循环遍历)

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

3.循环逻辑控制器

独立控制某个测试项目循环多少次,
相比于线程组更加灵活
在这里插入图片描述

4.Xpath 提取器

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

1.正则表达式

在这里插入图片描述

在这里插入图片描述

5. 跨越线程组传值_函数

类比约等于设置全局变量
1.使用函数记录:setProperty
2.使用BeanShell取样器存储
3.使用函数 调用:Property

1. 设置setProperty

BeanShell取样器在这里插入图片描述
${__setProperty(输出变量,输入变量(如果是个变量记得加¥{}),)}
哪里要用,就放在哪里

6.聚合报告—性能测试查看结果

查看统计程序性能
在这里插入图片描述

##7.常数吞吐量定时器——设置访问频率

在这里插入图片描述

7.生成图形化页面

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【学习笔记】性能测试——Jmenter的使用入门(自用) 的相关文章

随机推荐

  • jsp的基本认识与理解

    简介 JSP全称是JavaServer Pages 它和servlet技术一样 都是SUN公司定义的一种用于开发动态web资源的技术 JSP这门技术的最大的特点在于 写jsp就像在写html 但 它相比html而言 html只能为用户提供静
  • 阿里云Windows Server 利用Subversion和TortoiseSVN部署SVN服务器

    SVN 全称为 SubVersion 是一个开源的版本控制系统 管理着随时间而改变更新的数据 这些数据都放置在一个中央资料档案库 repository 中 它类似于一个普通的文件服务器 可以记录每一次文件的更 新变动 这样就可以把档案恢复到
  • rabbitmq取消自动重连_RabbitMQ Java客户端自动重新连接

    When my application looses connection to RabbitMQ I have its connection factory set to automatically try and reconnect C
  • 小白也能弄懂的目标检测之YOLO系列 - 第一期

    大家好 上期分享了电脑端几个免费无广告且实用的录屏软件 这期想给大家来讲解YOLO这个算法 从零基础学起 并最终学会YOLOV3的Pytorch实现 并学会自己制作数据集进行模型训练 然后用自己训练好的模型进行预测 话不多说 先上我用Vis
  • windows命令行文件中获取bat文件所在目录相关路径

    批处理命令获取当前盘符和当前目录 d0 是当前盘符 cd 是当前目录 可以用echo cd 进行打印测试 以下例子是命令行编译Visual Studio编写的程序 echo off set b cd 将当前目录保存到参数b中 等号前后不要有
  • qrcode 生成二维码的代码

  • CentOs7.5安装JDK1.8详细步骤

    1 先检查系统中有没有自带的JDK 有就卸载 查询命令 rpm qa grep jdk color 卸载命令 rpm e nodeps 软件名称 再次查询检查是否成功 rpm qa grep jdk color 没有提示也没有报错就是操作成
  • 大厂测试工程师面试题总结-三面(附参考答案)

    三面 1 指针常量 常量指针 指针常量 1 指针常量的本质是一个常量 并且使用指针来修饰它 2 通过对const定义 我们可以简单理解为这个指针是个常量 它不可以被修改 即它只能指向开始时我们给赋值的变量 不可以被修改从而再指向其他的变量
  • 安装mmdetection(windows下)

    windows环境安装mmdetection 创建pytorch环境 最终安装的版本信息 安装过程 step1 安装mmcv full step2 安装mmdetection 安装mmdet报错 Could not build wheels
  • Linux进程间通信--msgsnd函数的作用

    msgsnd函数用于将消息发送到消息队列中 它的原型如下 int msgsnd int msqid const void msgp size t msgsz int msgflg 参数解释 msqid 消息队列标识符 由msgget函数返回
  • windows系统查看进程端口号的命令

    查看进程端口号 1 查看windows所有端口进程 netstat ano 命令提示符窗口 2 查询指定的端口占用 netstat aon findstr 端口 显示列表中的PID 然后根据PID在电脑的任务管理器中查看对应的占用程序 根据
  • Python 生成当前项目依赖包 requirements

    Python 生成当前项目依赖包 requirements 1 安装 pipreqs pip install pipreqs 2 执行命令 在当前工程目录生成 pipreqs encoding utf8 force 3 使用requirem
  • CentOS下ELK 7.2生产安全部署

    01 架构说明 在需要采集日志的服务器上部署Filebeat服务 它将采集到的日志数据推送到Kafka集群 Logstash服务通过input插件读取Kafka集群对应主题的数据 期间可以使用filter插件对数据做自定义过滤解析处理 然后
  • Android Studio 4.x 返回上一次编辑的地方

    Android Studio 升级到 4 x 后 返回上一次编辑的地方的快捷键变成了 Alt Shift 左箭头 了
  • JUC之ReentrantReadWriteLock

    JUC之ReentrantReadWriteLock 1 背景 由于ReentrantLock是独占可重入锁 因此在进行操作的时候 不能够满足多线程同时操作数据 为了满足并发场景下的临界资源的数据共享 出现了ReentrantReadWri
  • web上传图片到七牛云服务器

    本文通过java web的使用 把要上传的图片通过浏览器上传到服务器上面 文本仅供参考 可能出现很多不合理 1 创建对应的jsp页面 下面是jsp下面的对应的from表单 上传文件用的那么ImgFiles的属性名称 同样你可以使用其他的 或
  • 零基础开发NBIOT

    前言 shineblink core 开发板 简称Core 的库函数支持NBIOT通信功能 所以只用几行代码即可实现基于M5311 NB模块的联网通信 TCP UDP MQTT 功能 这里我们主要介绍通过TCP实现联网通信的功能 更多关于T
  • KVM MMU EPT内存管理

    转载请注明 转载自博客xelatex KVM 并附本文链接 谢谢 注 文章中采用的版本 Linux 3 11 https www kernel org pub linux kernel v3 x linux 3 11 tar gz qemu
  • 信息学奥赛C++语言: 螺旋方阵1

    题目描述 一个 n 行 n 列的螺旋方阵按如下方法生成 从方阵的左上角 第 1 行第 1 列 出发 初始时向右移动 如果前方是未曾经过的格子 则继续前进 否则 右转 重复上述操作直至经过方阵中所有格子 根据经过顺序 在格子中依次填入 1 2
  • 【学习笔记】性能测试——Jmenter的使用入门(自用)

    一 性能理论 性能测试理论 什么是性能测试 初始 服务器崩溃 宕机 客户机性能 概念 利用脚本或者工具对于被测系统进行一定的负载测试 观察性能指标是否满足用户需求 得到相关性能指标 并优化 性能测试的目的 不是完全为了找bug 是为了验证系