性能测试 —— 认识 jmeter (性能测试流程 性能测试通过标准)

news2025/2/23 12:42:49

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

1 性能测试技能树

  性能测试是一项综合性的工作,致力于暴露性能问题,评估系统性能趋势。性能测试工作实质上是利用工具去模拟大量用户来验证系统能够承受的负载情况,找出潜在的性能问题,分析并解决。

具体的技能树如下:

2 性能测试成功与失败要素

性能测试几大难点:

(1) 需求分析

(2) 场景设计

(3) 性能诊断调优

(4) 环境搭建和模拟

性能测试判断是否通过:

 
  1. 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。

  2. 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受

  3. 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛

  4. 分享他们的经验,还会分享很多直播讲座和技术沙龙

  5. 可以免费学习!划重点!开源的!!!

  6. qq群号:680748947

3 性能测试流程

  1. 业务学习:通过查看文档,手工操作系统来了解系统功能。
  2. 需求分析:分析非功能需求,确定性能测试范围,了解性能测试指标。
  3. 工作评估:工作量分解
  4. 设计模型:业务模型转化成测试模型。比如一个支付系统需要与银行的系统进行交互(充值或转出),由于银行不提供支持,这时会开发程序代替银行系统功能,保证性能测试能够正常开展。再比如登陆后新增人员,需要绑定测试,这也属于测试模型。模型需要关注的是如何实现,是否具有可操作性、可验证性。
  5. 计划编写:计划测试工作,在文档中明确列出测试范围、人力投入、持续时间、工作内容、风险评估、风险应对策略等。
  6. 脚本开发:录制或编写性能测试脚本
  7. 测试环境准备:包括服务器和负载机两部分,服务器是被测系统的运行平台,负载机是我们用来产生负载的机器,用来安装负载工具,运行测试脚本。
  8. 测试数据准备:根据数据模型来准备被测系统的主数据与业务数据(主数据是保证业务能够运行畅通的基础,比如菜单、用户等数据)
  9. 测试执行:性能测试成败关键
  10. 缺陷管理:对过程中发现的缺陷进行管理
  11. 性能分析:对暴露出来的问题进行分析,找出原因
  12. 性能调优:开发人员、性能测试工程师一起来解决性能问题
  13. 测试报告:测试工作的重要交付件,对测试结果进行报告,主要包括常见的性能指标说明(TPS、RT、CPU Using...),发现的问题。

性能测试主要交付件:

测试计划

测试脚本

测试程序

测试报告或阶段性性能报告

14. 评审:对性能报告中的内容进行评审,确认问题、评估上线风险。

4 性能测试通过标准

通过标准参考如下:

分类

用户量

指标

优先级

备注

事务处理类

300

(非高峰期)

前端系统访问响应时间≤5 秒

  1. 前端系统指标测试需结合 Jmeter 的报告

  1. 后端 CPU 利用率可使用 Jmeter 插件在服务器安装,Jmeter 自动监控;若不允许装插件,则使用人工监控记录

查询类

300

(非高峰期)

前端系统访问响应时间≤2 秒

后端 CPU 利用率 <=50%

后端内存利用率 <=50%

1000

(高峰期)

系统访问响应时间≤10 秒

后端 CPU 利用率 <=70%

后端内存利用率 <=70%

3000

(极限)

系统未崩溃

请求未返回大量错误

统计类

简单统计类

系统响应时间≤10 秒

手动启动业务全过程跟踪

复杂统计类

系统响应时间≤30 秒

手动启动运行月报

5 性能测试趋势

  性能测试将会在自动化的道路上越走越远,持续集成也将更好的集成性能测试部分。

6 Jmeter 整体简介

1 安装 jmeter
1.1 登陆官方网站,下载 jmeter

http://jmeter.apache.org/,下载 jmeter, 如图:

1.2 解压后, 运行  “bin/jmeter.bat”

jmeter 界面能正常打开,表示安装成功,如图:

PS:Jmeter 是支持中文的, 启动 Jmeter 后, 点击 Options -> Choose Language  来选择语言

1.3  JDK 环境变量配置

   计算机→属性→高级系统设置→高级→环境变量,如图:

3-1. 添加用户变量 JAVA_HOME , 变量内容填写 jdk 的目录, 如 C:\Program Files\Java\jre1.8.0_131

3-2. 添加系统变量 CLASSPATH, 变量值填写 .;% JAVA_HOME%\lib;% JAVA_HOME%\lib\tools.jar(注意最前面有点和分号:点表示当前路径,分号表示分隔符)

3-3. 添加系统变量 PATH, 变量值填写 % JAVA_HOME%\bin;% JAVA_HOME%\jre\bin;(注意原来 Path 的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)

