性能测试学习-基本使用-元件组件介绍(二)

jmeter优点是:开源免费,小巧,丰富的学习资料和扩展组件

缺点是:1.不支持IP欺骗,分析和报表能力相对于LR欠缺精确度(以分钟为单位)

工具用户量分析报表IP欺骗费用体积扩展性
Loadrunner多(万)精确(s)支持收费大(单位gb)不能扩展
Jmeter较差(min)不支持免费小(MB)有扩展组件

一、jmeter的安装和基本使用

(一)安装JDK

地址:http://www.oracle.com/

环境变量 :

  • JAVA_HOME=D:\Java\jdk1.8.0_191
  • Path中添加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

校验:cmd命令行里输入 java -version 

(二)安装jmeter

地址:Apache JMeter - Download Apache JMeter

解压安装包即可

启动3种方式:进入bin目录,双击jmeter.jar ; 双击ApacheJMeter.jar ;命令行输入java -jar ApacheJMeter.jar

(三)文件介绍

1. bin目录介绍(存放可执行文件和配置文件)

jmeter.bat: windows的启动文件(重要)

jmeter.log: Jmeter工具运行的日志文件

jmeter.propertites: jmeter工具的配置文件(重要)

jmeter.sh: linux的启动文件

jmeter-server: linux分布式测试的启动程序

jmeter-server.bat: windows分布式测试的启动程序

2.  /docs/api/index.html

是jmeter的api文档,用于开发扩展组件

3. printable_docs目录

用户帮助手册

4. lib目录

存放jmeter依赖的jar包和用户扩展所依赖的jar包(ext目录下)

(四)功能概要

1. 修改默认设置 - jmeter界面汉化

临时的:菜单Options->Choose Language->Chinese(Simplified)

永久的:修改配置文件,bin\jmeter.properties文件,改成"language=zh_CN",然后重启jmeter

2. 主题修改 

二、jmeter元件和组件的介绍

(一)元件的基本介绍

1. 元件:多个类似功能组件的容器(类似于)

取样器发送请求
逻辑控制器控制语句的执行顺序
前置处理器对请求参数进行预处理
后置处理器对响应结果进行提取
断言检查接口的返回结果是否与预期结果一致
定时器设置等待
测试片段封装一段代码,供其他脚本调用
配置元件测试数据的初始化配置
监听器查看jmeter脚本的运行结果

2. 组件:实现独立的某个功能(类似于方法

如取样器里的HTTP请求,逻辑控制器里的循环控制器,事务控制器

(二)元件的作用域

元件的作用域是靠测试计划的树形结构中的父子关系来确定的。

提示:所有的组件都是以取样器为核心运行的。组件添加的位置不同,生效的取样器也不同。

1. 作用域规则:

  • 取样器-->核心,不和其他元件相互作用,没有作用域
  • 逻辑控制器-->只对其子节点中的取样器和逻辑控制器起作用
  • 其他元件-->如果是某个取样器的子节点,则该元件只对其父节点其作用 ;如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)

2. 元件的执行顺序:

同一个作用域下不同类型元件:

  1. 配置元件(config elements)
  2. 前置处理器(per-processors)
  3. 定时器(timers) 
  4. 取样器(sampler)
  5. 后置处理器(post-processors)
  6. 断言(assertions)
  7. 监听器(listeners)

同一个作用域下多个相同类型元件:

  • 按照在测试计划中从上到下的顺序依次执行

 举例:整理执行顺序

定时器1 - HTTP请求1 - 定时器1 - 定时器2 - HTTP请求2 - 定时器1 - 定时器3 - HTTP请求3

(三)线程组

1.线程组概览

作用:线程组就是控制jmeter用于执行测试的一组用户

特点:

  • 模拟多人操作
  • 线程组可以添加多个,多个线程组可以并行或串行
  • 取样器(请求)和逻辑控制器必须依赖线程组才能使用

不控制顺序如图:

 如果要顺序执行线程组,设置如下:

执行结果如图:

2.线程组的特点 :

  • 模拟用户,支持多用户操作
  • 多个线程可以串行执行,也可以并行执行

3.线程组的分类 :

setup线程组-前置处理,初始化

普通线程组-编写脚本,可以看做一个虚拟用户组,每一个线程都可以理解为一个虚拟用户

teardown线程组-后置处理,环境恢复等

4.线程组参数详解:

(1)模拟10个用户并行执行:

(2)模拟5个用户5s内启动完成 

(3)模拟2个用户各循环3次

