JMETER 性能测试实战教程

Jmeter 性能测试实战教程

1.JMETER介绍

1.1 Jmeter 有什么样功能

Apache JMeter 是一个开源、纯 Java、优秀的性能测试工具
能够测试许多不同的应用程序/服务器/协议类型:

  1. HTTP、HTTPS
  2. REST、SOAP
  3. JDBC
  4. FTP
  5. JMS 消息类
  6. 命令或 shell 脚本
  7. TCP 等等
    主要特性:
    可视化设计、功能齐全 (可视化)
    快速设计测试计划、简单构建和调试程序 (简易性)
    内置八大组件,功能强大 (高灵活)
    完全、快速的可移植性 (跨平台)
    可以进行二次开发 (高扩展)

1.2 性能测试工具如何选型

Jmter 使用场景:免费+复杂场景化
LoadRunner 使用场景:商业+复杂场景化

Jmeter、LoadRunner 任意掌握一种,以后有需要可学习其它的工具

1.3 Jmeter三种模式

在这里插入图片描述

1.4 Jmter 学习目标

  1. 初步学会用 Jmeter 做功能测试、接口测试、性能测试 (熟悉 Jmeter 界面化操作、录制脚本)
  2. 能够熟练使用 Jmeter 做性能测试,独立完成性能场景设计和测试任务 (熟悉常用组件、参数设计、变量设计、简单关联分析)
  3. 能够熟练使用 Jmeter 脚本编程,完成复杂的测试任务 (要掌握一门编程语言,比如java)
  4. 学会 Jmeter 的二次开发 (高高手)

2. JMETER安装

2.1 官方地址

官网链接: https://jmeter.apache.org

2.2 环境配置

  1. windows 下面环境变量设置(JDK1.8+)
    JAVA_HOME=D:\Program Files\Java\jdk1.8(JDK安装位置)
    PATH=%JAVA_HOME%\bin;(JDK的bin目录)
    CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

3. 初步了解Jmeter

3.1 了解测试计划

基本概念认识:
A:测试计划是用来描述一个性能测试的顺序与动作,它包含了若干测试组件以及若干个线程组
B:我们通常所说的所有测试元素在 Jmeter 中均属于属于某一个测试计划
C:测试计划可以添加除采样器与控制器外的所有组件
D:测试计划中可以添加自定义变量

3.2 了解线程组

基本概念认识:
A:线程组是 jmeter 压测中的一个调度框架,所有的压力测试均是通过线程组来调度
B:线程组可以添加 8 大组件为子元素

3.3 . 线程组中的执行计划

在这里插入图片描述

  1. 线程数,可以理解为并发用户数、系统并发数
  2. 线程启动时间,比如线程数为 3,启动时间为 6 秒,大概执行计划就是线程 1 开始(0 秒),线程 2 开始(3 秒),线程 3 开始(6 秒)
  3. 每一个线程执行次数,如果线程数为 3,迭代数量为 2,那么总共执行 16次
  4. 相同用户迭代,一般用在有 Cookie 的场景
  5. 延迟创建线程组
  6. 持续时间,如果同时设置有迭代次数,则谁先到达则谁先生效
  7. 启动延迟

3.4 测试计划中的并行与串行

串行与并行规则如下:

  1. 测试计划中的执行顺序遵循:setUp Thread Group->Thread Group->tearDown Thread Group
  2. 如果将线程组独立运行勾选上,则多个 Thread Group 串行执行,否则并发执行

3.5 八大组件件功能介绍

配置元件:配置元件主要用于设置一些默认值以供后续范围内的组件使用
控制器:控制器主要为 Jmeter 提供基本逻辑控制
预处理器:预处理器主要用于执行采样器的预处理逻辑,主要包括参数的设定和传递
定时器:定时器主要作用于线程延迟,用来达到业务上更真实的模拟
采样器:采样器为 Jmeter 测试的真正工作者,来用采集测试程序的数据
后置处理器:后置处理器主要用于采样器后的业务处理,比如判断、参数关联、逻辑处理等,为业务逻辑中的重要环节
断言器:断言器主要为 Jmeter 采样器提供成功与否的判断机制,通常用于检查采样器的结果是否正确
监听器:监听器主要为 Jmeter 采样器提供结果检查机制,用于查看、检查、汇总、分析采样结果

