【性能、Jmeter】性能测试知识以及jmeter工具的基本使用方法

文章目录

1、性能测试基础

1.1、性能测试的概念

1.1.1、性能

就是指软件质量中的效率属性

效率属性:

  • 时间特性:系统处理用户请求的响应时间
  • 资源特性:系统运行过程中,系统资源的消耗情况。(资源包含:CPU、内存、磁盘等)

1.1.2、性能测试

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

1.1.3、性能测试的目的

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

1.1.4、功能测试与性能测试

  1. 不同

    功能测试:验证系统的功能需求规格。焦点:功能(正向、逆向)

    性能测试:验证系统的业务需求场景。焦点:时间、资源

  2. 关系

    一般项目里,先功能测试通过后,再进行性能测试

1.2、性能测试的策略

1.2.1、基准测试

  1. 概念

    狭义上讲:单用户测试。(单用户循环多次得到的数据)

    广义上讲:建立基准线,当系统的软硬件环境发生变化时之后再进行一次基准测试以确定变化对性能的影响

  2. 基准测试数据的用途

    • 基准测试不会单独存在
    • 为多用户并发测试和综合场景测试等提供参考数据
    • 为系统/环境配置、系统优化前后的性能提升/下降提供参考数据

1.2.2、负载测试

  1. 概念

    通过逐步增加系统负载,确定在满足系统性能指标(如响应时间等)情况下,找出系统所能承受的最大负载量的测试

  2. 作用

    系统最大负载量达到用户要求时,系统才能正式上线使用

1.2.3、稳定性测试

  1. 概念

    在服务器稳定运行(用户正常的业务负载下)的情况下进行长时间测试(1天~1周等),并最终保证服务器能满足线上业务需求

  2. 作用

    系统在用户要求的业务负载下运行达到规定的时间时,系统才能正式上线使用

1.2.4、压力测试

  1. 概念

    在强负载下的测试,查看系统在峰值情况下是否功能隐患、系统是否具有良好的容错能力可恢复能力

  2. 测试场景

    • 极限负载下的破坏性压力测试
    • 高负载下的稳定性压力测试

1.2.5、并发测试

  1. 概念(绝对并发)

    极短时间内,发送多个请求,来验证服务器对并发的处理能力

  2. 应用场景:抢红包、秒杀、抢购等

1.3、性能测试的指标

为什么学习性能测试指标:对性能测试结果进行量化衡量

1.3.1、响应时间

从客户端发起请求开始到客户端接收到结果的总时间

包括:服务器处理时间 + 网络传输时间

1.3.2、并发用户数

某一时刻同时向服务器发送请求的用户数

1.3.3、吞吐量(Throughput)

  1. 概念

    单位时间内处理客户端请求数量。直接体现软件系统的性能承载能力

  2. 单位

    • 业务角度:访问人数/天,业务数/天
    • 网络角度:b/s
    • 技术指标:每秒查询数(QTS)、每秒事务数(TPS)
  3. QTS与TPS的关系

    事务即业务,一个事务可以对应一个请求或者多个请求

    一个事务对应一个请求时:QTS = TPS

    一个事务对应 n 个请求时:QTS = n * TPS

1.3.4、点击数

所有页面元素(图片、链接、框架等)的请求总数量

注意:点击数是请求数,不是页面上的一次点击

1.3.5、错误率

系统在负载情况下,失败业务的概率

注意:

  • 错误率是性能指标,是高负载下失败业务的概率
  • 随机bug是功能bug,先解决随机bug才能进行性能测试

1.3.6、资源利用率

  1. 概念

    系统各种资源的使用情况

  2. 常见的资源指标

    • CPU使用率:不高于75%~85%
    • 内存使用率:不高于80%
    • 磁盘IO(速率):不高于90%
    • 网络(速率):不高于80%

1.4、性能测试的流程

在这里插入图片描述

1.4.1、性能测试需求分析

在这里插入图片描述

1.4.2、性能测试的计划与方案

  1. 测什么
    • 项目背景
    • 测试目的
    • 测试范围
  2. 谁来测
    • 进度与分工
    • 交付清单
  3. 怎么测
    • 测试策略

1.4.3、性能测试的用例

在这里插入图片描述

1.4.4、性能测试的执行

在这里插入图片描述

1.4.5、性能测试的分析与调优

说明:性能测试分析人员经过对结果的分析以后,如果不符合性能需求,则会提出性能bug,然后由开发人员进行后续的调优。

1.4.6、性能测试报告

  • 测试工作的经过回顾
  • 缺陷分析与调优
  • 风险评估
  • 性能测试结果
  • 测试工作总结与改进

2、性能测试工具:Jmeter

2.1、loadrunner 与 Jmeter

相同点:

  • 都能模拟大量用户
  • 都支持多协议
  • 都有监控与分析报表功能

不同点:

在这里插入图片描述

2.2、Jmeter的基本使用

