jmeter和性能测试

news2024/11/19 19:39:47

一。性能测试的概念

1.性能:就是软件质量属性中的 效率 特性
2.效率特性:
        时间特性:指系统处理用户请求的响应时间
        资源特性:指系统在运行过程中,系统资源的消耗情况
                                CPU
                                内存
                                磁盘IO(磁盘的写入Input和读取 Output ,简称 IO

3.什么是性能测试?

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

        1. 后台处理程序的性能(代码性能)
        2. 中间件、数据库、架构设计等是否存在瓶颈
        3. 服务器资源消耗( CPU 、内存、磁盘、网络)
        中间件:是提供系统软件和应用软件之间连接的软件。如:Tomcat Apache...
4.性能测试目的
        1. 评估当前系统能力
                - 例如:验收第三方提供的软件
                - 例如:获取关键的性能指标,与其他类似产品进行比较
        2. 寻找性能瓶颈,优化性能
        3. 评估软件是否能够满足未来的需要
5.性能测试与功能测试
        区别:
                功能测试:验证软件系统操作功能是否符合产品功能需求规格,主要焦点在功能(正向、逆向);
                性能测试:验证软件系统是否满足业务需求场景,主要焦点是业务场景的满足(时间、资源 )
        关系:
                功能测试和性能测试是相辅相成的,对于一款优秀的软件产品来讲,它们是不可减少的2个重要测试环节;
                注意:一般新项目中, 先功能测试通过后,再进行性能测试。

二。性能测试的策略

性能测试的种类:

        1.基准测试

        2.负载测试

        3.稳定性测试

        4.其他:并发测试,压力测试,容量测试

1.基准测试:

        狭义上讲:也是单用户测试,测试环境确定以后,对业务模型中的重要业务做单独的测试,获取单用户运行时的各项性能指 标。(进行基础的数据采集)
        广义上讲:是一种测量和评估软件性能指标的活动。你可以在某个时刻通过基准测试建立一个已知的性能水平(称为基准 线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性能的影响。
基准测试数据的用途:
        1. 为多用户并发测试和综合场景测试等性能分析提供参考依据
        2. 识别系统或环境的配置变更对性能响应带来的影响
        3. 为系统优化前后的性能提升/下降提供参考指标
2.负载测试
        说明:通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统的性能指标情况下,系统所能够承受的最大负载量 的测试。
        负载:指向服务器发送的请求数量,请求越多,负载越高
        注意:负载测试关注的重点是逐步增加压力
3.稳定性测试
        说明:稳定性测试是指,在服务器稳定运行(用户正常的业务负载下)的情况下进行长时间测试,并最终保证服务器能满足线上 业务需求。时长一般为1 天、一周等
4.其他测试策略
性能测试中,测试策略其实有很多种,但是掌握基础的用法后,其他不同名称的测试策略只是基础用法的一个变形用法。
        a.并发测试:并发测试是指在极短的时间内,发送多个请求,来验证服务器对并发的处理能力。如:抢红包、抢购、秒杀活动 等。
        b.压力测试:压力测试是在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而 有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24 小时 以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。
        c.容量测试:关注软件的极限压力下的各个极限参数值,例如:最大TPS ,最大连接数,最大并发数,最多数据条数等。

三。性能测试指标

指标: 一些经过运算得出的结果,来衡量某种操作性能统称;比如:错误率 0.5%
性能指标
        1. 响应时间
        2. 并发数
        3. 吞吐量
        4. 点击数
        5. 错误率
        6. 资源利用率
        7. PV和 UV
1.响应时间:
        说明:响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的结果,整个过程所耗费的时间。
        组成: 响应时间 = 网络时间 + 应用程序处理时间
2.并发数:
        说明:并发测试的用户数
        扩展:
                系统用户数:系统注册的总用户数据
                在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求
                并发用户数:某一物理时刻同时向系统提交请求的用户数
3.吞吐量
        说明:吞吐量(Throughput )指的是单位时间内处理的客户端请求数量,直接体现软件系统的性能承载能力
        注意:
        1. 从业务角度来看,吞吐量也可以用 业务数 / 小时 业务数 / 访问人数 / 页面访问量 / 来衡量
        2. 从网络角度来看,还可以用 字节数 / 小时 字节数 / 等来衡量网络的流量
        3. 从技术指标来看,可以用每秒事务数( TPS )和每秒查询数( QPS )来衡量服务器具体性能处理能力
4.TPS
        说明:Transactions Per Second ,每秒事务数 ( 单位时间内系统处理的客户端请求的事务次数 )
        计算:TPS = 并发数 / 平均响应时间
        事务:就是业务请求,对应一个或者多个操作。如支付请求,包括服务器查询用户余额,支付安全校验等多个操作。 一个业务请 求发送给服务器后,最终会定位到服务器对应的业务请求的代码,既有可能是一段代码也有可能是多段代码。
        TPS归属吞吐量

四。性能测试流程

        1. 性能测试需求分析
        2. 性能测试计划及方案
        3. 性能测试用例
        4. 测试脚本编写 / 录制
        5. 建立测试环境
        6. 执行测试脚本
        7. 性能测试监控
        8. 性能分析和调优
        9. 性能测试报告总结
        提示:使用不同的性能测试工具时,主要流程是不变的
1.性能需求分析
        说明:性能需求分析是整个性能测试工作开展的基础,性能需求分析做的好不好直接影响到性能测试的结果。
        性能需求分析的目标:明确被测系统,测试内容,测试策略,测试指标
        
        1. 熟悉被测系统
                熟悉被测系统的业务功能
                熟悉被测系统的技术架构
        2. 明确性能测试内容
                a.从业务角度明确测试内容
                        确定关键业务。即:用户使用频率较高的业务功能
                b.从技术角度明确测试内容
                        如:通常逻辑复杂度较高的业务也是CPU密集运算较大的地方,考量服务器CPU                                   在预定性能指标下是否达标
                        如:通常数据量较大的业务很占用系统内存,考量服务器内存在预定性能指标下                                     是否达标
        3. 明确性能测试策略
                负载测试
                稳定性测试
                并发测试
        4. 明确性能测试的指标
                a.无明确需求指标
                   通过查找相关资料,和类似的系统对比,以及对未来流量的预估,确定性能测试需求的指标
                b.有明确需求指标
                           例如,类似如下指标
                        下订单业务并发20个用户
                        平均响应时间要小于等于3s
                        事务成功率为100%
                        CPU使用率小于等于85%
                      只需要根据执行分析结果与预期指标做对比,如果有不满足的,就需要分析问题所在
2.性能测试计划及方案
        说明:性能测试实施第一份文档,也是最重要的一份文档。
        主要内容:
                1. 项目背景
                2. 测试目的
                3. 测试范围
                4. 测试策略
                5. 风险控制
                6. 交付清单
                7. 进度与分工
3.性能测试用例

4.测试脚本编写和录制
说明:性能测试用例编写完成以后,接下来就需要结合用例的需要,进行测试脚本的编写工作。
提示:录制或编写,根据不同的工具要注意代码冗余。
5 建立测试环境
说明:在进行性能则试之前,需要先完成性能测试环境的搭建工作,测试环境一般包括硬件环境、软件环境及网络环境
提示:一般情况下可以要求运维和开发工程师协助完成
6.执行测试脚本
说明:先保证脚本调试通过之后,才能进入正式压测阶段
执行测试脚本时,要先进行性能运行场景的设置,再运行脚本
7.性能测试监控
性能监控就是监控服务器的各项性能指标。例如:监控 CPU 、内存、网络、 TPS 、磁盘 IO
8.性能分析和调优
说明:性能测试分析人员经过对结果的分析以后,有可能提出系统存在性能瓶颈。
提示:
        1. 调优人员 ( 开发人员、数据库管理员、系统管理员、网络管理员、性能测试分析人员 ) 相关人员对系统进行调整 ;
        2. 验证 - 性能测试人员继续进行第二轮、第三轮 …… 的测试,与以前的测试结果进行对比,从而确定经过调整以后系统的性能是 否有提升。
注意 :
        系统调优由易到难的先后顺序如下:
                1. 硬件问题
                2. 网络问题
                3. 应用服务器、数据库等配置问题
                4. 源代码、数据库脚本问题
                5. 系统构架问题
9 .性能测试报告总结
性能测试总结要包含以下内容:
1. 性能测试需求覆盖情况,测试过程回顾,及测试中出现的问题(如何去分析、调优、解决的) --- 基本要求
2. 性能测试过程中遇到各类风险是如何控制的 ; 目前是否还有其他的性能风险存在
3. 经过该项目性能测试后,有那些经验和教训等内容
五。性能测试工具
1. 主流性能测试工具
        LoadRunner
        JMeter 
1.1 LoadRunner
        HP LoadRunner是一种工业级标准性能测试负载工具,可以模拟上万用户实施测试,并在测试时可实时检测应用服务器及服 务器硬件各种数据,来确认和查找存在的瓶颈
       支持多协议:Web(HTTP/HTML) Windows Sockets FTP ODBC MS SQL Server 等协议
最初是 Mercury 公司采用 C 语言编写 , 现被 HP 公司收购
优点:
        1. 多用户(支持数量单位万)
        2. 详细分析报表
        3. 支持 ip 欺骗
缺点:
        1. 收费
        2. 体积庞大(单位 GB
        3. 无法定制功能
1.2 JMeter
        JMeter是 Apache 组织开发的基于 Java 的开源软件,用于对系统做功能测试和性能测试。
它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域,例如静态文件、 Java 程序、 shell 脚本、数据库、 FTP 、 Mail等。
优点:
        1. 免费
        2. 开源
        3. 小巧(最新版 -50MB 左右)
        4. 丰富学习资料及扩展组件
        5. 应用广泛
        6. 易上手
缺点:
        1. 不支持 ip 欺骗
        2. 分析和报表能力相对于 lr 欠缺精度

六。Jmeter

1. JMeter文件目录介绍
1.1 bin 目录
存放可执行文件和配置文件
jmeter.bat windows 的启动文件
jmeter.log :日志文件
jmeter.sh linux 的启动文件
jmeter.properties :系统配置文件
jmeter-server.bat windows 分布式测试要用到的服务器配置
jmeter-serve linux 分布式测试要用到的服务器配置
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 文件,把第 37 行修改为 “language=zh_CN”
重启 JMeter 即可
19 2.2 修改主题
JMeter 默认主题是黑色的,可以通过以下步骤修改:
启动 JMeter -> 选择菜单 选项 ’ -> 外观 -> Windows( 选择自己喜欢的主题即可 )
2.JMeter元件作用域和执行顺序
2.1元件的基本介绍
        元件:多个类似功能组件的容器(类似于类)。
        常见的元件类型有:
                1. 取样器
                2. 逻辑控制器
                3. 前置处理器
                4. 后置处理器
                5. 断言
                6. 定时器
                7. 测试片段
                8. 配置元件
                9. 监听器
                组件:实现独立的某个功能(类似于方法)
2.2元件作用域
JMeter 中,元件的作用域是靠测试计划的树形结构中元件的父子关系来确定的。
提示 : 核心是取样器,其他组件都是以取样器为核心运行的,组件添加的位置不同,生效的取样器也不同。
作用域的原则
        1. 取样器:元件不和其他元件相互作用,因此不存在作用域的问题 ;
        2. 逻辑控制器:元件只对其子节点中的取样器和逻辑控制器作用 ;
        3. 其他六大元件:除取样器和逻辑控制器元件外,如果是某个取样器的子节点,则该元件对其父子节点起作用;
        4. 如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等);
2.3. 元件执行顺序
        1. 配置元件 (config elements)
        2. 前置处理程序 (Per-processors)
        3. 定时器 (timers)
        4. 取样器 (Sampler)
        5. 后置处理程序 (Post-processors)
        6. 断言 (Assertions)
        7. 监听器 (Listeners)
提示 :
        1. 前置处理器、后置处理器、断言等元件功能对取样器起作用(如果在它们的作用域内没有任何取样器,则不会被执行)
        2. 如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行

七。Jmeter使用示例

八。Jmeter参数化

九。Jmeter断言

十。Jmeter关联

十一。Jmeter录制脚本

十二。Jmeter直连数据库

十三。Jmeter逻辑控制器

十四。Jmeter定时器

十五。Jmeter分布式测试

十六。Jmeter测试报告

十七。Jmeter性能测试常用图表

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

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

相关文章

鸡群优化(CSO)算法(含MATLAB代码)

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年…

TCP VS UCP

程序员写网络程序,主要编写的应用层代码! 真正要发这个数据,需要上层协议调用下层协议,应用层要调用传输层,则传输层给应用层提供一组api,统称为:soket api 基于UDP的api 基于TCP的api 这两个协…

Godot 初学

前言 因为9月份 Unity一顿安装计费的骚操作,导致世界开发者对于Unity 随意修改开发条例,追溯之前开发游戏版本感到愤怒。Unity是全球游戏使用率超过50%的引擎,Unity和Unreal是最主流的第三方游戏引擎。除非你是大厂可以自研引擎,…

阿里云服务器活动价格及配置整理表(多配置报价)

2023年阿里云服务器租用费用,阿里云轻量应用服务器2核2G3M带宽轻量服务器一年108元,2核4G4M带宽轻量服务器一年297.98元12个月,CS云服务器e系列2核2G配置182元一年、2核4G配置365元一年、2核8G配置522元一年,阿里云u1服务器2核4G、…

复习Day11:链表part04: 206. 反转链表、92. 反转链表II、25. K 个一组翻转链表、148. 排序链表

我用的方法是在leetcode再过一遍例题,明显会的就复制粘贴,之前没写出来就重写,然后从拓展题目中找题目来写。辅以Labuladong的文章看。然后刷题不用CLion了,使用leetcode自带的IDE模拟面试环境。 哈希表章节的题目思路很清晰&…

Java多线程之等待唤醒机制及案例代码演示

生产者和消费者(等待唤醒机制) 等待唤醒机制常见方法代码演示等待唤醒机制(阻塞队列方式实现)额外扩展 等待唤醒机制 生产者和消费者是一个十分经典的多线程协作模式 举个小栗子来说明一下消费者和生产者的等待唤醒过程: 常见方法 void wait() 当前…

因为计算机中找不到mfc140.dll无法启动修复步骤分享

mfc140.dll是Microsoft Foundation Class Library(微软基础类库)的一个组件,它是许多Windows应用程序(尤其是使用MFC编写的程序)所必需的动态链接库。MFC(Microsoft Foundation Classes)是一个用…

Pytorch笔记之分类

文章目录 前言一、导入库二、数据处理三、构建模型四、迭代训练五、模型评估总结 前言 使用Pytorch进行MNIST分类,使用TensorDataset与DataLoader封装、加载本地数据集。 一、导入库 import numpy as np import torch from torch import nn, optim from torch.uti…

10.5汇编语言整理

【汇编语言相关语法】 1.汇编语言的组成部分 1.伪操作:不参与程序的执行,但是用于告诉编译器程序该怎么编译 .text .global .end .if .else .endif .data 2.汇编指令 编译器将一条汇编指令编译成一条机器码,在内存里一条指令占4字节内存&…

c++---模板篇

1、模板 概念:模板就是建立通用的模具,大大提高复用性 特点: 模板不可以直接使用,它只是一个框架模板的通用并不是万能的 1.1、函数模板 C另一种编程思想称为泛型编程,主要利用的技术就是模板C提供两种模板机制&a…

数据结构与算法(四):哈希表

参考引用 Hello 算法 Github:hello-algo 1. 哈希表 1.1 哈希表概述 哈希表(hash table),又称散列表,其通过建立键 key 与值 value 之间的映射,实现高效的元素查询 具体而言,向哈希表输入一个键…

Linux CentOS7 vim宏操作

vim的macro就是用来解决重复的问题。在vim寄存器的文章里面已经对macro有所涉及,macro的操作都是以文本的方式存放在寄存器中。 宏是一组命令的集合,应用极其广泛,包括MS Office中的word编辑器,excel编辑器和各种文本编辑器&…

Pytorch笔记之回归

文章目录 前言一、导入库二、数据处理三、构建模型四、迭代训练五、结果预测总结 前言 以线性回归为例,记录Pytorch的基本使用方法。 一、导入库 import numpy as np import matplotlib.pyplot as plt import torch from torch.autograd import Variable # 定义求…

ESP32/ESP8266在线刷写Sonoff Tasmota固件以及配置简要

ESP32/ESP8266在线刷写Sonoff Tasmota固件以及配置简要 📍原项目Github地址:https://github.com/arendst/Tasmota/tree/v13.1.0📑官方文档介绍:https://tasmota.github.io/docs/🚩(✨推荐方式✨)在线固件刷写地址&…

strcpy函数详解:字符串复制的利器

目录 一,strcpy函数的简介 二,strcpy函数的实现原理 三,strcpy函数的注意事项 四,strcpy函数的模拟实现 一,strcpy函数的简介 strcpy函数是C语言中的字符串复制函数,其原型如下: char * str…

Linux中的wc命令

2023年10月6月,周五晚上 目录 wc命令的主要功能和用法如下:统计文件行数、字数和字节数只统计行数只统计字数只统计字节数 wc命令在Linux/Unix系统中是word count的缩写,它用来统计文件的行数、字数和字节数。 wc命令的主要功能和用法如下: 统计文件行数、字数和字…

英语四六级高频核心词(故事版)

第一组:" A Century of Community Effort to Improve Quality of Life and Climate" In the early years of the 20th century, a small community found itself facing a decade of challenges. The most pressing issue was the mental quality of life…

VSC-HVDC直流输电matlab仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) VSC-HVDC直流输电仿真,换流站采用两电平结构,全控型器件(IGBT),采用双环控制,包括电压外环,电流内环,分为d、q两…

【论文阅读】An Evaluation of Concurrency Control with One Thousand Cores

An Evaluation of Concurrency Control with One Thousand Cores Staring into the Abyss: An Evaluation of Concurrency Control with One Thousand Cores ABSTRACT 随着多核处理器的发展,一个芯片可能有几十乃至上百个core。在数百个线程并行运行的情况下&…

Springboot+vue的开放性实验室管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的开放性实验室管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的开放性实验室管理系统,采用M&#xff08…