掌握高效性能测试技能:JMeter基础入门!

news2025/1/17 9:05:43

一、JMeter基础

A、JMeter介绍

Apache JMeter是Apache组织开发的基于Java的压力测试工具。

Apache JMeter may be used to test performance both on static and dynamic resources (files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers and more). It can be used to simulate a heavy load on a server, network or object to test its strength or to analyze overall performance under different load types. You can use it to make a graphical analysis of performance or to test your server/script/object behavior under heavy concurrent load.

用于对软件做压力测试,最初被设计用于web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java服务程序、CGI脚本、Java对象、数据库、FTP服务器等等。

JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序是否返回期望的结果。

B、JMeter特点

关注点:工具成本(license);学习成本;生命力;跨平台。

JMeter开源、轻量级、适合自动化测试和持续集成。

  1. 能够对HTTP、数据库服务器进行压力和性能测试
  2. 开源,使用Java编写,跨平台
  3. 多线程框架,允许通过多个线程并发取样
  4. 提供负载统计表
  5. 提供可拓展性(插件)

C、JMeter安装

  • JMeter官网 - http://jmeter.apache.org/
  • JMeter下载地址 - http://jmeter.apache.org/download_jmeter.cgi
  • JMeter最新版本 - Apache JMeter 5.1.1 (Requires Java 8+)
  • JMeter执行文件和源文件集合 - https://archive.apache.org/dist/jmeter/

D、JMeter目录介绍

bin:可执行文件目录

  • examples:CSVSample
  • jmeter.bat:Windows下的启动文件
  • jmeter.log:日志文件
  • jmeter.sh:Linux下的启动文件
  • jmeter.properties:系统配置文件(常用)
    • sampleresult.default.encoding=UTF-8
    • language=en
  • jmeter-server.bat:Windows分布式服务器端

docs:文档目录

extras:扩展插件目录

lib:jar包,JMeter会自动在lib和ext目录下寻找需要的类

lib目录下的ext子目录是jmeter的核心jar包;用户扩展所依赖的包不能直接放到lib下,需要放到lib/ext下

PS:无法识别zip格式的包文件,包文件均要求以.jar结尾。

printable_docs:usermanual子目录下是JMeter用户手册,component_reference.html是最常用的核心元件帮助手册

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

二、JMeter体系结构

整体来讲JMeter主要由四部分组成:

  • 模拟
  • 验证
  • 收集结构
  • 负责周边

A、模拟部分:取样器、配置元件、控制器、定时器、前置处理器、后置处理器、线程组

线程组用来建立线程池,多线程运行其他模拟、断言、监听部分;

配置元件用来做一些数据准备,通用请求准备,如设置一些默认值HTTP请求;

控制器用来处理逻辑关系,如循环、分支、交替、事务等;

定时器用于处理思考时间、集合点、随机时间等工作;

前置处理器用来对请求前的数据进行处理,如JDBC请求前的数据准备等;

后置处理器用来对请求返回后的数据进行处理,如关联。

B、验证部分:断言

断言是测试的精髓,用于判断返回值与预期是否一致。

C、收集和展示部分:监听器

监听器用来收集数据和展示数据,如测试结果等。

D、周边部分:工作台

可以放置备用元件、抽象的模块等。

E、JMeter分布式运行原理图

F、JMeter测试计划

测试计划是用来管理整个测试的,计划和线程组都可以理解为容器,是用来放东西的。测试计划可以用来管理测试套、测试工程、测试包等。一个测试计划至少一个包括:1个测试计划、1个以上线程组、1个以上取样器、1个以上监听器。

三、JMeter基本开发流程

JMeter工作区主要为元件树、编辑区、菜单及工具区。

A、JMeter脚本录制方法

1、录制方法一 - Badboy录制

  • 使用Badboy录制脚本,录制、参数化、检查点、回放。
  • 导入Badboy脚本,从BadboyFile菜单中导出JMeter脚本,使用JMeter直接打开。
  • 脚本增强,添加查看结果树监听器让执行结果可见。

修正断言,断言可能在超级链接、HTML元素大小写变化等方面会发生变化,需要回复修正,用于增强JMeter测试计划可读性。

2、录制方法二 - JMeter录制

1).JMeter配置代理录制,非测试元件->HTTP代理服务器,配置代理,启动。

2).为浏览器配置代理

3).网页端操作

