jMeter学习

news2024/10/1 19:57:40

一. JMeter介绍

        1. 什么是JMeter?

        Apache JMeter™ 应用程序是开源软件,一个 100% 纯 Java 应用程序,旨在加载测试功能行为和测量性能 。它最初是为测试 Web 应用程序而设计的,但后来扩展到其他测试功能。

        2. JMeter能做啥?

         Apache JMeter 可用于测试静态和动态资源、Web 动态应用程序的性能。
        它可用于模拟服务器、服务器组、网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。      

Apache JMeter 功能包括:

  • 能够加载和性能测试许多不同的应用程序/服务器/协议类型:
    • Web - HTTP、HTTPS(Java、NodeJS、PHP、ASP.NET,...)
    • SOAP / REST Web 服务
    • FTP
    • 通过 JDBC 的数据库
    • LDAP
    • 通过 JMS 的面向消息的中间件 (MOM)
    • 邮件 - SMTP(S)、POP3(S) 和 IMAP(S)
    • 本机命令或 shell 脚本
    • TCP
    • Java 对象
  • 功能齐全的测试 IDE,允许快速记录测试计划(从浏览器或本机应用程序)、构建和调试
  • CLI 模式(命令行模式(以前称为 Non GUI)/无头模式) 可从任何 Java 兼容操作系统(Linux、Windows、Mac OSX 等)进行负载测试
  • 完整且 可随时呈现的动态 HTML 报告
  • 能轻松从最流行的响应格式 HTML  JSON 、 XML 或 任何文本格式 中提取数据
  • 完全的可移植性和 100% Java 纯度
  • 完整的多线程框架允许多个线程同时采样和不同线程组同时采样不同功能。
  • 缓存和离线分析/重放测试结果。
  • 高度可扩展的核心:
    • 可插拔采样器允许无限的测试能力。
    • 可编写脚本的采样器(与 Groovy 和 BeanShell 等 JSR223 兼容的语言)
    • 可以使用 可插入计时器 选择几个负载统计信息。
    • 数据分析和 可视化插件 允许很好的可扩展性和个性化。
    • 函数可用于为测试提供动态输入或提供数据操作。
    • 通过 Maven、Gradle 和 Jenkins 的 3 rd方开源库轻松实现持续集成。

3. 下载Apache JMeter

        下载地址:Apache JMeter - Download Apache JMeter

        安装要求:·       

  • JMeter是基于jdk运行的,因此要先安装java,java8或更高版本
  • JMeter默认以1GB的堆运行(可通过修改配置文件进行调整)

解压后,目录结构:

Jmeter bin目录文件讲解

  • jmeter.bat:: Windows启动文件
  • jmeter:Mac或者linux启动文件
  • jmeter-server:Mac或者Liunx分布式压测使用的启动文件
  • jmeter-server.bat::Windows分布式压测使用的启动文件
  • jmeter.properties::配置文件

4. 运行JMeter

要运行 JMeter,请运行 jmeter.bat(对于 Windows)或 jmeter(对于 Unix)文件。这些文件位于 bin 目录中。执行后,会出现JMeter GUI。

GUI 模式只能用于创建测试脚本,CLI 模式(非 GUI)必须用于负载测试

5. 中文设置

        方式一:控制台修改(临时性显示为中文,下次在打开Jmeter还是默认显示问英文):菜单栏 -> options -> choose language -> Chinese(Simplified)

        方式二:配置文件修改(永久性显示问中文样式):Jmeter的安装目录-> bin目录 -> jmeter.properties文件-> 使用记事本打开-> #language=en修改为language=zh_CN

二、核心组件

1. 测试计划        

        测试计划是使用JMeter进行测试的起点,它是其它JMeter测试 元件的容器。

2. 线程组

       线程数:模拟用户并发数(虚拟用户数)。一个虚拟用户占用一个进程或线程。
    Ramp-Up时间(秒):设置的虚拟用户数需要多长时间全部启动。如果线程数为10 ,准备时长为20 ,那么需要20秒钟启动10个线程。也就是每2秒钟启动1个线程。
    循环次数:每个线程发送请求的次数。如果线程数为10 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。