2.2.1、Jmeter环境安装

  1. 安装JDK:下载JDK – 安装JDK – 配置环境变量 – 验证

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

    注意点:

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

2.2.2、功能概要

Jmeter文件目录结构

在这里插入图片描述

Jmeter界面汉化

在这里插入图片描述

2.2.3、元件及作用域

基本元件

在这里插入图片描述

Jmeter元件的作用域和执行顺序
  1. 作用域的原则

    • 取样器:核心,没有作用域

    • 逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用

    • 其他元件:

      • 如果是某个取样器的子节点,则该元件只对其父节点起作用

      • 如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)

  2. 元件执行顺序:

    在同一个作用域(目录/级别/缩进)的不同元件的执行顺序:配置元件 - 前置处理程序 - 定时器 - 取样器 - 后置处理程序 - 断言 - 监听器
    在同一个作用域(目录/级别/缩进)的相同元件的执行顺序:从上到下的顺序依次执行

  3. 案例:执行顺序

    定时器1 - 请求1 - 定时器1 - 定时器2 - 请求2 - 定时器1 - 定时器3 - 请求3

在这里插入图片描述

2.2.4、Jmeter第一个案例脚本

需求:访问百度首页,并查看请求与响应信息

步骤:

  1. 启动JMeter
  2. 测试计划 下添加 线程组
  3. 线程组 下添加 HTTP请求 取样器
  4. 填写 HTTP请求 的相关请求数据
  5. 线程组 下添加 察看结果树 监听器
  6. 点击 启动 按钮运行,井查看结果

在这里插入图片描述

2.3、Jmeter三个重要组件

2.3.1、线程组

特点

控制Jmeter用于执行测试的一组用户

线程组的分类
  • Setup线程组:预测试操作,所有脚本之前执行
  • 普通线程组:执行测试用例,可以有1个或者多个(并行/串行)
  • Teardown线程组:测试后操作,所有脚本之后执行
线程组的属性
  1. 参数介绍

在这里插入图片描述

  1. 案例分析:
    使用1个线程组,添加HTTP请求(百度)

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

    分析:

    • 线程数代表虚拟用户数,用户数越多,负载越大
    • 循环次数代表运行时间,次数越多,运行时间越长

2.3.2、http请求

作用

向服务器发送http及https请求

位置

选中线程组—>右键—>添加—>取样器—>HTTP请求

参数

在这里插入图片描述

2.3.3、查看结果树

在这里插入图片描述

2.4、Jmeter参数化

定义:使用不同的测试数据,调用相同的测试方法进行测试

本质:实现测试数据与测试方法的分离。

实现方式:
1. 用户定义的变量: 全局变量
2. 用户参数 :为每个用户分配不同的参数值
3. CSV数据文件设置: 文件方式参数化
4. 函数: 随机数据
5. 数据库

2.4.1、用户定义的变量

配置元件——>用户定义的变量

用户定义的变量是全局变量

定义变量格式:变量名:变量值

在这里插入图片描述

引用变量格式:${变量名}

在这里插入图片描述

2.4.2、用户参数

前置处理器——>用户参数

针对同一组参数,当不同的用户访问时,可以获取到不同的值

在这里插入图片描述

2.4.3、CSV数据文件设置

配置元件——>CSV数据文件设置

当不同的用户,或者同一个用户的多次循环时,都可以获取到不同的值

在这里插入图片描述

2.4.4、函数[ counter计数函数 ]

在这里插入图片描述

在这里插入图片描述

2.4.5、总结

参数化

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

四种参数化
  1. 用户定义的变量

    作用:定义全局变量

    局限性:每次取值(无论是否相同的用户)都是固定值

  2. 用户参数

    作用:保证不同的用户针对同一组参数,可以取到不同的值

    局限性:同一个用户在多次循环时,取到相同的值

  3. CSV数据文件设置

    作用:保证不同的用户,或者同一个用户的多次循环时,都可以获取到不同的值

    局限性:需要手动进行测试数据的设置

  4. 函数

    作用:保证不同的用户,或者同一个用户的多次循环时,都可以获取到不同的值,不需要提前设置

    局限性:输入数据有特定的业务要求时无法使用

2.5、Jmeter 断言

断言:让程序自动判断实际结果与预期结果是否一致

提示:

  • Jmeter在请求的返回层面有个自动判断机制(响应状态码)
  • 请求成功,不代表结果正确

Jmeter中常用的断言:

  • 响应断言
  • JSON断言
  • 持续时间断言(Duration Assertion)

2.5.1、响应断言

任意http请求的响应结果,都可以使用响应断言

http请求——>(右键添加)断言——>响应断言

在这里插入图片描述

在这里插入图片描述

2.5.2、JSON 断言

对http请求的响应结果为JSON格式时,可以使用

http请求——>(右键添加)断言——>JSON断言

在这里插入图片描述

2.5.3、断言持续时间

