当前位置: 首页 > web >正文

【JMeter】性能测试知识和工具

目录

何为系统性能

何为性能测试

性能测试分类

性能测试指标

性能测试流程

性能测试工具:JMeter(主测web应用)

jmeter文件目录

启动方式

基本元件:元件内有很多组件

jmeter参数化

jmeter关联

自动录制脚本

直连数据库


何为系统性能

时间:系统处理用户请求的响应时间

资源:系统运行时消耗的资源

何为性能测试

定义

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

目的

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

性能测试分类

基准测试

作用:设定标准线,当系统的软硬件发生变化时就进行比对

用途:多用户并发,综合场景,优化前后性能变化

负载测试

作用:在满足各项性能指标下系统同时能到到的最大用户数量

用途:主要测高负载下系统资源消耗

稳定性测试

作用:一定数量的用户负载下系统能稳定运行的时间

压力测试

作用:在强负载的情况下,在系统处于峰值情况下是否有功能隐患,以及是否具有良好的容错能力和可恢复能力

场景: 极限负载下的破坏性压力测试 ;高负载下的长时间稳定性测试

并发测试

作用:短时间处理多个请求,测试系统并发处理能力

场景:主要测并发时资源的争抢问题

性能测试指标

响应时间

定义:发送请求开始到接受响应为止,不包括网页的渲染等

并发用户数

定义:同一时间发送的请求的用户数

吞吐量

定义:单位时间内客户端的请求数量

指标:QPS:每秒的请求数量;TPS:每秒的事务请求数量

点击率

定义:在页面点击后的请求数

错误率

定义:在高负载下的失败业务概率

资源利用率

定义:各个资源的使用情况

指标:

  • CPU使用率:不高于75%-85%
  • 内存(大小):<80%
  • 磁盘(速率):<90%
  • 网络(速率):<80%

性能测试流程

性能测试需求分析

  • 明确被测系统的业务功能和技术架构
  • 明确测试内容:高频使用的业务功能,逻辑复杂度高的业务,数据量大的业务
  • 明确测试类型
  • 明确测试指标

性能测试计划及方案

  • 测什么:项目背景,测试目的,测试范围
  • 谁来测:进度与分工。交付清单
  • 怎么测:测试策略

性能测试用例设计

性能测试执行

建立测试环境,编写测试脚本, 性能测试监控,执行测试脚本

性能分析和调优

性能测试报告总结

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

性能测试工具:JMeter(主测web应用)

jmeter文件目录

bin目录

作用:存放可执行文件和配置文件

docs目录

  • 是JMerer的api文档,用于开发扩展组件
  • API文档路径:apache-jmeter-5.6.3\docs\api\index.html

printable_doce目录

  • 用户帮助手册
  • 用户手册路径:apache-jmeter-5.6.3\printable_docs\usermanual\index.html

lib目录

作用:存放jmeter依赖的jar包和用户扩展所依赖的jar包

启动方式

找到jmeter的安装文件,在此目录下进入输入cmd,打开命令提示符,输入jmeter进入

基本元件:元件内有很多组件

元件

配置元件:初始化测试数据

前置处理器:对请求的操作

定时器:

  • 同步定时器:累计一定的请求量后一起发

  • 常数吞吐量定时器

  • 固定定时器:必须添加在需要等待的HTTP请求的子节点下

取样器:

  • HTTP请求

后置处理器:

  • 对响应的操作

断言:

  • 响应断言

  • JSON断言

  • 持续时间断言:指响应时间

监听器:

  • 查看结果树:查看请求信息和响应信息
  • 聚合报告:查看性能指标

逻辑控制器:

  • IF控制器

  • 循环控制器:控制器是可控制部分元件的执行次数和方式 ;线程组是控制全部元件的执行次数
  • ForEach控制器

线程组:

  • 定义:控制用于执行测试的一组用户
  • 属性:

  • 分类:
    • Setup线程组:预测试操作,所有脚本之前执行

    • 普通线程组:执行测试用例,可以有1个或者多个(并行/串行—在测试计划下设置)

    • Teardown线程组:测试后操作,所有脚本之后执行

元件的加载顺序

  • 有几个取样器,整个线程组就要加载几次
  • 每个取样器加载的顺序是父级元件-同级元件-子级元件
  • 样例:

jmeter参数化

定义全局变量

  • 前置处理器->用户定义的变量

用户参数

  • 前置处理器->用户变量        

文件方式参数化

  • 配置元件->CSV Data Set Config

函数

  • count函数:线程组的用户设为n个,循环可获不同的参数值

jmeter关联

存在依赖关系,一个请求的入参是另一个请求的出参

方法:在前一个请求的后置处理器提取参数,在后一个请求里以变量的形式使用

  • 正则表达式提取器

  • Xpath提取器

  • JSON提取器

  • 跨线程的关联

自动录制脚本

原理:在主机向服务端发送请求时经jmeter复刻一份

组件:测试计划(右键)->非测试元件->HTTP脚本记录器

步骤:

  • 1.配置脚本记录器的参数

  • 2.开启windows操作系统的浏览器代理

  • 3.启动脚本记录器

直连数据库

步骤:

添加MySQL驱动jar包

方式一:在测试计划面板点击“浏览…“按钮,将你的JDBC驱动添加进来—本脚本可用

方式二:将MySQL驱动jar包放入到lib/ext目录下,重启JMeter—所有脚本可用

配置数据库连接信息

添加方式:测试计划 --> 线程组--> (右键添加) 配置元件 --> JDBC Connection Configuration

添加JDBC请求

添加方式:取样器->JDBC Request

http://www.xdnf.cn/news/10401.html

相关文章:

  • ARM P15协处理器指令详解:架构、编程与应用实践
  • Spark on Hive表结构变更
  • 2024年数维杯国际大学生数学建模挑战赛A题飞行器激光测速中的频率估计问题解题全过程论文及程序
  • flutter 构建报错Unsupported class file major version 65
  • Java高效处理大文件:避免OOM的深度实践
  • 大语言模型的推理能力
  • 现代前端框架的发展与演进
  • Spring AI调用Ollama+DeepSeek
  • 链表题解——合并两个有序链表【LeetCode】
  • Linux系统开机自启动配置
  • 如何将内网的IP地址映射到外网?详细方法与步骤解析
  • Tomcat优化篇
  • 小白的进阶之路系列之九----人工智能从初步到精通pytorch综合运用的讲解第二部分
  • IDEA,Spring Boot,类路径
  • Vue框架2(vue搭建方式2:利用脚手架,ElementUI)
  • SQL注入攻击的方法与预防
  • 神经网络-Day42
  • 量化面试绿皮书:1. 海盗分金博弈
  • 【C/C++】面试常考题目
  • (面试)获取View宽高的几种方式
  • vim 的基本使用
  • 华为深度学习面试手撕题:手写nn.Conv2d()函数
  • C++: STL简介与string类核心技术解析及其模拟实现
  • vue3动态路由的实现以及目录权限的设置
  • Eclipse 修改字符集
  • [Godot] 如何导出安卓 APK 并在手机上调试
  • 【金融基础学习】债券市场与债券价值分析
  • ck-editor5的研究 (3):初步使用 CKEditor5 的事件系统和API
  • Mac电脑上本地安装 MySQL并配置开启自启完整流程
  • 历史数据分析——广州港