软件测试--性能测试工具JMeter

本文详述了主流性能测试工具Loadrunner和JMeter的对比,重点介绍了JMeter的安装、功能、元件作用域、执行顺序、使用示例、参数化、断言、关联等关键知识点。通过实例演示了JMeter在性能测试中的应用,包括分布式测试、性能测试报告的生成。文章旨在帮助读者全面理解和掌握JMeter的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件测试--性能测试工具JMeter


主流性能测试工具

1.主流性能测试工具Loadrunner和Jmeter对比 —— 相同点

  • 都能模拟大量用户
  • 都能支持多协议(常见的协议都支持,如:HTTP)
  • 都有监控及分析报表功能

2.主流性能测试工具Loadrunner和Jmeter对比 —— 不同点

在这里插入图片描述
结论:项目日常性能测试Jmeter足够用,出商业报告优先Loadrunner

JMeter基本使用

JMeter环境搭建

1.安装JDK:

• 下载JDK – 安装JDK – 配置环境变量 – 验证
.在这里插入图片描述

2.安装Jmeter:

• 下载Jmeter – 安装Jmeter – 配置环境变量 – 启动验证

3.注意点:

• 下载JDK时,注意电脑操作系统是32位/64位
• 下载Jmeter时,注意与本机安装的JDK版本匹配
• 安装Jmeter时,安装路径中不能有中文/空格

JMeter功能概要

1. JMeter文件目录介绍

1.1 bin目录

存放可执行文件和配置文件
在这里插入图片描述

1.2 docs目录

docs:是JMeter的api文档,用于开发扩展组件,可打开api/index.html页面来查看
在这里插入图片描述
1.3 printable_docs目录

  • printable_docs的usermanual子目录下的内容是JMeter的用户手册文档
  • usermanual下component_reference.html是最常用到的核心元件帮助文档。
    在这里插入图片描述

提示:printable_docs的demos子目录下有一些常用的JMeter脚本案例,可以作为参考

1.4 lib目录

该目录用来存放JMeter依赖的jar包和用户扩展所依赖的jar包。
在这里插入图片描述

2. 修改默认配置

2.1 汉化配置

实现JMeter界面的汉化包含两种方式:

  1. 临时性
  2. 永久性
  • 临时性: 启动JMeter->选择菜单‘Options’->Choose Language->Chinese (Simplified)
  • 永久性:
    • 找到jmeter安装目录下的bin目录,
    • 打开jmeter.properties文件,把第39行修改为“language=zh_CN”,
    • 重启JMeter即可
      在这里插入图片描述
2.2 修改主题

JMeter默认主题是黑色的,可以通过以下步骤修改:
启动JMeter -> 选择菜单‘选项’ -> 外观 -> Windows(选择自己喜欢的主题即可)

JMeter元件作用域和执行顺序

1. 元件的基本介绍

元件:多个类似功能组件的容器(类似于)。
在这里插入图片描述

组件:实现独立的某个功能(类似于方法

  • 例如:取样器的组件
    在这里插入图片描述

2. 元件作用域

在JMeter中,元件的作用域是靠测试计划的树形结构中元件的父子关系来确定的。 提示:
核心是取样器,其他组件都是以取样器为核心运行的,组件添加的位置不同,生效的取样器也不同。

作用域的原则:

  1. 取样器:元件不和其他元件相互作用,因此不存在作用域的问题;
  2. 逻辑控制器:元件只对其子节点中的取样器和逻辑控制器作用;
  3. 其他六大元件:
    • 除取样器和逻辑控制器元件外,如果是某个取样器的子节点,则该元件对其父子节点起作用;
    • 如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等);

3. 元件执行顺序

同一个作用域下不同类型元件:

  1. 配置元件(config elements)
  2. 前置处理程序(Per-processors)
  3. 定时器(timers)
  4. 取样器(Sampler)
  5. 后置处理程序(Post-processors)
  6. 断言(Assertions)
  7. 监听器(Listeners)

同一个作用域下多个相同类型元件:
• 按照在测试计划中从上到下的顺序依次执行

JMeter使用示例

1. JMeter第一个案例

需求:使用JMeter访问百度首页接口,并查看请求和响应信息