(4)模拟2个用户运行5s

(5) 模拟2个用户等待5s后开始执行,持续时间2s

(6)案例分析:

  • 循环线程数为2,循环次数为3,运行观察结果
  • 循环线程数为3,循环次数为2,运行观察结果 

相同点:从请求数量来说,完全相同

不同点:场景不同

  • 线程数:代表用户数,即性能测试时的负载量(线程数为2比线程数为3对应的负载量小)
  • 循环次数:代表时间,即性能测试时的运行时间(循环次数3比循环次数2对应的时间长) 

5. http请求使用示例

a.如何配置来发送http请求?

发送 GET 请求(请求参数在路径中 )

URL协议:协议、服务器域名或IP、端口、方法(GET)、路径、编码格式

参数 : 

  • 在路径后添加参数 。格式 : ?键名=键值&键名=键值
  • 在参数列表中添加参数 。格式:名称(键名)、值(键值)

发送POST请求(请求参数在消息体数据中):

URL:协议、服务器域名或服务器域名或IP、端口、方法(POST)、路径、编码格式

参数:

  • 在消息体数据中添加请求体(form/json)
  • 在参数列表中添加参数 (form)

 b.重定向

GET https://www.baidu.com/s

HTTP请求的响应数据和HTTP请求-1的响应数据一样

重定向的原因分析

第一个HTTP请求中,URL错误,导致服务器产生了重定向,提供了新的URL路径

  • jmeter会自动发送第二个http请求(使用第一个http请求中的返回的URL路径)
  • 点击最外层http请求时,显示的内容于最后一个http请求的请求和响应数据一致。

6.响应数据中存在乱码 

需要修改取样结果的编码格式->修改jmeter.properties文件:

# The encoding to be used if none is provided (default ISO-8859-1)
sampleresult.default.encoding=UTF-8 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android百度人脸识别3.0配置

JDK 必须是16的版本 如果报错的错误是"opens java.io" org.gradle.jvmargs -Xmx2048M -Dkotlin.daemon.jvm.options\"-Xmx2048M" --add-exportsjava.base/sun.nio.chALL-UNNAMED --add-opensjava.base/java.langALL-UNNAMED --add-opensjava.base/java.…

Android 绑定服务的5个问题。

