浅谈Jmeter性能测试流程

news2024/11/28 11:46:26

不管是Loadrunner还是jmeter进行性能测试,测试流程基本上都是一样的,限制以Jmeter为例分析测试流程:

一、性能测试需求分析

一般而言,被测对象的性能需求,会在用户需求规格说明说中给出,比如单位时间内的访问量达到多少、业务响应时间不超过多少、业务成功率不低于多少、硬件资源消耗应该在一个合理的范围内等,性能指标应以量化数据给出,对于一个规范的产品,产品团队会给出如下的性能要求:

如果产品团队并没有指明性能测试需求,或者只给出表述字面意义上的需求,如:系统的TPS需要到300以上,单笔交易时间不超过3秒,那么测试工程师如何提前量化的指标呢?

需要结合业务需求和系统本身特性进一步分解和提取显性和隐性的需求,可以从以下两个用户方法进行确定:

1、业务用户

  • 用户频繁使用,且存在大量用户频繁使用的业务流程
  • 交易占比高,日常占比在80%以上甚至更高的业务流程
  • 特殊交易日或峰值交易占比80%以上甚至更高的业务流程
  • 性能较差且做过调整的业务流程
  • 特殊业务场景
  • 核心业务发送较大流程调整的业务流程

以上为业务用户层面可能需要的性能需求点,实际项目中可能会向终端用户进行调研。

2、项目团队(业务系统)

  • 曾经测试过性能后调整了架构设计的业务
  • 逻辑复杂、关键的业务
  • 可能消耗大量资源的业务
  • 与外部系统存在接口调用,且有大量数据交互的业务
  • 调用第三方业务组件,逻辑复杂业务

以上为项目开发角度可能需要的性能需求点,性能测试工程师需要与开发团队密切配合、深入了解被测对象。

3、案例分析

通过分析,我们以网上商城性能需求指标为例,得到下面数据:

二、测试用例设计及测试数据准备

1、测试用例设计

为了真实地反映被测对象可能存在的性能问题,需要尽可能地模拟被测对象可能发生瓶颈的业务场景,测试需求分析过程中已经确定了业务类型,在此需要设计如下性能测试场景:

2、测试数据准备

以本次测试为例,2小时内5万用户登录,意味着需要有50000个可用账户(尽量多准备一些,可以为60000),可以直接在数据库中添加,但要求对数据库结构相对熟悉;也可以使用Jmeter录制注册脚本,使用3个线程,循环2000次即可。

构造好测试数据后,需要对数据库进行备份,便于后期进行回归测试,可以使用NaviCat进行数据备份。

三、性能测试脚本开发

  • 根据登录业务模型,利用BadBoy录制用户登录过程,生成Jmeter脚本
  • 登录用户名进行参数化
  • 设置定时器:参考测试用例输入信息5s、登录成功等待返回3s、退出成功等待返回
  • 为登录成功页面设置断言,失败则提示信息,成功不提示
  • 添加查看结果树、聚合报告等,实时查看脚本运行情况

四、场景设计及资源监控

1、场景设计

以登录业务为例子,本次测试的目的在于验证平台是否能支持100个用户的并发登录,无需考虑持续时间,根据对应的场景测试用例,设置线程组数据,脚本可以通用(如果有必要可以去掉思考时间、添加集合点等)。

相应的线程组可以改名为场景名称:用户登录业务并发负载。

2、Jmeter利用自带插件进行资源监控

  • 解压JMeterPlugins-Extras-1.4.0.zip及JMeterPlugins-Standard-1.4.0.zip到Jmeter安装目录/lib/ext下
  • 重启Jmeter,添加监听器:jp@gc - PerfMon Metrics Collector
  • 下载ServerAgent-2.2.3.zip,并通过rz指令上传到服务器(Linux)指定目录下,执行unzip -o ServerAgent-2.2.3.zip解压该文件到当前目录
  • 关闭服务器防火墙:systemctl stop firewalld.service
  • 给启动文件设置执行权限:chmod u+x startService.sh
  • 执行sh文件:./startService.sh
  • Jmeter监听器jp@gc - PerfMon Metrics Collector下,添加监控的资源,如CPU、内存等
  • 运行场景,即可监控服务器相应的资源

根据场景用例要求,业务量测试需要设置78个线程数,同时需设置执行的时间段(参考业务量指标:2小时完成5万笔交易或者是TPS),设置如下:

五、场景执行及结果分析

1、场景执行