步骤:

  1. 启动JMeter
  2. 在‘测试计划’下添加‘线程组’
  3. 在‘线程组’下添加‘HTTP请求’取样器
  4. 填写‘HTTP请求’的相关请求数据
  5. 在‘线程组’下添加‘察看结果树’监听器
  6. 点击‘启动’按钮运行,并查看结果
    在这里插入图片描述

2. 重点组件

  • 线程组
  • HTTP取样器
  • 察看结果树
2.1 线程组

定义:线程组是控制JMeter将用于执行测试的线程数,也可以把一个线程理解为一个测试用户。
位置:右键点击‘测试计划’ --> 添加 --> 线程(用户) --> 线程组
特点
• 模拟多人操作
• 线程组可以添加多个,多个线程组可以并行或串行
• 取样器(请求)和逻辑控制器必须依赖线程组才能使用
• 线程组下可以添加其他元件下组件
线程组分类

  • 线程组
    普通的、常用的线程组,可以看做一个虚拟用户组,线程组中的每一个线程都可以理解为一个虚拟用户
  • setUp线程组 (前置处理,初始化)
    一种特殊类型的线程组,可用于执行预测试操作
  • tearDown线程组(后置处理,环境恢复等)
    一种特殊类型的线程组,可用于执行测试后工作

线程组的属性

  • 参数介绍:
    在这里插入图片描述
  • 案例分析:

编写JMeter脚本,访问百度

要求:
• 模拟10个用户并行执行:
• 模拟10个用户5s内启动完成:
• 模拟2个用户各循环3次:
• 模拟2个用户运行30s:
• 模拟2个用户等待10s后开始执行

使用1个线程组,添加HTTP请求(百度)

  • 配置线程数为2,循环次数为3时,运行观察结果
  • 配置线程数为3,循环次数为2时,运行观察结果,对比是否有不同

相同点:从请求数量来说,是完全相同的
不同点:场景不同

  • 线程数:代表用户数,即性能测试时的负载量(线程数为2比线程数为3对应的负载量小)
  • 循环次数:代表时间,即性能测试时的运行时间(循环次数3比循环次数2对应的时间长)
2.2 HTTP请求:

作用:向服务器发送http及https请求
位置:选中线程组->右键->添加->取样器->HTTP请求
参数
在这里插入图片描述

2.3 查看结果树

作用:查看HTTP请求的请求和响应结果
位置:选中测试计划/线程组->右键->添加->监听器->察看结果树
组成
• 取样结果:查看响应信息头信息、响应状态码
• 请求:查看请求相关信息(url、方法、参数)
• 响应:查看响应信息
在这里插入图片描述
结果出现乱码:
在这里插入图片描述
解决方法:

  1. 找到jMeter安装目录下的bin目录
  2. 打开jmeter.properties文件 , 修改配置sampleresult.default.encoding=UTF-8
  3. 重启JMeter即可
    在这里插入图片描述

Jmeter参数化(重点)

为什么要使用参数化?

在这里插入图片描述

1. JMeter参数化常用方式

参数化测试:把测试数据组织起来,用不同的测试数据调用相同的测试方法。

JMeter中常见的参数化方式:

  • 用户定义的变量
  • 用户参数
  • CSV Data Set Config
  • 函数

2. 用户定义的变量

作用:定义全局变量

添加方式:测试计划 --> 线程组–> 配置元件 --> 用户定义的变量

2.1 场景
  • 请求:https://www.baidu.com:443
  • 要求:使用用户定义的变量配置被测系统的协议、域名和端口
2.2 操作步骤
  1. 添加线程组
  2. 添加用户定义的变量
  3. 添加HTTP请求
  4. 添加查看结果树

用户定义的变量
在这里插入图片描述

HTTP请求设置
在这里插入图片描述

3. 用户参数

为什么要使用用户参数?

在这里插入图片描述
作用:针对同一组参数,当不同的用户来访问时,可以获取到不同的值
添加方式:测试计划 --> 线程组–> 前置处理器 --> 用户参数

3.1 场景

请求:https://www.baidu.com
要求:第一次请求附带参数:name=“张三”&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值