二,jmeter的简介和使用

news2024/11/22 10:30:10

文章目录

    • 一、jmeter简介及安装
      • 1. 简介
      • 2. 安装
    • 二、jmeter设置语言
    • 三、jmeter文件路径说明
    • 四、编写jmeter脚本
    • 五、乱码的处理:
      • 1. 请求内容出现乱码处理方法
      • 2. 响应内容出现乱码处理方法
    • 六、写脚本方法扩展
      • 录制脚本:
    • 七、 脚本功能增强

一、jmeter简介及安装

1. 简介

  • Apache 托管的开源java工具
  • 接口测试、自动化测试、性能测试
  • java要运行依赖什么?
    • jre java 运行环境
    • jdk java开发工具包,一般是包含jre
    • 我们课程中,除了kyj项目是jdk1.7 其余所有地方用到jdk的都是1.8
  • 查看jdk版本
    • java -version 正常返回jdk版本,但是不代表你的系统就配置JAVA_HOME环境变量
    • JAVA_HOME

2. 安装

  • 解压zip包,进入解压后文件夹\bin文件夹中,双击 jmeter.bat,启动图形界面GUI
    • mac ./jmeter.sh
  • 1、不需要配置JMETER_HOME环境变量
    • 原因: 如果配置了,那么你的电脑就有且仅能运行一个jmeter
    • 配置环境变量,可能会导致,直接闪退
      • 直接闪退原因:
        • 配置了环境变量
        • 没有安装jdk
        • 包少了文件
  • 2、一台电脑,理论上可以启动任意多个不同版本jmeter

二、jmeter设置语言

  • jmeter.properties
    • 以.properties结尾的文件,都是jmeter的属性配置文件
    • 最关键的 属性 配置文件 jmeter.properties
    • 修改属性配置文件中的信息,一定要重启才能生效
    • gui中 options > choose language > chinese simplied
    • 临时切换gui界面语言
    • 一旦关闭gui,就会被还原

三、jmeter文件路径说明

  • bin 启动 配置文件

  • lib jar包 工具自身jar, 以及第三方jar

    • ext 第三方插件管理
  • docs 文档 用于jmeter进行二次开发调用的api 接口文档

  • printable_docs 离线帮助文档

  • extras 扩展 CICD 性能测试持续集成

  • gui界面
    在这里插入图片描述

    • 一切都在右键掌握之中
    • 测试计划: 工作中测试计划: 什么时间什么人做什么事情
      • 万物的根, 脚本的根文件
      • 元件
        • 线程组: 接口、自动化测试时,基本不会去改动
          • 性能测试,这个是用于进行性能场景设计
          • 线程组:进行性能场景设计
          • setup线程组
          • teardown线程组
        • 配置元件
          • 优先级是最高的, 正式干活时,急先锋
          • 用户定义变量
        • 监听器
          • 就是侦探 就是摄像头,性能结果进行监控,展示结果数据
          • 不同的元件,是从不同的角度,展示结果数据
        • 取样器: 根据不同的协议,使用不同的取样器

四、编写jmeter脚本

  • 逻辑控制:

  • 前置: 用户参数

  • 后置: 对取样器进行控制

  • 定时器

  • 写脚本
    1)测试计划上右键, 添加 线程组
    2)线程组上右键,添加 取样器> http请求 (http协议簇)
    3)线程组上右键,添加 监听器 > 查看结果树

    • 脚本构成:
      一个最简单的jmeter脚本,包括,线程组、取样器、监听器
      • 线程组: 性能测试中用于场景设计的,写脚本阶段不用改动

      • 取样器: 根据不同的协议,编写不同的脚本。 填空

      • 监听器: 调试脚本时使用,性能测试执行时禁用
        不管哪种监听器,都是对结果数据进行不同维度的展示,这些展示,是需要 消耗本地资源的

    • jmeter的默认保存路径,jmeter的bin文件夹
  • 请注意:

    • 当请求体为json, 一定要有请求头 Content-Type:application/json

    • 协议: 当协议为http时,可以不写,如果是https,那就必须写

    • 服务器名称或IP:不能带有/

    • 路径: 不要带域名或ip,和端口。路径开头用/,不要带有空格, 带有空格请求URL%20 urlencoded编码

    • 参数、消息体数量的选择
      ​ 消息体:当我们的请求接口文档中说,请求体为json格式,那么我们就选择用json
      ​ 参数: 我们的请求体,form-data
      ​ Content-Type: application/x-www-form-urlencoded 或者不指明请求体类型,get

    • 自动重定向:不会显示中间重定向过程,无法从过程中,提取信息
      ​ 跟随重定向:会自动显示重定向过程,能从过程中,提取想要信息,用于后面接口请求

    • keepAlive勾选:如果勾上,表示保持长连接。因为现在用http协议版本为1.1 就是长连接,所以,默认勾选keepAlive,但是在性能测试中,我们会根据需要,去掉这个勾。

    • 参数、消息体数量 选择

      • ​消息体:当我们的请求接口文档中说,请求体为json格式,那么我们就选择用消息体数据,来写json, 像soap接口,是http+xml的,我们就把xml写到消息体
      • 参数: 存放请求体,是form-data格式的
        比如 Content-Type: application/x-www-form-urlencoded,或者不指明请求体类型
  • 请求重定向

    • 自动重定向:不会显示中间重定向过程,无法从过程中,提取信息

    • 跟随重定向:会自动显示重定向过程,能从过程中,提取想要信息,用于后面接口请求

    五、乱码的处理:

    1. 请求内容出现乱码处理方法

    • 内容编码设置为utf8
    • 请求头设置:,;charset=utf-8
    • 请求体为参数类型:勾选参数“编码” 编码:urlencoded编码
    • 在参数值为 非字符(汉字、特殊符号) 我都需要勾选编码。给大家的建议: 参数值,不管什么类型,都建议勾选编码

    2. 响应内容出现乱码处理方法

    • 修改jmeter.properties中sampler.result.encoding,不是简单的设置为utf8、 gbk、gb2312、big5
    • 同一个接口,用postmen请求,响应是正常,用jmeter请求响应中文乱码?
      原因是: jmeter的编码是根据操作系统编码。
      在国内,中文windows系统的字符集编码是gbk 936, mac系统中文编码utf8,所以通常只是windows乱码,mac不乱码