3.6 Jmeter 变量&属性

  1. 在 Jmeter 中,如果线程内部多个地方用到了同一个常量,那么可以用 Jmeter 的变量进行替代
    使用场景:
    A:可以用在 8 大组件中的大多数输入元素中使用,如${变量名}
    B:可以在脚本中使用,如 vars.get(“变量名”)
  2. 在 Jmeter 中,属性一个跨线程的变量
    使用场景:
    A:可以用在 8 大组件中的大多数输入元素中使用,如KaTeX parse error: Expected group after '_' at position 2: {_̲_P(属性名)},{__property(属性名)}
    B:可以在脚本中使用,如 props.get(“属性名”)

3.7 Jmeter 函数

Jmeter 函数可以计算一些特殊值,它的作用域非常广泛,可以填充测试计划中所有组件的大多数输入元素,如${__functionName(……)}
Jmeter 函数参考手册,在 Tools->Function Helper Dialog
Jmeter 函数官方手册:https://jmeter.apache.org/usermanual/functions.html#functions

3.8 Jmeter 的脚本录制

3.8.1 脚本录制简介

  1. 能够将可视化操作转为脚本代码,我们只要稍加调整,就能成为真正的测试代码
  2. 简化操作,大大降低工作量和难度
    脚本录制的方式有多种,可以分为
  3. 原生录制/代理录制
    通过 jmeter 代理,直接进行录制
  4. loadrunner 转换
    可以快速将 loadrunner 脚本转换为 jmeter 脚本
  5. fidller 录制方式
    采用 fidller 代理方式录制脚本,然后利用 har 转 jmx
  6. 其它方法
    A:其它 har 转 jmx,有兴趣的同学可以去网上找下,但大部分没有专门社区和团队维护,目前很多不可用,不建议使用
    B:badboy 也是一款性能测试工具,它能够录制脚本,但存在一个兼容性问题,有部分网站用 badboy 打不开,不建议深入学习
    C:jmeter 与 selenium 自动化测试等工具结合

3.8.2 原生录制方式(http)

  1. 新建一个 HTTP Request Defaults 设置好协议、IP、端口号
  2. jmeter 当中建立 http
    在这里插入图片描述
  3. 启动代理服务器,并将浏览器的设置为代理上网,代理地址为:127.0.0.1:8888,端口与上述保持一致
  4. 打开浏览器开始录制脚本

3.8.2 原生录制方式(https)

  1. 新建一个 HTTP Request Defaults 设置好协议、IP、端口号

  2. jmeter 当中建立 http 代理服务器

  3. 启动代理服务器

  4. 浏览器安装证书,证书路径在$JMETER_HOME/bin/ApacheJMeterTemporaryRootCA.crt在这里插入图片描述

  5. jmeter导入证书在这里插入图片描述

  6. 览器的设置为代理上网,代理地址为:127.0.0.1:8888,端口与上述保持一致

  7. 打开浏览器开始录制脚本

4. 配置元件介绍及实战

4.1. 配置元件功能&执行顺序

功能作用:
配置元件主要用于设置一些默认值以供后续范围内的组件使用

执行顺序:

  1. 配置元件优先执行
  2. 按深度优先算法,依次寻找采样器,找到采样器后,逐个执行,遵循第 3 条规则
  3. 组件执行顺序:预处理器->定时器->采样器>后置处理器->断言器->监听器
  4. 执行多个同类型配置元件组件时,在范围内按照广度优先策略依次执行(先外后内,反向执行)
  5. 配置元件无子元素
    配置元件的执行是相互独立的,谁先执行谁后执行,一般意义不

4.2. CSV 配置元件加载变量

