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

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

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 

相关文章:

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

jmeter优点是:开源免费,小巧,丰富的学习资料和扩展组件 缺点是:1.不支持IP欺骗,分析和报表能力相对于LR欠缺精确度(以分钟为单位) 工具用户量分析报表IP欺骗费用体积扩展性Loadrunner多(万)精…...

基于大模型的智慧零售教育科研平台——技术方案

一、概述 1.1背景 随着数字经济的快速发展和全社会数字化水平的升级,人工智能的积极作用越来越凸显,人工智能与各个行业的深度融合已成为促进传统产业转型升级的重要方式之一。ChatGPT的出现掀起了又一波人工智能发展热潮,人工智能行业发展势…...

C# using的几个用途

using 关键字有三个主要用途: 1.using 语句定义一个范围,在此范围的末尾将释放对象: string filePath "example.txt"; string textToWrite "Hello, this is a test message!"; // Use the using statement to ensure …...

MyBatis3.4全集笔记

MyBatis 1. MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Ja…...

IDEA一键启动多个微服务

我们在做微服务项目开发的时候,每次刚打开IDEA,就需要把各个服务一个个依次启动,特别是服务比较多时,逐个点击不仅麻烦还费时。下面来说一下如何一键启动多个微服务。 操作步骤 点击Edit Configurations 2.点击“”,…...

【Python3】random.choices 权重随机选取 详解

random.choices是Python 3中random模块中的一个函数,用于从指定的序列中以指定的权重随机选择元素。下面我将对该函数进行详细介绍,并提供一些示例代码和注意事项。 函数签名: random.choices(population, weightsNone, *, cum_weightsNone…...

【面试题-015】Redis的线程模型是什么 为什么速度快

redis面试题 Redis的线程模型是什么 为什么速度快? Redis是一个开源的、高性能的键值对(key-value)数据库。它之所以速度快,主要得益于以下几个方面的设计: 单线程模型: Redis的操作是单线程的&#xff…...

EasyV开发人员的使用说明书

在可视化大屏项目时,开发人员通常需要承担以下任务: 技术实现:根据设计师提供的设计稿,利用前端技术(如HTML、CSS、JavaScript等)和后端技术(根据具体项目需求,可能是Java、Python、…...

构造列表初始化和构造初始化区别

构造列表初始化和构造初始化在C等编程语言中,是两种不同的初始化类实例成员的方式。以下是它们之间的主要区别: 构造列表初始化(初始化列表) 定义:初始化列表以一个冒号开始,接着是一个以逗号分隔的数据成…...

Message passing mechanism (消息传递机制)

objc_msgSend 是 Objective-C 运行时系统中的一个核心函数,用于实现消息传递机制。在 Objective-C 中,方法调用实际上是消息传递的过程,当你在代码中调用一个方法时,编译器会将其转换为 objc_msgSend 函数的调用。 objc_msgSend …...

详解 Spark SQL 代码开发之数据读取和保存

一、通用操作 /** 基本语法:1.读取:SparkSession.read[.format("format")[.option("...")]].load("path")2.保存:DataFrame.write[.format("format")[.option("...")]][.mode("Save…...

Pulsar 社区周报 | No.2024-05-30 | BIGO 百页小册《Apache Pulsar 调优指南》

“ 各位热爱 Pulsar 的小伙伴们,Pulsar 社区周报更新啦!这里将记录 Pulsar 社区每周的重要更新,每周发布。 ” BIGO 百页小册《Apache Pulsar 调优指南》 Hi,Apache Pulsar 社区的小伙伴们,社区 2024 上半年度的有奖问…...

第二证券股票杠杆:4分钟直线涨停!这一赛道,AH股集体爆发!

今日早盘,A股继续小幅震动收拾,首要股指涨跌互现,两市个股跌多涨少,成交有萎缩的趋势。 盘面上,医药、中字头、旅游、房地产等板块相对活跃,混合实践、玻璃基板、AI手机PC、光刻机等板块跌幅居前。 “中字…...

JavaScript 进阶征途:解锁Function奥秘,深掘Object方法精髓

个人主页:学习前端的小z 个人专栏:JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 🈵Function方法 与 函数式编程💝1 call &#x1f49d…...

斜拉桥智慧施工数字孪生

基于图扑自主研发的 HT for Web 产品,利用现场照片及 CAD 图纸,结合 PBR 材质,搭建了具有赛博朋克风格的智慧斜拉桥可视化解决方案,精准复现斜拉桥建造规划过程,辅助运维人员对桥梁基建过程的网格化管理。提高桥梁的建…...

【chatGPT API】Function Calling:将自然语言转换为API调用或数据库查询

文章目录 一. 介绍二. 常见用例与Function Calling调用逻辑三. 调用细节1. 调用行为:tool_choice2. 调用规定:functions 四. 实战:查询公司相关产品 一. 介绍 OpenAI可以根据用户的要求输出一个符合用户要求的入参值。然后用户拿到入参值之后…...

Oracle Hint /*+APPEND*/插入性能总结

oracle append用法 Oracle中的APPEND用法主要用于提高数据插入的效率。 基本用法:在使用了APPEND选项后,插入数据会直接加到表的最后面,而不会在表的空闲块中插入数据。这种做法不需要寻找freelist中的free block,从而避免了在…...

正邦科技(day3)

出厂测试 设备校准 这个需要注意的是校准电流、电压、电感的时候有时候负感器会装反,mcu会坏,需要flash一下清空内存...

mac电脑多协议远程管理软件:Termius 8.4.0激活版下载

Termius 是一款功能强大的跨平台远程访问工具,可用于管理和连接各种远程系统和服务器。它支持SSH、Telnet、SFTP和Serial协议,并提供了键盘快捷键、自动完成和多标签功能,使用户可以方便地控制和操作远程主机。 Termius 提供了端到端的加密保…...

网络攻击的常见形式

开篇 本篇文章来自于《网络安全 ——技术与实践》的学习整理笔记。 正篇 口令窃取 相比于利用系统缺陷破坏网络系统,最容易的方法还是通过窃取用户的口令进入系统。因为人们倾向于选择很糟糕的口令作为登录密码,所以口令猜测很容易成功。通常&#xff0…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

XML Group端口详解

在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

多元隐函数 偏导公式

我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式&#xff0c;给定一个隐函数关系&#xff1a; F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 &#x1f9e0; 目标&#xff1a; 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​、 …...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...

文件上传漏洞防御全攻略

要全面防范文件上传漏洞&#xff0c;需构建多层防御体系&#xff0c;结合技术验证、存储隔离与权限控制&#xff1a; &#x1f512; 一、基础防护层 前端校验&#xff08;仅辅助&#xff09; 通过JavaScript限制文件后缀名&#xff08;白名单&#xff09;和大小&#xff0c;提…...