3-4. 检验是否配置成功 运行 cmd 输入 java -version (java 和 -version 之间有空格)

若如图所示 显示版本信息 则说明安装和配置成功,如图:

2 启动 jmeter

・Jmeter 的 Home 目录下包含 bin、docs、extras、lib、printable_docs 这 5 个文件夹。

・我们需要重点知道的是 bin、lib 和 docs 目录。

2.1 bin 文件

・Bin 目录下存放的是可执行的程序、配置文件和日志文件。

在 windows 下,找到 bin 文件下的 jmeter.bat 文件,双击就打开 jmeter。

在 linux 下,找到 bin 文件下的 jmeter.sh 文件。

 jmeter 界面能正常打开,表示安装成功,如图:

PS:Jmeter 是支持中文的, 启动 Jmeter 后, 点击 Options -> Choose Language  来选择语言

2.2 lib 目录

Jmeter 是 java 写的,在 lib 下面包含 ext、junit 目录、jar 包。

Jar 包在脚本或者 jmeter 运行时所需要的 jar 包,比如使用 JDBC 测试数据库时,就需要对应的 jdbc 驱动的 jar 包放入 lib 目录。

Ext 目录下存放的是 jmeter 运行时的各个组件的 jar 包,也可以存放自定义组件和插件的 jar 包。

3 jmeter 组成

取样器:进行脚本逻辑控制

线程组:场景设置

监视器:监控我们的脚本运行,取得性能指标

3.1 线程组

名称:可以给线程组设置一个个性化的命名

注释:可以对线程组添加备注以标记

在取样器错误后要执行的动作:就是在错误之后要如何执行,可选继续执行后续的、停止执行等。

线程数:就是需要设置多少线程执行测试。

Ramp-up Period (in Seconds):用于告知 JMeter 要在多长时间内建立全部的线程。多长时间内需要把上面的线程数均匀启动完。 默认值是 0。如果未指定 ramp-up period ,也就是说 ramp-up period 为零, JMeter 将立即建立所有线程。假设 ramp-up period 设置成 T 秒, 全部线程数设置成 N 个, JMeter 将每隔 T/N 秒建立一个线程。

循环次数:就是决定一个线程要跑多少次测试。

Delay Thread creation until needed:直到需要时延迟线程的创建

调度器:选中之后可以配置启动时间,立即或者预定的时间

 3.2 取样器:模拟用户操作

取样器用来模拟用户操作,向服务器(被测试系统)发出 HTTP 请求、WebService 请求或 Java 请求。

取样器路径:【测试计划】->【线程组】->【Sample】

3.3 监听器:记录测试结果

Jmeter 的测试结果需要添加监听器来收集。监听器任务用于添加结果监听、展示结果。

路径:【测试计划】->【监听器】

【取样器】、【断言】、【监听器】组合在一起们可以完成发送请求、验证结果及记录结果。

3.4 断言:验证结果的正确性

断言是用来验证结果的正确性。

断言就是用一个预设的结果(值、表达式、时间长短等条件)与实际结果匹配。

断言路径:【测试计划】->【断言】

3.5 前置处理器:准备环境或参数

前置处理器用于环境或参数的准备工作,比如对数据库进行操作前,需要先建立连接。

路径:【测试计划】->【前置处理器】

3.6 配置元件:参数化

配置元件用于模拟大量用户操作我们往往需要做参数化或者可以用来记录服务器的返回数据。

路径:【测试计划】->【配置元件】

3.7 后置处理器:处理服务器的返回结果

后置处理器一般放在取样器之后,用来处理服务器的返回结果,比如一个 web 应用程序,我们登录后会返回一个 SessionID, 登陆后的业务操作过程中会作为验证条件,验证用户是否合法登录。Jmeter 的关联通过后置处理器来完成。

路径:【测试计划】->【后置处理器】

【前置处理器】、【配置元件】、【后置处理器】都是为取样器提供数据支持的,取样器关注业务逻辑。

3.8 控制器:一次控制,多次查看

比如说用在登陆一次邮件,查看多封邮件。

路径:【测试计划】->【线程组】->【逻辑控制器】

3.9 定时器:集合

定时器模拟同一时刻发送,集合的功能。

路径:【测试计划】->【线程组】->【定时器】

4 jmeter 脚本的两种录制方式

有 2 种方式的录制方式:

一、使用 badboy 进行录制

二、使用代理方式进行录制

4.1 脚本录制的流程与思路

4.2 Badboy 演示与录制

打开百度,输入 badboy,进入官网,下载对应的版本,网址如下:http://www.badboy.com.au/

如图:

下载完成后,进行安装,安装成功后,在程序中找到 badboy,点击打开 badboy,表示安装成功,如图:

