当前位置: 首页 > 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 

相关文章:

  • CSS - 元素竖向百分比的基准值是什么?
  • 平板显示LED背光芯片OC6700,输入3.6V~60V,升压型 LED 恒流驱动器
  • Linux设备驱动platform驱动
  • Springboot JVM监控 通过Promethus
  • PS怎么编程:深入探索Photoshop的编程奥秘
  • 静态网页实现-人脸识别-案例(web)
  • 代码随想录35期Day60-JavaScript
  • 产品经理的需求善变,利用规则引擎减少80%的需求变更成本
  • Python3 列表
  • 2023年简单易用的透明加密软件--安秉网盾企业数据防泄密方案
  • 选择正确的单位:百分比、视窗单位和像素单位在网页设计中的应用
  • [原创][Delphi多线程]TThreadedQueue的经典使用案例.
  • 双指针解题
  • uniapp uni-popup内容被隐藏问题
  • Python编程学习第一篇——Python零基础快速入门(五)—变量
  • 4. 路由到控制器 - Laravel从零开始教程
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • crontab执行失败的多种原因
  • ES6核心特性
  • JavaScript实现分页效果
  • Linux快速复制或删除大量小文件
  • React-redux的原理以及使用
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • swift基础之_对象 实例方法 对象方法。
  • uni-app项目数字滚动
  • vue总结
  • win10下安装mysql5.7
  • Yeoman_Bower_Grunt
  • 从零开始的无人驾驶 1
  • 从伪并行的 Python 多线程说起
  • 第十八天-企业应用架构模式-基本模式
  • 关于for循环的简单归纳
  • 解析 Webpack中import、require、按需加载的执行过程
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 悄悄地说一个bug
  • 区块链技术特点之去中心化特性
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 小程序button引导用户授权
  • 用Canvas画一棵二叉树
  • AI算硅基生命吗,为什么?
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #FPGA(基础知识)
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (1)STL算法之遍历容器
  • (3)llvm ir转换过程
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (转载)OpenStack Hacker养成指南
  • *2 echo、printf、mkdir命令的应用