场景执行前,需要对测试环境进行确认,保证所有环境,系统业务均能正常使用:

  • 数据库恢复(避免脚本设计过程中对数据库中数据量的影响),记录商品、交易等相关数据
  • 随机购买商品,为避免出现商品库存为零情况,将库存统一设置为1000
  • 尽量单独部署服务器在Linux系统上,避免Jmeter对服务器性能的影响
  • 执行前,启动相应的监控代理和apache和mysql服务

CMD下非GUI模式执行场景:

Jmeter -n -t 测试脚本Jmx文件 -l 日志文件名 -e -o HTML测试结果文件路径

2、场景结果分析

结合聚合报告,分析登录业务的每个请求的平均响应时间为:15s,是小于5s的,故该项指标测试不通过;在最大和最小响应时间差异较大时,我们可以采用90%事务响应时间作为标准。

Apdex(Application Performance Index)指标是一个国际通用的标准。是用户对应用性能满意度的量化数值,他提供了一个统一的测量和用户体验的方法, 吧最终用户的体验和应用性能统一度量,下图中0表示没有满意度,1表示所有用户均满意,是开发团队追求的目标。

六、性能调优及回归测试

测试结果分析完成以后,即可对进行性能问题的确定及优化,通常情况下性能问题表现如下几个方面:

1、响应时间问题:

  • 响应时间平稳但较长,测试过程中响应时间就较长,即使减少线程数量(负载),也不会降低
  • 响应时间逐步变长,测试过程中,负载不变,运行时间越长,响应时间越长,直至出现很多错误
  • 响应时间随着负载的变化而变化,响应时间变长;负载减少,响应时间变短,资源利用率也下降
  • 数据积累导致锁定,起初运行正常,但数据量积累到一定值,立刻出现错误,无法消除,只能重启系统

2、稳定性问题:

特定场景或运行很长时间以后,突然出现问题,系统运行缓慢,主要原因有如下:

  • 物理内存资源不足
  • 内存泄漏
  • 资源争用
  • 外部系统交互
  • 业务失败时频繁重试,无终止状态
  • 中间件配置不合理
  • 数据库链接设置不合理(连接数或缓存)
  • 进程/线程设计错误

 

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

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

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

相关文章

MySQL主从复制和读写分离搭建