Badboy 功能区如下:

4.3 jmeter 代理录制

HTTP 代理方式进行录制的原理:解析网络数据包,按 Http 协议包装成 Http Request,Http Response 等对象。

HTTP 请求默认值(添加录制控制器)

HTTP 代理服务器(设置端口、IP 地址)

浏览器设置:

4.4 手动编写

根据对应的协议类型选择合适的取样器(sampler), 手动编写对应的请求,实现模拟数据发送的效果。

前提:了解协议、了解抓包工具、了解性能测试工具。

附录

1、自动重定向和跟随重定向的区别

自动重定向:当重定向时,自动跳转时,只针对 GET 和 Head 请求,自动重定向可以自动跳转到最终目标页面,但是 jmeter 不记录重定向过程内容【在查看结果树中只能看到重定向后的响应内容】

跟随重定向:当重定向时,自动重定向可以自动跳转到最终目标页面,但是 jmeter 记录重定向过程内容【在查看结果树中既能看到重定向后的响应内容,也能看到重定向前的响应内容】

 2、如何解决 JMeter 设置线程组循环不起作用?

使用 badboy 录制的脚本,导出到 jmeter 中的,会出现一个问题就是,设置线程组循环会失效。只有设置 step1 的循环控制器才起作用。

问题的根本原因: jmeter 中的循环控制器和 badboy 录制的脚本的 step1 循环控制器是不相同的。

解决方法:

 1、badboy 录制的脚本,循环要在 step 中设置。

 2、jmeter 代理录制的脚本,循环在循环控制器中设置。


最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1529365.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows取证

Windows事件日志分析 使用Windows事件日志查看器&#xff0c;打开实验文档“security01.evtx”。按“日期和时间”对日志进行分组统计&#xff1b;按“事件ID”对日志进行分组统计&#xff1a; 问题&#xff1a;日志中是否有用户登录失败的记录。如果有&#xff0c;请按“登录…

openEuler 欧拉系统nginx正向代理 http https —— 筑梦之路

正向代理 Nginx正向代理&#xff0c;通过服务器代理客户端去重定向请求访问到目标服务器的一种代理服务。对于目标服务器来说浏览器/客户端是隐藏的。Nginx 正向代理默认只支持http 协议&#xff0c;不支持 https 协议&#xff0c;需借助"ngx_http_proxy_connect_module&q…

HarmonyOS NEXT应用开发之听歌识曲水波纹特效案例

介绍 在很多应用中&#xff0c;会出现点击按钮出现水波纹的特效。 效果图预览 使用说明 进入页面&#xff0c;点击按钮&#xff0c;触发水波纹动画。再次点击按钮&#xff0c;停止水波纹动画。 实现思路 本例涉及的关键特性和实现方案如下&#xff1a; 要实现存在两个连续…

Redis的安装和部署教程(Windows环境)

一、安装Redis服务 1、下载Redis压缩包 以下这个是我网盘里面的&#xff08;这个是v8.0版本的&#xff0c;支持导入.rdb数据文件&#xff09; 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;x0f1 --来自百度网盘超级会员V5的分享 2、解压到文件夹 将下载的压缩…

YOLOv9改进策略:卷积魔改 | AKConv(可改变核卷积),即插即用的卷积,效果秒杀DSConv | 2023年11月最新发表

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a; YOLOv9如何魔改卷积进一步提升检测精度&#xff1f;AKConv 通过不规则卷积运算完成高效特征提取的过程&#xff0c;为卷积采样形状带来更多探索选择。 AKConv可以作为即插即用的卷积运算来替代卷积运算来提高…

STC 51单片机烧录程序遇到一直检测单片机的问题

准备工作 一&#xff0c;需要一个USB-TTL的下载器 &#xff0c;并安装好对应的驱动程序 二、对应的下载软件&#xff0c;stc软件需要官方的软件&#xff08;最好是最新的&#xff0c;个人遇到旧的下载软件出现问题&#xff09; 几种出现一直检测的原因 下载软件图标&#xf…

[linux]--关于进程概念(上)

冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是有一个个的硬件组件组成 输入单元&#xff1a;包括键盘, 鼠标&#xff0c;…

SaaS模式全套云HIS源码包含EMR、LIS

目录 系统简介 一、云HIS分系统功能 【医疗业务子系统】 【电子病历系统】 【经济管理子系统】 【药物管理子系统】 【统计报表子系统】 【系统管理子系统】 二、运维运营分系统 三、互联互通分系统 系统简介 SaaS模式Java版云HIS系统源码&#xff0c;在公立二甲医院…

使用Vuex构建网络打靶成绩管理系统及其测试页面平台思路