3. 取样器(Sampler)

        模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。如:HTTP 、ftp请求等等。

4. 监听器

        负责收集测试结果,同时也被告知了结果显示的方式。功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等。

5. 逻辑控制器

        允许自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。

6. 断言

        6.1 响应断言

        用于来判断请求响应的结果是否如用户所期望,是否正确。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。

Apply to:指定断言作用范围。关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只有一个请求。但是当我们发一个请求时,可以触发多个服务器请求,就有main sample 和 sub-sample之分了。
        Main sample and sub-samples:匹配范围包括当前父取样器并覆盖至子取样器
        Main sampie only:匹配范围是当前父取样器
        Sub-samples only:仅匹配子取样器
        JMeter Variable Name to use:支持对JMeter变量值进行匹配


        测试字段:针对响应数据的不同部分进行匹配
                ①响应文本:响应服务器返回的文本内容

                ②响应代码:匹配响应代码,比如返回代码“200”表示成功

                ③响应信息:匹配响应信息,比如处理成功返回“成功”字样

                ④响应头:匹配响应中的头信息

                ⑤请求头:请求中的头信息

                ⑥URL样本:匹配URL链接

                ⑦文档(文本):对文档内容进行匹配

                ⑧忽略状态:当第一个断言失败时可以忽略

                ⑨请求数据:请求数据

        模式匹配规则:
                ①包括:响应内容包括需要匹配的内容即代表响应成功

                ②匹配:响应内容要完全匹配需要匹配的内容即代表响应成功,不区分大小写,支持正则

                ③相等:响应内容要完全等于需要匹配的内容才代表响应成功,区分大小写,匹配内容是字符串非正则表达式

                ④字符串:响应内容包含需要匹配的内容才代表响应成功,区分大小写,匹配内容是字符串非正则表达式

                ⑤否:反转检查结果,用于表示不包含,不匹配,不等于,没有和模式字符串相匹配的字符串。若匹配成功则返回失败

                ⑥或者: 一个断言可以添加多个“要测试的模式”。使用OR选项后,只要其中有1个模式匹配,断言将会成功。不选择“OR”时将默认为AND选项,必须所有模式都匹配,断言才会成功。

        测试模式:输入结果期望值(空格要去掉)。这里填写我们要进行断言的内容,可以添加多个模式,可以使用变量、文本、正则表达式(在“包括”和“匹配”模式下)。

        6.2 JSON断言