3、录制的缺点

  • JMeter录制会有很多干扰
  • 对于使用动态加载方式(Ajax+JS+JSON)来出来的结果,JMeter处理的不好
  • JMeter调试,添加监听器->查看结果树

{
    "paging": {
        "is_end": true,
        "totals": 1,
        "previous": "https://www.zhihu.com/members/isisiyu/followees?include=data%5B%2A%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F%28type%3Dbest_answerer%29%5D.topics&limit=20&offset=0",
        "is_start": true,
        "next": "https://www.zhihu.com/members/isisiyu/followees?include=data%5B%2A%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F%28type%3Dbest_answerer%29%5D.topics&limit=20&offset=20"
    },
    "data": [
        {
            "is_followed": false,
            "avatar_url_template": "https://pic3.zhimg.com/v2-a6d6098f23bf16f13b32ab78a2b8e68e_{size}.jpg",
            "user_type": "people",
            "answer_count": 0,
            "is_following": false,
            "url": "https://www.zhihu.com/people/681c946bd6663b43149cf446f2d8a253",
            "type": "people",
            "url_token": "isisiwish",
            "id": "681c946bd6663b43149cf446f2d8a253",
            "articles_count": 151,
            "name": "isisiwish",
            "headline": "",
            "gender": 1,
            "vip_info": {
                "is_vip": true,
                "vip_icon": {
                    "night_mode_url": "https://pic3.zhimg.com/50/v2-c9686ff064ea3579730756ac6c289978_r.png",
                    "url": "https://pic2.zhimg.com/50/v2-034fefe15c83232cb448718998719d34_r.png"
                }
            },
            "is_advertiser": false,
            "avatar_url": "https://pic3.zhimg.com/v2-a6d6098f23bf16f13b32ab78a2b8e68e_is.jpg",
            "is_org": false,
            "follower_count": 74,
            "badge": []
        }
    ]
}

4、Firefox下导入证书

后续继续总结JMeter相关内容。

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

软件测试面试文档

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

在这里插入图片描述

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

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

相关文章

可视化NGINX管理平台Nginx Proxy Manager

# for CentOSyum install docker-compose -y# for Ubuntuapt-get install docker-compose -y 如果提示: 没有可用软件包 docker-compose, 错误:无须任何处理 通过 pip 安装 docker-compose # 添加企业版附加包 yum -y install epel-rel…

二次开发问题汇总【C#】