1.android studio 目录结构改变了。为什么会报R 资源文件找不到。 在写项目的时候经常需要改到。 gradle文件里的域名名字要改变下。 2.Caused by: android.app.BackgroundServiceStartNotAllowedException: Not allowed to start service Intent { cmpcom.zjtzsw.sbkDevice/…

Chisel入门——在windows下vscode搭建|部署Scala2.13.3开发环境|用Chisel点亮FPGA小灯等实验

文章目录 前言Chisel介绍 一、vscode搭建scala开发环境1.1 安装Scala官方插件1.2 创建hello_world.scala文件1.3 确认java的版本(博主使用的是1.8)1.4 下载Scala Windows版本的二进制文件1.5 配置环境变量1.6 交互模式测试一下1.7 vscode运行scala 二、windows安装sbt2.1 下载s…

JMeter Plugins Manager---插件安装

参考文章:https://blog.51cto.com/u_14126/6291032 需求: 安装【jpgc - Standard Set】插件 常用插件: 点击下载–报错如下: Failed to apply changes:Cannotapplychanges:Haveno write accessforJMeterdirectories,notpossib…

【机器学习数据挖掘】基于ARIMA 自回归积分滑动平均模型的销售价格库存分析报告 附完整python代码

资源地址:Python数据分析大作业 4000字 图文分析文档 销售分析 完整python代码 ​ 完整代码分析 同时销售量后1000的sku品类占比中(不畅销产品)如上,精品类产品占比第一,达到66.7%,其次是香化类产品&#…

Transformers实战03-PEFT库使用LORA方法微调。

文章目录 简介PEFTLORA方法Vision Transformer (ViT) lora方法实战模型选择google/vit-base-patch16-224-in21kgoogle/vit-base-patch16-224 数据集模型PEFT configuration and model训练预测 简介 PEFT PEFT(Parameter-Efficient Fine-Tuning)是一个用…

开窗函数!

开窗函数(Window Function)是SQL中的一种高级功能,允许你在一组相关行(一个“窗口”)上执行聚合操作,而不像传统聚合函数(如SUM(), AVG(), COUNT())那样将所有匹配行合并成单个汇总行…

这就是英伟达 CEO 黄仁勋所说的人工智能“下一波浪潮”|TodayAI

在台湾一年一度的科技展 COMPUTEX 开幕前的周日,英伟达(Nvidia)首席执行官黄仁勋(Jensen Huang)表示,机器人和“理解物理定律的 AI”将成为下一波技术浪潮。他指出,英伟达目前正在推动生成式人工…

[Redis]Zset类型

Zset有序集合相对于字符串、列表、哈希、集合来说会有一些陌生。 它保留了集合不能有重复成员的特点,但与集合不同的是,有序集合中的每个元素都有一个唯一的浮点类型的分数(score)与之关联,着使得有序集合中的元素是可…

c语言:自定义类型(枚举、联合体)

前言: c语言中中自定义类型不仅有结构体,还有枚举、联合体等类型,上一期我们详细讲解了结构体的初始化,使用,传参和内存对齐等知识,这一期我们来介绍c语言中的其他自定义类型枚举和联合体的知识。 1.位段 …

jupyter notebook anaconda环境下查看|加载|更换内核

文章目录 1 问题复现2 查看内核位置3 调整python解释器位置 1 问题复现 在conda虚拟环境中使用pip安装相应package, 但是在jupyter notebook中加载该package时报错 [ERROR]ModuleNotFoundError: No module named shap 此时,除去包安装出现问题以外&am…

ARM学习(28)NXP 双coreMCU IMX1160学习

笔者最近接触到一块IMXRT1160的双core板子,特依次来记录学习一下 1、IMXRT1160 板子介绍 介绍一下NXP的Demo板子,是一个双core的板子,Cortex-M7和Cortex-M4,总计1MB的RAM空间,256KB的ROM空间,提供了丰富的…

哥斯拉、冰蝎、中国蚁剑在护网中流量特征分析,收藏起来当资料吧,24年护网用得上

护网哥斯拉、冰蝎、中国蚁剑流量分析 【点击免费领取】CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》🔗包含了应急响应工具、入侵排查、日志分析、权限维持、Windows应急实战、Linux应急实战、Web应急实战。 护网中最担心的是木马已经到了服…

CV每日论文--2024.6.4

1、Mixed Diffusion for 3D Indoor Scene Synthesis 中文 标题:用于 3D 室内场景合成的混合扩散 简介:这篇论文提出了一种名为MiDiffusion的混合离散-连续扩散模型,用于从给定的房间类型、平面图和可能存在的物体中合成逼真的3D室内场景。 作者指出,该…

芯片验证分享5 —— 激励开发3

大家好,我是谷公子,上节课跟大家分享了黑盒技术中的等价类分析和边界值分析方法。我们这次来分享下黑盒设计中的其它技术。 边界值分析和等价类划分的一个弱点是没有对输入条件的组合进行分析。对输入组合进行验证并不是简单的事情,因为即使…

Linux 36.3 + JetPack v6.0@jetson-inference之语义分割

Linux 36.3 JetPack v6.0jetson-inference之语义分割 1. 源由2. segNet2.1 命令选项2.2 下载模型2.2.1 Cityscapes2.2.2 DeepScene2.2.3 MHP2.2.4 VOC2.2.5 SUN 2.3 操作示例2.3.1 单张照片2.3.2 多张照片2.3.3 视频 3. 代码3.1 Python3.2 C 4. 参考资料 1. 源由 分类和目标识…

指针的认识(野指针、规避野指针、assert宏断言)

目录 a.野指针成因 1.指针未初始化 2.指针越界访问 3.指针指向的空间释放 b.规避野指针 1.指针初始化 2.小心指针越界 3.指针变量不再使用时,及时置NULL,指针使用之前检查有效性 4.避免返回局部变量的地址 c.assert宏断言的使用 概念&#xff1…

【Kubernetes】k8s的调度约束(亲和与反亲和)

一、调度约束 list-watch 组件 Kubernetes 是通过 List-Watch 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件,向 APIServer 发送命令,在 Node 节点上面建立 Pod 和…

Qt/C++音视频开发76-获取本地有哪些摄像头名称/ffmpeg内置函数方式

一、前言 上一篇文章是写的用Qt的内置函数方式获取本地摄像头名称集合,但是有几个缺点,比如要求Qt5,或者至少要求安装了多媒体组件multimedia,如果没有安装呢,或者安装的是个空的呢,比如很多嵌入式板子&am…

js

<!DOCTYPE html> <html><head><meta charset"utf-8"><title>Document</title></head><body><input type"button" values"点击" onclick"alert(hahaha)"><script>alert(&…