当前位置: 首页 > article >正文

软件测试学习笔记-使用jmeter进行性能测试

性能测试:使用自动化工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程。
性能测试的目的:

  1. 评估当前系统的能力
  2. 寻找性能瓶颈,优化性能
  3. 评估软件是否能够满足未来的需要

性能测试和功能测试对比
焦点不同:功能(正向、逆向)、性能(时间、资源)
关系:先功能测试,再性能测试
1. 基准测试
狭义上:就是单用户测试。测试环境确定后,对业务模型中的重要业务做单独的测试,获取用户运行时的各项性能指标。
广义上:是一种测量和评估软件性能指标的活动。在某个时间通过基准测试建立一个已知的性能基准线,当系统的软硬件环境发生变化之后再进行一次基准测试以确定变化对性能的影响。
jmeter设置线程数为1,循环次数100(反正不是1)
2. 负载测试
通过逐步增加系统负载,确定在满足系统的性能指标情况下,找出系统所能承受的最大负载量的测试。
请添加图片描述

文章目录

        • 1. 线程组的特点和分类
          • 1. 线程组的特点
          • 2. 线程组的分类
        • 2. 响应结果出现乱码(查看结果树)
        • 3. jmeter逻辑控制器
          • 1. IF控制器
          • 2. 循环控制器
          • 3. ForEach控制器
        • 4. 定时器
          • 1. 同步定时器
          • 2. 常数吞吐量定时器

1. 线程组的特点和分类
1. 线程组的特点

特点:

  1. 模拟多人操作
  2. 线程组可以添加多个,多个线程组可以并行或串行
  3. 取样器(请求)和逻辑控制器必须依赖线程组才可以使用

并行:
在这里插入图片描述
可以看到执行顺序是baidu再taobao,不是根据实际设置的顺序执行的。
串行:
在这里插入图片描述
在测试计划中选中 独立运行每个线程组,运行结果如下:
在这里插入图片描述

2. 线程组的分类
  1. 线程组:普通的、常用的线程组,可以看做一个虚拟用户组,线程组中的每一个线程都可以理解为一个虚拟用户。
  2. setUp线程组:一种特殊类型的线程组,可用户执行预测试操作
  3. tearDown线程组:一种特殊的线程组,可用于执行测试后工作

在这里插入图片描述
设置并行或串行只对普通线程组有效。
请添加图片描述

2. 响应结果出现乱码(查看结果树)

解决办法:

  1. 找到jmeter安装目录下的bin目录
  2. 打开jmeter.properties文件,修改配置
    sampleresult.default.encoding=UTF-8
  3. 重启jmeter
3. jmeter逻辑控制器
1. IF控制器
  1. 用户定义的变量
    在这里插入图片描述
  2. IF控制器
    在这里插入图片描述
  3. 结构:
    在这里插入图片描述
2. 循环控制器

在这里插入图片描述
== 线程组循环次数和循环控制器的区别?==
不同点:线程组的循环次数对线程组下的所有HTTP请求有效,循环控制器的循环次数对子节点下的HTTP请求有效;
关联:循环控制器次数为M,线程组循环次数为N

  1. 循环控制下的请求运行:M*N次
  2. 线程组下,非循环控制器下的请求运行:N次
3. ForEach控制器

一般和用户自定义变量或正则表达式提取器一起使用,读取返回结果中一系列相关的变量。
用户定义的变量:
在这里插入图片描述
ForEach控制器:
在这里插入图片描述
HTTP请求:
在这里插入图片描述
结构:
在这里插入图片描述

4. 定时器
1. 同步定时器

阻塞线程(累计一定的请求),当在规定的时间内达到一定的线程数量,这些线程会在同一时间点一起释放,瞬间产生很大的压力。
集合点
固定等待:线程数大于分组集合点数,且等待超时响应时间为0
隐式等待:不管线程数和集合点数谁大谁小,只要到了等待超时时间,立马执行所有的线程

2. 常数吞吐量定时器

使用指定的吞吐量发送请求时,可以使用常数吞吐量定时器。
在这里插入图片描述
目标吞吐量:每个用户每分钟发送的请求数
一个用户以20qps的频率访问百度首页,持续一段时间,统计运行情况。
在这里插入图片描述


http://www.kler.cn/news/233640.html

相关文章:

  • ChatGPT高效提问—prompt常见用法(续篇四)
  • Acwing831KMP字符串
  • 【极数系列】Flink集成KafkaSink 实时输出数据(11)
  • 神经网络 | CNN 与 RNN——深度学习主力军
  • Redis篇之过期淘汰策略
  • springboot微信小程序 uniapp学习资料分享系统v9uy4
  • 【大厂AI课学习笔记】【1.5 AI技术领域】(8)文本分类
  • containerd中文翻译系列(二十一)用户命名空间
  • 一次显著的性能提升,从8s到0.7s
  • ClickHouse--02--安装
  • C++进阶(十三)异常
  • JAVA设计模式之代理模式详解
  • IDEA中Git的使用小技巧-Toolbar(工具栏)的设置
  • JVM 性能调优 - 常用的垃圾回收器(6)
  • MyBatisPlus之分页查询及Service接口运用
  • 【docker常见命令】
  • 【QT+QGIS跨平台编译】之三十一:【FreeXL+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • 项目02《游戏-11-开发》Unity3D
  • Vue3.4+element-plus2.5 + Vite 搭建教程整理
  • VUE2和VUE3区别对比一览
  • 【量子通信】量子通信技术:前景与挑战
  • Flask实现异步调用sqlalchemy的模型类
  • Leetcode—135. 分发糖果【中等】
  • C++重新入门-C++数据类型
  • 【深度学习】实验7布置,图像超分辨
  • 论文阅读-Automated Repair of Programs from Large Language Models
  • Python+django企业人力资源公司人事管理系统lq9t2
  • 三、搜索与图论
  • 在 MacOS M系列处理器上使用 Anaconda 开发 Oralce 的Python程序
  • Redis缓存高可用集群