1未将对象引用到实例。 接口函数的参数不对。解决办法【用fixed去限制数组长度】 unsafe public struct VCI_BOARD_INFO {public UInt16 hw_Version;public UInt16 fw_Version;public UInt16 dr_Version;public UInt16 in_Version;public UInt16 irq_Num;public byte can_Num;…

【实战精选】掌握图像风格迁移:构建基于生成对抗网络的系统

1.研究背景与意义 随着计算机技术的不断发展,图像处理和计算机视觉领域取得了长足的进步。图像风格迁移是其中一个备受关注的研究方向,它可以将一幅图像的风格特征应用到另一幅图像上,从而创造出新的图像。这项技术具有广泛的应用前景&#…

分布式链路追踪入门篇-基础原理与快速应用

为什么需要链路追踪? 我们程序员在日常工作中,最常做事情之一就是修bug了。如果程序只是运行在单机上,我们最常用的方式就是在程序上打日志,然后程序运行的过程中将日志输出到文件上,然后我们根据日志去推断程序是哪一…

随笔记录-springmvc_ResourceHandlerRegistry+ResourceHttpRequestHandler

环境:springboot-2.7.5 配置文件配置静态资源映射 springboot配置静态资源映射方式是通过 WebMvcAutoConfiguration 实现的 spring: # resources: # # 自springboot 2.5.5之后,该属性已经被废弃,使用spring.web.resources.static-locat…

[Android]使用Git将项目提交到GitHub

如果你的Mac还没有安装Git,你可以通过Homebrew来安装它: brew install git 方式一:终端管理 1.创建本地Git仓库 在项目的根目录下,打开终端(Terminal)并执行以下命令来初始化一个新的Git仓库&#xff1…

红队攻防实战之钉钉RCE

我这一生如履薄冰,你说我能走到对岸吗? 本文首发于SecIN社区,原创作者即是本人 前言 网络安全技术学习,承认⾃⼰的弱点不是丑事。只有对原理了然于⼼,才能突破更多的限制。拥有快速学习能力的白帽子,是不…

【IEEE-TRANS】CCF-B类,IF:11+, 1区顶刊,无需版面费,最快2个月左右录用!

论文写作堪比西天取经,当我们经历“九九八十一难,取得真经“,还有最关键的一步,就是选刊发表。是“投石问路”,还是“投其所好”? 选刊有多重要,相信只要有过发表SCI经验的人都十分清楚。如果不…

Android设计模式--适配器模式

至诚之道,可以前知 一,定义 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式在我们的开发中使用率极高,ListView,GridView&am…

烫伤事件屡有发生,觅光推脱责任,称是用户操作失误

提及“双十一”“直播间”等关键词,人们常常将其与“低价”“薅羊毛”等字眼挂钩。而在近日,科技美容品牌AMIRO觅光(下称“觅光”)却上演了一出“反向薅羊毛”的戏码,因线上线下渠道相差超千元的价格差饱受争议。 自横…

Jackson无缝替换Fastjson

目录 文章目录 一,Fastjson到Jackson的替换方案方案代码序列化反序列化通过key获取某种类型的值类型替换 二,Springboot工程中序列化的使用场景三,SpringMVC框架中的Http消息转换器1,原理:2,自定义消息转换…

FinGPT:金融垂类大模型架构

Overview 动机 架构 底座模型: Llama2Chatglm2 Lora训练 技术路径 自动收集数据并整理 指令微调 舆情分析 搜新闻然后相似搜索 检索增强架构 智能投顾 Hugging face 地址 学术成果及未来方向 参考资料

Design Guidelines for 100 Gbps

文章目录 Stratix V GT Transceiver ChannelsCFP2 Host Connector Assembly and PinoutStratix V GT to CFP2 Interface Layout DesignBoard Stack Up DimensionsExample Design Channel PerformanceSimulation Results for Stratix V GT to CFP2 Connector Layout Design Desi…

使用 NVProf 检测 CUDA kernel 的 bank conflict

使用 NVProf 检测 CUDA kernel 的 bank conflict NVProf 指令 使用 NVProf 可以对 bank conflict 进行检测: nvprof --events shared_ld_bank_conflict,shared_st_bank_conflict <app> [args...]其中: --events 选项指定的 shared_ld_bank_conflict,shared_st_bank_c…

【Django使用】10大章31模块md文档,第5篇:Django模板和数据库使用

当你考虑开发现代化、高效且可扩展的网站和Web应用时&#xff0c;Django是一个强大的选择。Django是一个流行的开源Python Web框架&#xff0c;它提供了一个坚实的基础&#xff0c;帮助开发者快速构建功能丰富且高度定制的Web应用 全套Django笔记直接地址&#xff1a; 请移步这…

camera-caps:Jetson设备上的一种实用的V4L2可视化界面

camera-caps&#xff1a;Jetson设备上的一种实用的V4L2可视化界面 github地址是&#xff1a; https://github.com/jetsonhacks/camera-caps 注意&#xff1a;Jetpack5.x需要选择tag 5.x版本

【基础知识】AB软件RSLinx的版本说明

哈喽&#xff0c;大家好&#xff0c;我是雷工&#xff01; 之前对AB的软件了解比较少&#xff0c;在工作中未接触过&#xff0c;最近一次现场勘察时&#xff0c;有很多中控系统都是AB的&#xff0c;借此机会对AB软件有了些许了解。 一、RSLinx是什么软件&#xff1f; RSLinx是…

【LeetCode刷题-回溯】-- 46.全排列

46.全排列 方法&#xff1a;回溯法 一种通过探索所有可能的候选解来找出所有的解的算法&#xff0c;如果候选解被确认不是一个解&#xff0c;回溯法会通过在上一步进行一些变化抛弃该解&#xff0c;即回溯并且再次尝试 使用一个标记数组表示已经填过的数 class Solution {pu…

vue3自定义拖拽指令

<template><div v-move class"box"></div> </template><script setup lang"ts"> import { Directive } from vue const vMove:Directive (el:HTMLElement) >{const mousedown (e:MouseEvent) >{// 鼠标按下const s…

『 C++类与对象 』多态之单继承与多继承的虚函数表

文章目录 &#x1fae7; 前言&#x1fae7; 查看虚表&#x1fae7; 单继承下的虚函数表&#x1fae7; 多继承下的虚函数表 &#x1fae7; 前言 多态是一种基于继承关系的语法,既然涉及到继承,而继承的方式有多种: 单继承多继承棱形继承棱形虚拟继承 不同的继承方式其虚表的形…