测试http请求的响应时间是否满足要求时使用

http请求——>(右键添加)断言——>断言持续时间

在这里插入图片描述

2.6、Jmeter关联

关联:当请求之间有依赖,比如一个请求的入参时另一个请求返回的数据,这时需要用到关联处理

Jmeter中常用的关联方法:

  1. 正则表达式提取器
  2. XPath提取器
  3. JSON提取器

2.6.1、正则表达式提取器

正则表达式

就是一个公式,或者说一套规则,使用这套规则可以从任意字符串中提取出想要的数据内容

  • 通过一个正则表达式可以提取出多组数据,每组数据设置对应的左边界和右边界即可

  • 每一组数据都可以有一个或者多个值

公式格式:左边界(匹配符号)右边界:可以提取出想要获取的数据内容
.  	:是通配符,可以代表任意字符(除换行回车)
*  	:代表前面的字符出现0次或者多次
.*  :找到左边界值后,往右查找有边界,找到最后面的右边界,中间的所有数据都被记录下来
?  	: 代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续查找;再次查找左边界和右边界
公式格式:左边界(.*?)右边界
<title>百度一下,你就知道</title><title>百度一下,你就知道</title>
<title>(.*?)</title>
正则表达式提取器

任意格式响应数据,都可以使用正则表达式提取器进行提取

http请求——>(右键添加)后置处理器——>正则表达式提取器

在这里插入图片描述

在这里插入图片描述

2.6.2、XPath提取器

针对HTML格式的响应数据时可以使用

http请求——>(右键添加)后置处理器——>XPath提取器

案例:
//a[@id='kw']: 在HTML页面中,找出a标签(有一个属性为id,且id的值为kw)
//a : 找出所有的a标签

在这里插入图片描述

2.6.3、JSON 提取器

针对JSON格式的响应数据时,使用JSON提取器

http请求——>(右键添加)后置处理器——>JSON 提取器

在这里插入图片描述

2.7、Jmeter属性

需要实现跨线程组的数据传递时,可以使用Jmeter属性

2.7.1、_setProperty函数

将值保存成Jmeter属性,需要通过 Beanshell 取样器执行

在这里插入图片描述

2.7.2、_property函数

在其他线程组使用property函数读取属性

在这里插入图片描述

2.8、Jmeter脚本录制

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 《JMeter性能测试实战.pdf》是一本关于使用JMeter进行性能测试的实践指南。本书主要分为理论方面和实际操作方面两个部分。 首先,本书详细介绍了性能测试基本概念和原理,包括测试目标、测试环境准备、性能指标等方面。读者可以通过阅读本书了解到性能测试的整个流程,从而对性能测试有一个全面的了解。 其次,本书重点介绍了JMeter使用方法和操作技巧。JMeter是一款功能强大的性能测试工具,通过本书的指导,读者可以了解到JMeter的各种功能和使用场景,包括如何创建测试计划、设置线程组、配置Sampler和监听器等。通过实际操作示例,读者可以学会如何使用JMeter进行性能测试。 此外,本书还介绍了JMeter的扩展插件和高级功能。JMeter提供了一些扩展插件,如图形化查看测试结果的插件和分布式测试的插件,本书对这些插件的使用方法进行了详细的解释。此外,本书还介绍了一些高级功能,如参数化、断言、前置处理器和后置处理器等,读者可以通过学习这些高级功能,进一步提升自己的性能测试技能。 总之,《JMeter性能测试实战.pdf》是一本详细介绍JMeter性能测试方法和实践操作的实用指南。无论是初学者还是有一定经验的测试人员,阅读本书都能够提升自己在性能测试方面的能力,并能够更加准确、高效地进行性能测试。 ### 回答2: 《JMeter性能测试实战》是一本介绍JMeter性能测试的实用指南。这本书从基础概念开始,详细讲解了JMeter的安装、配置和使用方法。它从如何创建测试计划开始,包括线程组、控制器、取样器、监听器等的使用。同时,它还介绍了如何使用JMeter进行负载测试、压力测试性能测试,并提供了一些实际案例,让读者能够更好地理解和应用所学的知识。 该书内容结构清晰,文字简洁明了,配有丰富的图示和示例代码,有助于读者理解和运用JMeter进行性能测试。同时,书中还包括了一些常见问题和解决方案,帮助读者解决在使用JMeter过程中可能遇到的困难和问题。 《JMeter性能测试实战》除了介绍JMeter基本用法之外,还涉及了一些高级主题,如分布式测试、数据分析和报告生成等。这些内容对于需要进行大规模、复杂性能测试的人员来说尤为有用。 总的来说,《JMeter性能测试实战》是一本很好的JMeter实践指南,对于想要了解和运用JMeter进行性能测试的人员来说,是一本不可多得的参考书。无论是初学者还是有一定经验的人员,都可以从中获取到宝贵的知识和经验,并能够应用到实际工作中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子曰京习习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值