六、写脚本方法扩展

  • 录制脚本:

    • badboy: 曾经很流行,现在已经不维护,已经被遗弃
    • 代理录制: 用于脚本参数比较多,或者用手动编写脚本,一时半会写不出来。

      • 代理服务器: 自己启动一个代理服务器

      • 本地,要使用代理服务器的ip和端口,使用自己启动的代理服务器

      • 1、添加线程组

      • 2、测试计划 > 非测试元件 > http代理服务器

        • ip就是你自己电脑的ip,port是可以修改,默认8888
        • 目标控制器,一定要修改为 测试计划>线程组
        • 添加过滤器
      • 3、启动代理服务器(chrome推荐proxy omega插件)时,会出现一个证书的弹窗(7天内有效,7天后要重新安装)

        • 如果要抓取https信息时,就必须使用证书
          请添加图片描述
      • 4、本地浏览器使用 代理服务器上网

      • 5、录制后查看
        ps:代理使用完记得关上哦,否则无法上网了

      在这里插入图片描述

  • 代理配置

七、 脚本功能增强

  • 关联: 前面接口的响应信息,有动态值,作为后续接口的参数参数
  • 我想把手机号码参数化,怎么办呢:
    • 实现方式:
      • 1、用户定义变量:
        • 在配置元件,测试计划里
        • 作用域:全局变量,作用于整个测试计划
        • 在启动运行时,获取一次值,在运行过程中,不会动态获取值,在运行过程中,值一直都不变。
      • 2、用户参数:
        • 在前置处理器里
        • 属于局部变量
        • 作用域: 作用于当前线程组或当前的取样器
        • 在启动运行时,获取一次值,在运行过程中,还会动态获取值。

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

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

相关文章

pytorch学习——第二个模型(逻辑回归)