功能:通过该元件,我们可以通过 csv 初始化变量,并给后续组件使用

  1. 组件位置:线程组右击,Add->Config Element->CSV Data Set Config
  2. 默认情况下,文件只打开一次,所以大家无需担心性能问题
  3. 默认为线程共享模式,如若每个线程打开不一致,采用文件名采用 test${__threadNum},并将 Sharing Mode 修改为当前在这里插入图片描述
    文件名:不要填绝对路径,要填相对于脚本的路径,否则远程压测时可能会有问题
    变量名:表示每一列对应的变量名称,针对带有头部的这里不需要填
    线程共享模式->当前线程:假设为 3 个线程循环一次,则取值分别为 a1,a2,a3(All threads),a1,a1,a1(Current thread)

4.3. HTTP 请求默认简化脚本

功能:通过该元件,我们可以对后续所有 http 请求进行一些默认设置,这样大大简化了代码

  1. 组件位置:线程组右击,Add->Config Element->HTTP Request Defaults
  2. 常用的包括协议、主机名、端口、以及默认参数等等
  3. 针对 http 类,大家养成用 HTTP Request Defaults 设置默认值的习惯
    在这里插入图片描述

5.4. HTTP 头部管理应用

功能:通过该元件,我们可以对后续所有 http 请求进行一些头部默认设置,这样大大简化了代码

  1. 组件位置:线程组右击,Add->Config Element->HTTP Header Manager
  2. 针对头部信息,我们通过浏览器开发模式下查看
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 目标场景和需求分析 在进行性能测试之前,需要明确测试的目标场景和需求,包括: - 测试的业务场景和流程 - 测试的并发用户数和请求量 - 系统的性能指标和要求 例如,假设要测试一个电商网站的性能,需要关注以下几个方面: - 用户登录 - 商品搜索 - 商品浏览和详情页 - 下单和支付 同时,需要考虑并发用户数和请求量,以及系统的性能指标和要求,例如: - 并发用户数:1000 - 请求量:每秒1000次 - 响应时间:平均在3秒以内,99%的请求在5秒以内完成 2. 准备测试环境 在进行性能测试之前,需要准备好测试环境,包括: - 测试服务器:部署被测试系统的服务器 - 压力机:用于模拟并发请求的机器 - 测试工具:例如JMeter,用于进行性能测试 在准备测试环境时,需要注意以下几个方面: - 测试服务器的配置应该与生产环境尽可能接近,包括硬件配置和软件版本等。 - 压力机的数量和配置应该根据测试需求和目标场景进行调整,确保能够模拟真实的并发请求。 - 测试工具的配置应该根据测试需求和目标场景进行调整,例如线程数、请求间隔、请求参数等。 3. 编写测试脚本 在JMeter中,可以通过录制脚本或手动编写脚本的方式进行性能测试。以下是手动编写脚本的步骤: - 添加线程组:在JMeter中,线程组用于模拟并发用户,需要设置线程数、循环次数、启动延迟等参数。 - 添加HTTP请求:在线程组中添加HTTP请求,需要设置请求的URL、请求方法、请求参数等。 - 添加断言:可以通过添加断言来验证请求的响应结果是否正确,例如判断响应码、响应内容等。 - 添加监听器:可以通过添加监听器来收集和分析测试结果,例如查看响应时间、吞吐量、错误率等指标。 4. 进行性能测试 在编写完测试脚本后,可以通过以下步骤进行性能测试: - 配置测试计划:在JMeter中,可以配置测试计划,包括设置测试时长、并发用户数、请求量等参数。 - 启动测试:点击“运行”按钮,JMeter会模拟并发用户发送请求,收集测试结果。 - 监控测试结果:可以通过监听器查看测试结果,例如查看响应时间、吞吐量、错误率等指标。 - 分析测试结果:根据测试结果,可以进行性能优化和调整,例如优化数据库查询、增加服务器的内存和CPU等。 5. 总结和反思 在测试完成后,需要对测试结果进行总结和反思,包括: - 测试目标是否达成 - 测试过程中遇到的问题和解决方法 - 测试结果的分析和总结 - 性能优化和调整的建议 总结和反思可以帮助团队不断改进和优化自己的性能测试方法和流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值