目录 一、主从复制原理 1、MySql支持从复制类型 2、主从复制的原理⭐⭐⭐ 4、mysql主从复制延迟 异步、同步、半同步复制: 二、主从复制实验 1、mysql 时间同步 1.1 主服务设置被同步的时间 1.2 两台从服务器设置时间同步(两台服务器一样配置&am…

MySQL基础1——DDL、DML、DQL及DCL的相关概念和操作

MySQL中DDL、DML、DQL及DCL的相关概念和操作 一. SQL通用语法二. SQL分类1. DDL(Data Definition Language)1.1 查询1.1.1 查询所有数据库1.1.2 查询当前数据库1.1.3 查询当前数据库所有表1.1.4 查询表结构1.1.5 查询指定表的建表语句 1.2 创建1.2.1 创建数据库1.2.2 …

【Web】vue开发环境搭建教程(详细)

系列文章 C#底层库–记录日志帮助类 本文链接:https://blog.csdn.net/youcheng_ge/article/details/124187709 文章目录 系列文章前言一、安装准备1.1 node.js1.2 国内镜像站1.3 Vue脚手架1.4 element ui1.5 Visual Studio Code 二、安装步骤2.1 下载msi安装包2.2 …

【考研数学】高等数学第五模块 —— 级数(1,常数项级数)

文章目录 引言一、常数项级数1.1 基本概念1.2 基本性质1.3 两个重要级数1.3.1 p 级数1.3.2 几何级数 1.4 正项级数及其敛散性判断1.5 交错级数及其审敛法1.6 级数的绝对收敛与条件收敛 写在最后 引言 来攻坚级数了,其实也不用这么畏难,几年前刚接触时没…

【力扣每日一题】2023.9.5 从两个数字数组里生成最小数字

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们两个数字数组,要我们用这两个数组里的元素组成一个数字,这个数字里需要同时拥有两个数组里的至少一个元…

10个最强大的基于生成式AI的3D建模工具

推荐:用 NSDT编辑器 快速搭建可编程3D场景 在快速发展的技术世界中,人工智能 (AI) 已经改变了游戏规则,尤其是在 3D 对象生成领域。 AI 驱动的 3D 对象生成器彻底改变了我们创建和可视化 3D 模型的方式,使该过程更加高效、准确且可…

Bigemap如何添加历史影像

工具 Bigemap gis office地图软件 BIGEMAP GIS Office-全能版 Bigemap APP_卫星地图APP_高清卫星地图APP 打开软件,然后点击选择地图这个按钮,列表中有个添加按钮点进去选择添加地图的方式。 ​ 第一种方式:通过地图配置文件批量解析添加地…

ipad触控笔是哪几款?开学季平价电容笔推荐

许多人已经开始用iPad写字和画画了。而且现在的iPad,偏重于实用性,他们认为,要让iPad更加的实用,必须要有一个好的电容笔才行。事实上,如果你仅仅是想要用它来做笔记的话,有许多的平替的电容笔,…

Shell常用的几个正则表达式:[:alnum:], [:alpha:], [:upper:], [:lower:], [:digit:] 认知

一:通配符命令简介: 匹配符合相关条件的符号,匹配文件名查找。 通配符类型: *:匹配任意长度的任意字符 ?:匹配任意单个字符 []:匹配指定范围内的任意单个字符 [^]:匹配指…

Odoo|5分钟创建自定义的业务系统唯一序列号

在业务操作中,经常会遇到需要生成全局唯一序列号数据的情况,比如订单号、报价单号等。为了确保数据的唯一性和准确性,通常我们会使用Redis或其他分布式锁机制来实现。然而,很多人可能不知道,odoo框架本身提供了一个原生…

各种工具集锦(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 用LLM(大规模预训练语言模型)或者说AI的,特见我写的这篇博文:在线LLM应用集锦(持续更新ing…) 本篇博文不会重复该博文中写过的内容。 文章目录 1. 视频制作1. 视频剪辑软件…

CVE-2023-3450:锐捷 RG-BCR860 命令执行漏洞复现

锐捷 RG-BCR860 命令执行漏洞(CVE-2023-3450)复现 0x01 前言 本次测试仅供学习使用,如若非法他用,与本文作者无关,需自行负责!!! 0x02 漏洞描述 Ruijie Networks RG-BCR860是中国锐捷网络(R…

标绘一张图系统

一、概况 智慧武装三维电子沙盘是一种结合了智能技术和虚拟现实技术的沙盘模拟系统。它通过使用三维投影技术和交互式触控技术,将实际战场的地形、建筑物、人员等元素以虚拟的形式呈现在沙盘上。 智慧武装三维电子沙盘可以实时获取各种战场数据,并通过智…

python数据分析基础—取某列字符的前几个字符

文章目录 前言取某列前几个字符方法一:[x[:7] for x in data["calling_nbr"]]方法二:data[calling_nbr].str[:7] 前言 在进行数据分析时,有时候我们需要提取单列的前几个字符串进行分析。本文主要讲述针对这种情况处理方法。 取某…

工业互联网龙头企业研祥智能加入 openKylin

导读近日,研祥智能科技股份有限公司(以下简称 “研祥智能”)签署 openKylin 社区 CLA(Contributor License Agreement 贡献者许可协议),正式加入 openKylin 开源社区。 研祥智能于 1993 年 12 月 31 日成立…

mysql建表考虑那些,怎么建

在使用MySQL进行数据库建表时,需要考虑以下几点: 1 数据库设计 在建表前,需要进行数据库设计,包括确定数据库的名称、表的数量、表之间的关系等,这是建表的前提。 2 表的命名规范 建表时需要注意表名的命名规范&am…

基于SpringBoot的Web开发案例过程讲解-项目准备

基于SpringBoot的Web开发案例过程笔记-项目准备 1)环境搭建【1】准备数据库表【2】创建Springboot项目并引入相关依赖【3】配置application.properties文件【4】创建相关的包和类 2) 三层架构工作流程3)开发规范-Restful4)相关的注解5)项目开…

【数据结构与算法】栈

文章目录 前言一:基本概念1.1 介绍1.2 入栈和出栈示意图1.3 栈的应用场景 二:使用数组模拟栈2.1 思路分析2.2 代码实现2.3 测试 三:使用栈模拟中缀表达式计算器3.1 整体思路3.2 验证32*6-2133.2.1 定义栈3.2.2 返回运算符的优先级3.2.3 判断是…

如何通过Instagram群发消息高效拓展客户?

之前小S有跟大家说过关于独立站+Instagram如何高效引流,发现大家都对Instagram的话题挺关注的。Instagram作为全球最受欢迎的社交媒体之一,对于许多商家和营销人员来说,Instagram是一个不可忽视的营销平台,他们可以通过…

痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.3)- 串行NOR Flash下载算法(J-Link工具篇)

https://www.cnblogs.com/henjay724/p/13770137.html 大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是J-Link工具下i.MXRT的串行NOR Flash下载算法设计。 在i.MXRT硬件那些事系列之《在串行NOR Flash XIP调试原理》一文中,痞…