使用Vuex构建网络打靶成绩管理系统及其测试页面平台 一、引言 在现代Web开发中&#xff0c;前端框架和状态管理库已经成为构建复杂应用的关键工具。Vue.js作为一个轻量级且易于上手的前端框架&#xff0c;结合Vuex这个专门为Vue.js设计的状态管理库&#xff0c;可以让我们更加…

string类型的使用以及编码方式

Redis 中所有的键的类型都是字符串类型&#xff0c;⼀个字符串的最⼤值不能超过 512 MB。 由于 Redis 内部存储字符串完全是按照⼆进制流的形式保存的&#xff0c;所以 Redis 是不处理字符集编码问题的&#xff0c;客⼾端传⼊的命令中使⽤的是什么字符集编码&#xff0c;就存储…

【EDSR】《Enhanced Deep Residual Networks for Single Image Super-Resolution》

CVPR workshops-2017 code&#xff1a; https://github.com/limbee/NTIRE2017/tree/masterhttps://github.com/sanghyun-son/EDSR-PyTorch 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method4.1 Residual blocks4.2 Single-scale mod…

Hive 数据迁移与备份

迁移类型 同时迁移表及其数据&#xff08;使用import和export&#xff09; 迁移步骤 将表和数据从 Hive 导出到 HDFS将表和数据从 HDFS 导出到本地服务器将表和数据从本地服务器复制到目标服务器将表和数据从目标服务器上传到目标 HDFS将表和数据从目标 HDFS 上传到目标 Hiv…

王老吉药业开拓数字经济“新蓝海”,成立数字经济研究所,科技赋能新品压片糖

3月12日&#xff0c;广州王老吉药业股份有限公司&#xff08;以下简称“王老吉药业”&#xff09;召开第十一届312感恩活动新闻发布会&#xff0c;宣告王老吉数字经济研究所成立&#xff0c;并发布王老吉压片糖新品。一系列重要重要举措&#xff0c;无一不标志着王老吉药业正以…

基于python的变配电室运行状态评估与预警系统flask-django-nodejs-php

近年来,随着我国工业化、城镇化步伐的不断加快&#xff0c;城市配电网络取得令人瞩目的发展成果。变配电室是供配电系统的核心&#xff0c;在供配电系统中占有特殊的重要地位[1]。变配电室电气设备运行状态和环境信息缺乏必要的监测评估预警手段&#xff0c;如有一日遭遇突发情…

Sentinel(熔断规则)

慢调用比例 慢调用比例( SLOM_REQUEST_RATTo ):选择以慢调用比例作为阈值&#xff0c;需要设置允许的慢调用RT(即最大的响应时间)&#xff0c;请求的响应时间大于该值则统计为慢调用。当单位统计时长(statIntervalMs&#xff09;内请求数目大于设置的最小请求数目&#xff0c;…

【web前端】CSS语法

CSS语法 1. CSS语法格式 通常情况下语法格式如下: 选择器{属性名:属性值;属性名:属性值;属性名:属性值;... }2. CSS添加方式 2.1 行内样式 直接将样式写在本行的标签内。 <h1><p style"font-size: 48px; color:red;";>行内样式测试</p></…

es 集群安全认证

参考文档&#xff1a;Configure security for the Elastic Stack | Elasticsearch Guide [7.17] | Elastic ES敏感信息泄露的原因 Elasticsearch在默认安装后&#xff0c;不提供任何形式的安全防护不合理的配置导致公网可以访问ES集群。比如在elasticsearch.yml文件中,server…

【Godot4.2】2D导航03 - NavigationRegion2D及其使用方法

概述 Godot4.0改进了2D部分的导航&#xff0c;NavigationRegion2D基本可以看做是3.X的Navigation2D的进化版本。 它的基本用法就是先绘制navigation_polygon&#xff0c;也就是导航网格&#xff0c;或者直白点就是“可通行区域”。然后将带有碰撞形状和NavigationAgent2D子节点…

蓝桥杯前端Web赛道-输入搜索联想

蓝桥杯前端Web赛道-输入搜索联想 题目链接&#xff1a;1.输入搜索联想 - 蓝桥云课 (lanqiao.cn) 题目要求&#xff1a; 题目中还包含effect.gif 更详细的说明了需求 那么观察这道题需要做两件事情 把表头的每一个字母进行大写进行模糊查询 这里我们会用到几个js函数&#…

如何用VR全景讲述产品、企业的故事

请记住&#xff0c;你的全景不只是全景&#xff01;使用VR全景来讲述企业或产品的故事是一种创新且互动性强的方法&#xff0c;可以吸引观众并提供沉浸式体验。 运用720云漫游编辑工具的导览功能和数字人功能&#xff0c;您可以创造一个既视觉吸引又能情感连结的故事。 1. 规划…