参考该博客系统学习Pytorch笔记二:Pytorch的动态图、自动求导及逻辑回归 c l a s s { 0 0.5 > y 1 0.5 ≤ y class\left\{ \begin{array}{rcl} 0 & & {0.5 > y}\\ 1 & & {0.5 \le y}\\ \end{array} \right. class{01​​0.5>y0.5≤y​ 根…

图数据库Neo4j学习一——基本介绍

文章目录 1各类数据库基本概念1.1关系型数据库(SQL)1.2非关系型数据库(NoSQL)1.3图数据库1.3.1图数据库特点1.3.2图数据库应用场景 2图数据库基本概念2.1用户访问菜单2.2节点(用户、角色、菜单)2.3关系&…

动态规划:从入门到入土系列(一)

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 前言 本篇…

高级web前端开发工程师岗位的具体内容概述

高级web前端开发工程师岗位的具体内容概述1 职责: 1、负责前端页面开发和维护,并根据需求优化产品性能、用户体验、交互效果及各种主流浏览器以及各类型移动客户端的兼容适配工作; 2、配合产品经理和UI设计师,通过各种前端技术手段&#xf…

[MySQL]MySQL用户管理

[MySQL]MySQL用户管理 文章目录 [MySQL]MySQL用户管理1. 用户的概念2. 用户信息3. 创建用户4. 修改用户密码5. 删除用户6. MySQL中的权限7. 给用户授权8. 回收权限 1. 用户的概念 MySQL中的用户分为超级用户(root)和普通用户。超级用户的操作是不受权限…

IDEA对JPA@Query查询的文本块支持

IDEA对JPAQuery查询的文本块支持 参考网址 JPA查询方式:方法命名规则、Query查询、结果集类型转化器 原先JPA的Query注解查询存在的问题 编写SQL时需要在value的""内,使用换行时会拼接字符串,观感极差如果SQL中使用到了单引号&…

第三十二章:MySQL事务日志

第三十二章:MySQL事务日志 32.1:概述 事物有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢? 事物的隔离性有锁机制实现。而事物的原子性、一致性和持久性由事物的redo日志和undo日志来…

基于深度学习淡水鱼体重智能识别模型研究

工作原理为:首先对大众淡水鱼图片进行数据清洗并做标签分类,之后基于残差网络ResNet50模型进行有监督的分类识别训练,获取识别模型。其次通过搭建回归模型设计出体重模型,对每一类淡水鱼分别拟合出对应的回归方程,将获…

【基础算法】——双指针算法

文章目录 一、算法原理二、算法实战1. 力扣283 移动零2. 力扣1089 复写零3. 力扣15 三数之和4. 力扣18 四数之和 三、总结 一、算法原理 双指针算法是指在遍历对象的过程中不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(…

机器学习实战11-基于K-means算法的文本聚类分析,生成文本聚类后的文件

大家好,我是微学AI,今天给大家介绍机器学习实战11-基于K-means算法的文本聚类分析,生成文本聚类后的文件。文本聚类分析是NLP领域的一个核心任务,通过将相似的文本样本分组,可以帮助我们发现隐藏在文本数据中的模式和结…

Docker概述 镜像-容器基本操作

Docker 概述 Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。 Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。 Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足…

Redis应用(7)——Redis的项目应用(六):布隆过滤器---白名单 ----> Reids的问题,雪崩/ 击穿 / 穿透【重要】 布隆过滤器

目录 引出Redis的问题缓存雪崩:key不存在缓存击穿:热点key缓存穿透【重要】 穿透的解决方案:布隆过滤器问题:如何存储100w纯数字布隆过滤器项目应用:布隆过滤器≈白名单htool工具包案例 Redis项目应用(六&a…

OpenCV4图像处理-图像交互式分割-GrabCut

本文将实现一个与人(鼠标)交互从而分割背景的程序。 GrabCut 1.理论介绍2. 鼠标交互3. GrabCut 1.理论介绍 用户指定前景的大体区域,剩下为背景区域,还可以明确指出某些地方为前景或者背景,GrabCut算法采用分段迭代的…

蓝桥杯专题-真题版含答案-【星系炸弹】【隔行变色】【手链样式】【生日蜡烛】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

Python爬虫-进入浏览器控制台就出现无限debugger,怎么解决?

前言 本文是该专栏的第53篇,后面会持续分享python爬虫干货知识,记得关注。 对于控制台出现无限debugger的情况,笔者之前在“JS逆向-常见反调试之“无限Debugger”,怎么解决?”里面有详细介绍过。而本文,针对控制台调试出现无限debugger的另一种情况,笔者来详细介绍该问…

C语言的自定义类型(结构体、枚举、联合体)

“虽然前方拥堵,但您仍在最优路线上” ——高德地图 文章目录 一、结构体类型 1.结构体类型的定义 2.结构体变量的初始化 3.结构体类型变量的定义 4.结构体内存对齐 5.结构体实现位段 二、枚举类型 三、联合体类型 大家好,我是纪宁。 这篇文章主…

【数据结构】--八大排序算法【完整版】

匠心制作,后续有问题会加以修改的 ,全文均是自己写的,几张图有参考网络 ———————————————— 目录 一、直接插入排序 二、希尔排序(直接插入排序的改良版) 三、选择排序(直接选择排序) 四、堆排序 …

通过YOLOV5实现:王者荣耀百里守约自瞄

前期提要: 本文章仅供技术讨论使用。 关于如何通过YOLOV5去检测到王者中的敌方人物,在网上有很多相关的文章和教学视频我在这里就不过多的阐述,本篇文章主要讲的是在实现中比较难处理的一些技术点:如何获取高刷新率的手机屏幕、…

Hive 调优集锦(1)

一、前言 1.1 概念 Hive 依赖于 HDFS 存储数据,Hive 将 HQL 转换成 MapReduce 执行,所以说 Hive 是基于Hadoop 的一个数据仓库工具,实质就是一款基于 HDFS 的 MapReduce 计算框架,对存储在HDFS 中的数据进行分析和管理。 1.2 架…

贤鱼的刷题日常(数据结构链表学习)-1748:约瑟夫问题--题目详解

🏆今日学习目标: 🍀例题讲解1748:约瑟夫问题 ✅创作者:贤鱼 ⏰预计时间:15分钟 🎉个人主页:贤鱼的个人主页 🔥专栏系列:c 🍁贤鱼的个人社区,欢迎你…