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

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

性能测试的目的:

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

性能测试和功能测试对比

焦点不同:功能(正向、逆向)、性能(时间、资源)

关系:先功能测试,再性能测试

  1. 基准测试

狭义上:就是单用户测试。测试环境确定后,对业务模型中的重要业务做单独的测试,获取用户运行时的各项性能指标。

广义上:是一种测量和评估软件性能指标的活动。在某个时间通过基准测试建立一个已知的性能基准线,当系统的软硬件环境发生变化之后再进行一次基准测试以确定变化对性能的影响。

jmeter设置线程数为1,循环次数100(反正不是1)
2. 负载测试

通过逐步增加系统负载,确定在满足系统的性能指标情况下,找出系统所能承受的最大负载量的测试。

文章目录

        • [1. 线程组的特点和分类](#1. 线程组的特点和分类)
          • [1. 线程组的特点](#1. 线程组的特点)
          • [2. 线程组的分类](#2. 线程组的分类)
        • [2. 响应结果出现乱码(查看结果树)](#2. 响应结果出现乱码(查看结果树))
        • [3. jmeter逻辑控制器](#3. jmeter逻辑控制器)
          • [1. IF控制器](#1. IF控制器)
          • [2. 循环控制器](#2. 循环控制器)
          • [3. ForEach控制器](#3. ForEach控制器)
        • [4. 定时器](#4. 定时器)
          • [1. 同步定时器](#1. 同步定时器)
          • [2. 常数吞吐量定时器](#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的频率访问百度首页,持续一段时间,统计运行情况。

相关推荐
zzzkk200910 分钟前
BambuStudio学习笔记:MTUtils
笔记·学习
大宝剑17013 分钟前
blender学习25.3.11
学习·blender
Aphelios38013 分钟前
Java 学习记录:基础到进阶之路(一)
java·开发语言·学习·idea
小逗比r16 分钟前
小白学习:提示工程(什么是prompt)
学习·prompt
虾球xz22 分钟前
游戏引擎学习第151天
学习·游戏引擎
爱学习的小王!29 分钟前
有关MyBatis的动态SQL
java·笔记·sql·学习·mybatis
一条晒干的咸魚38 分钟前
【C#学习笔记03】进制转换与反码、补码、原码
开发语言·笔记·学习·c#
云上艺旅1 小时前
K8S学习之基础二十四:k8s的持久化存储之pv和pvc
学习·云原生·容器·kubernetes
王嘉俊9251 小时前
MySQL 入门笔记
数据库·笔记·sql·mysql·adb
你的微笑像拥抱2 小时前
npm-shrinkwrap.json 与 package-lock.json 区别和联系
笔记