JSON断言:书写格式为 $.msg
$表示根 也就是{
.表示子 也就是{下的元素
{
 "msg":成功,
 "state":b,
 "data":[
      {
       "name":"测试",
       "age":"12"
     }
  ]
}

注释:需要勾选上Additionally assert value,并填写上需要断言的内容,否则只检测是否有msg这个属性,有就返回ture,不会对内容做判断
        若需要获取content,则修改为$.content (获取所有content)

        若需要获取A的所有子类,则修改为$…A(获取所有的所有子类)

        若只需要获取A的第二个子类,则修改为$…A[1],

        当然也可以这样写:$.content.data.allCitySearchLabels.A[1].id,这样便能获取所有A类第二个的ID

        6.3 XPath断言

        书写格式为 //a[@name =“tj_trnews”]
                    其中,//表示相对路径,a表示标签,[]里面放谓词,@name="tj_trnews"表示属性,多个属性用 and、or表示。如果查看结果树使用XPath Tester显示时,记得勾选上return entire XPath fragment instead of text content,否则结果会显示失败。

断言结果监听器: 线程组-> 添加 -> 监听器 -> 断言结果
                里面的内容是sampler采样器的名称
                断言失败,查看结果树任务结果颜色标红(通过结果数里面双击不通过的记录,可以看到错误信息)

7. 定时器

        负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求。

8. 配置元件

        维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。

9. 前置处理器和后置处理器

        负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。

三、实战使用

1. 新增测试计划

2. 新增线程组

3. HTTP请求

        web服务器:
            默认协议:http
            默认端口:80
            服务器名称或IP :请求的目标服务器名称或IP地址
            路径:服务器URL
            Use multipart/from-data:当发送POST请求时,使用Use multipart/from-data方法发送,默认不选中。(如服务器支持,不进行勾选也可以)

4. 新增监听器

对结果进行收集

以上一个简单的实例完成,更多的功能可以参考文档:

Apache JMeter™ | JMeter 官方帮助文档中文版 (xiniushu.com)

5. 其它

        5.1 执行顺序
                jmeter测试计划脚本呈树形结构排列,元件的执行顺序是先执行根节点,再执行子节点。在同一层次中,各个元件的执行顺序逻辑:

  1. 配置元件
  2. 前置处理器
  3. 定时器
  4. 取样器
  5. 后置处理器
  6. 断言
  7. 监听器

        5.2 取样器(Sampler)
                取样器执行jmeter的实际请求交互工作。Apache JMeter提供了一些案例:https://jmeter.apache.org/usermanual/component_reference

http取样器
1.testplan -> add -> threads->thread g roup
2.thread group -> add-> Sampler -> http reqeust (填入参数)
3.thread group -> add ->listener -> view results tree
4.http request -> add ->assertions -> response assertion
5.view results tree -> start

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

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

相关文章

RabbitMQ(简单模式)

2种远程服务调用 1openFeign: 优点:能拿到被调用的微服务返回的数据,系统系耦度高,系统稳定。 缺点:同步调用,如果有很多服务需要被调用,耗时长。 MQ,消息队列,RabbitMQ是消息we…

数据可视化-ECharts Html项目实战(8)

在之前的文章中,我们学习了如何设置散点图涟漪效果与仪表盘动态指针效果。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢 今天的文章,会…

标定系列——预备知识-OpenCV中实现Rodrigues变换的函数(二)

标定系列——预备知识-OpenCV中实现Rodrigues变换的函数(二) 说明记录 说明 简单介绍罗德里格斯变换以及OpenCV中的实现函数 记录

Machine Learning机器学习之向量机(Support Vector Machine,SVM)

目录 前言 算法提出背景: 核心思想: 原理: 应用领域: 一、支持向量机分类(主要变体) 二、构建常见的支持向量机模型 基于Python 中的 Scikit-learn 库构建线性支持向量机(SVM) 三、向…

蓝桥杯刷题之路径之谜

题目来源 路径之谜 不愧是国赛的题目 题意 题目中会给你两个数组,我这里是分别用row和col来表示 每走一步,往左边和上边射一箭,走到终点的时候row数组和col数组中的值必须全部等于0这个注意哈,看题目看了半天,因为…

【GPU系列】选择最适合的 CUDA 版本以提高系统性能

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

NVIDIA 发布 Project GR00T 人形机器人基础模型和 Isaac 机器人平台重大更新

系列文章目录 前言 Isaac 机器人平台现可为开发者提供全新的机器人训练仿真器、Jetson Thor 机器人计算机、生成式 AI 基础模型和由 CUDA 加速的感知和操作库。 Project GR00T 是一种多模态人形机器人通用基础模型,作为机器人的大脑,使它们能够学习技能…

Android客户端自动化UI自动化airtest从0到1搭建macos+demo演示

iOS客户端自动化UI自动化airtest从0到1搭建macosdemo演示-CSDN博客 一、基础环境 1. 安装jdk 选择jdk8 如果下载高版本 可能不匹配会失败 下载.dmg文件 苹果电脑 | macOS | jdk1.8 | 环境变量配置_jdk1.8 mac-CSDN博客 Java Downloads …

【Java程序设计】【C00390】基于(JavaWeb)Springboot的校园疫情防控管理系统(有论文)

基于(JavaWeb)Springboot的校园疫情防控管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发,开…

前端Web移动端学习day05

移动 Web 第五天 响应式布局方案 媒体查询Bootstrap框架 响应式网页指的是一套代码适配多端,一套代码适配各种大小的屏幕。 共有两种方案可以实现响应式网页,一种是媒体查询,另一种是使用bootstrap框架。 01-媒体查询 基本写法 max-wid…

vue3+Vite+TS项目,配置ESlint和Prettier

创建vue3项目 实操过的有两种方式 1.vue脚手架2.vite(推荐,也是尤大大团队研发) 具体怎么新建一个vue3项目就不多讲了,可以按照官方文档来 创建后的文件目录长这样 多提一句,vite也会随着时间不断迭代,后…

【C++入门】 初见,单推,与C++的第一次约会

关注小庄 顿顿解馋(ᕑᗢᓫ∗)˒ 引言:本篇博客我们开始与C的第一次约会,C是兼容c的,本篇博客我们将了解到C关键字有哪些,C命名空间,C输入与输出和缺省参数的内容,请放心食用 ~ 文章目录 一 🏠 C…

github配置ssh

生成公钥 在电脑用户的目录下打开终端执行 ssh-keygen -t rsa: 执行完不要关 配置文件 看看用户的目录里 .ssh 目录: Host github.comHostname ssh.github.comPort 443配置公钥 复制 id_rsa.pub 文件里的内容 粘贴到 github上 连接密钥 回到刚才的终端…

【42 可视化大屏 | 某瓣电影Top250数据分析可视化大屏】

文章目录 🏳️‍🌈 1 普版大屏🏳️‍🌈2 Flask版大屏🏳️‍🌈3 FlaskMysql版大屏🏳️‍🌈 4. 可视化项目源码数据 大家好,我是 👉【Python当打之年(点击跳转)…

学透Spring Boot — 创建一个简单Web应用

从今天开始,我们将开始学习一个新的系列,那就是在项目中用得非常广泛的一个框架 —— Spring Boot,我们会循序渐进地介绍 Spring Boot 的方方面面,包括理论和实战,也会介绍和Spring Boot一些热点面试题。 概论 本文是…

基于Rflysim平台的无人机拦截三维比例导引算法仿真

【后厂村路钢铁侠出品】 一、Rflysim简介 RflySim是一套专为科研和教育打造的Pixhawk /PX4 和MATLAB/Simulink生态系统或工具链,采用基于模型设计(Model-Based Design, MBD)的思想,可用于无人系统的控制和安全测试。…

社交革命:Facebook如何改变我们的生活

引言 在数字化时代的浪潮中,社交媒体平台成为了人们日常生活不可或缺的一部分,而Facebook作为其中的巨头,已经深刻地改变了我们的生活方式和社交模式。本文将探讨Facebook在社交领域的影响力,以及它是如何改变了我们的生活。 1. …

SQLite数据库浏览器sqlite-web

什么是 sqlite-web ? sqlite-web是一个用 Python 编写的基于 Web 的 SQLite 数据库浏览器。 软件特点: 可与您现有的 SQLite 数据库配合使用,也可用于创建新数据库。添加或删除: 表格列(支持旧版本的 SQLite&#xff…

春秋云境CVE-2023-1313

简介 cockpit在2.4.1版本之前存在任意文件上传漏洞PS:通过在浏览器中打开/install来运行安装 正文 来到靶场,首先进行弱口令爆破,发现没用,那么只好老老实实的看靶场提示 先来访问/install 访问后就可以进行登录了&#xff0c…

阿里云实时计算Flink的产品化思考与实践【上】

摘要:本文整理自阿里云高级产品专家黄鹏程和阿里云技术专家陈婧敏在 FFA 2023 平台建设专场中的分享。内容主要为以下五部分: 阿里云实时计算 Flink 简介产品化思考产品化实践SQL 产品化思考及实践展望 该主题由黄鹏程和陈婧敏共同完成,前半程…