性能测试-JMeter(1)

性能测试工具

  • 主流性能测试工具
    • Loadrunner
    • JMeter
  • JMeter环境安装
  • JMeter功能概要
    • JDK常用文件目录介绍
    • JMeter元件和组件介绍
      • 元件的基本介绍
      • 组件的基本介绍
    • JMeter元件作用域和执行顺序
    • JMeter第一个案例
      • 线程组
      • HTTP请求
      • 查看结果树
    • JMeter参数化(重点)
      • 用户定义的变量
      • 用户参数
      • CSV数据文件设置
      • 函数(__counter)
      • 小结

主流性能测试工具

Loadrunner

  • HP Loadrunner是一种工业级标准性能测试负载工具,可以模拟上万用户实施测试,并在测试时可实时检测应用服务器及服务器硬件各种数据,来确认和查找存在的瓶颈
  • 支持多协议:Web(HTTP/HTML)、Windows Sockets、FTP、ODBC、MS SQL Server等协议
  • 采用C语言编写
  • 优点
    • 多用户(支持用户以万为单位)
    • 详细的分析报表(以秒为单位)
    • 支持IP欺骗功能
  • 缺点
    • 收费
    • 体积庞大(安装包单位GB)
    • 无法定制功能

JMeter

  • JMeter是Apache组织开发的基于Java的开源软件,用于对系统做功能测试和性能测试
  • 它最初被设计用于Web应用测试,但后来扩展到其他测试领域,例如静态文件、Java程序、shell脚本、数据库、FTP、Mail等
  • 优点
    • 开源免费
    • 小巧(安装包50MB左右)
    • 丰富的学习资料和扩展组件
  • 缺点
    • 不支持IP欺骗
    • 分析和报表能力相对于LR欠缺精度(以分钟为单位)

JMeter环境安装

1、安装JDK
2、安装JMeter(JMeter版本与JDK版本匹配)
安装好后,进入JMeter安装目录下的bin目录【以下任意一种方式打开】
1)双击jmeter.bat
2)双击ApacheJMeter.jar
3)命令行输入:java -jar ApacheJMeter.jar

JMeter功能概要

JDK常用文件目录介绍

  • Bin目录:存放可执行文件和配置文件
    • jmeter.bat——windows的启动文件【重要】
    • jmeter.log——Jmeter工具运行的日志文件
    • jmeter.properties——Jmeter工具的配置文件【重要】
    • jmeter.sh——linux的启动文件
    • jmeter-server linux分布式测试的启动程序
    • jmeter-server.bat windows分布式测试的启动程序
  • docs目录:是JMeter的api文档,用于开发扩展组件
  • printable_docs目录:用户帮助文档
    • 用户手册路径:…\apache-jmeter-5.6.3\printable_docs\usermanual\index.html
  • lib目录:存放JMeter依赖的jar包和用户扩展所依赖的jar包

JMeter元件和组件介绍

元件的基本介绍

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

组件的基本介绍

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

    如:取样器的组件
    jmete取样器下的组件

(1)如下接口自动化脚本的实现过程对应着Jmeter哪个元件?

  1. 初始化测试数据——配置元件
  2. 对请求参数化赋值——前置处理器
  3. 调用GET/POST方法发送请求——取样器
  4. 提取响应中特定字段的值——后置处理器
  5. 对提取出来的值与预期结果进行对比——断言
  6. 在控制台查看脚本运行的结果——监听器
    (2)元件与组件有什么关系?
    元件:多个类似功能组件的容器(类似于
    组件:容器中实现独立的某个功能(类似于方法

JMeter元件作用域和执行顺序

元件的作用域:是靠测试计划的树形结构中元件的父子关系来确定的
提示:所有的组件都是以取样器为核心来运行的。组件添加的位置不同,生效的取样器也不同。

  • 作用域的原则
    • 取样器:核心,不和其他元件相互作用,没有作用域
    • 逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用
    • 其他元件:
      • 如果是某个取样器的子节点,则该元件只对其父节点起作用
      • 如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点、子节点的子节点等)
  • 元件的执行顺序
    • 同一个作用域下不同类型元件:
    1. 配置元件
    2. 前置处理程序
    3. 定时器
    4. 取样器
    5. 后置处理程序
    6. 断言
    7. 监听器

JMeter第一个案例

需求:使用JMeter访问百度首页接口,并查看请求和响应信息
步骤:

  1. 启动JMeter
  2. 在’测试计划’下添加’线程组’
  3. 在’线程组’下添加’HTTP请求’取样器
  4. 填写’HTTP请求’的相关请求数据
  5. 在’线程组’下添加’查看结果树’监听器
  6. 点击’启动’按钮运行,并查看结果
    案例

线程组

作用:线程组就是控制Jmeter用于执行测试的一组用户
位置:右键点击‘测试计划’ --> 添加 --> 线程(用户) --> 线程组
【特点】

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

【线程组分类】

  • 线程组:普通的、常用的线程组,可以看作一个虚拟用户组,线程组的每一个线程都可以理解为一个虚拟用户
  • setUp线程组:一种特殊类型的线程组,可用于执行预测试操作
  • tearDown线程组:一种特殊类型的线程组,可用于执行测试后工作

【参数详解】
线程组-参数详解
如下场景如何设置线程组?

  • 模拟10个用户并行执行——线程数10
  • 模拟10个用户5s内启动完成——线程数10,ramp-up时间:5s
  • 模拟2个用户各循环3次——线程数2,循环次数2
  • 模拟2个用户运行30s——线程数2,循环永远,持续时间30s
  • 模拟2个用户等待10s后开始执行——线程数2,循环永远,启动延迟10s

案例分析:

  • 使用1个线程组,添加http请求
    • 配置线程数为2,循环次数为3时,运行观察结果
    • 配置线程数为3,循环次数为2时,运行观察结果,对比不同

分析:

  • 线程数代表虚拟用户数,用户数越多,负载越大
  • 循环次数代表运行时间,次数越多,运行时间越长

HTTP请求

作用:向服务器发送http及https请求
位置:选中线程组 --> 右键 --> 添加 --> 取样器 --> HTTP请求
参数:
HTTP请求参数设置
【练习】编写Jmeter脚本,访问百度
案例一:GET请求,URL为http://www.baidu.com/S?wd=test
要求:使用HTTP请求—路径来传递get请求参数
在这里插入图片描述

案例二:GET请求,URL为https://www.baidu.com/S?wd=test
要求:使用HTTP请求—参数列表来传递get请求的参数
在这里插入图片描述

案例三:POST请求,URI为https://www.baidu.com/S,请求体为:wd=test(form表单
要求:使用HTTP请求—参数列表来传递POST请求的form格式参数
在这里插入图片描述

案例四:POST请求,URL为http://www.baidu.com/S,请求体为:wd=test(form表单)要求:使用HTTP请求—消息体数据来传递POST请求的form格式参数
在这里插入图片描述

查看结果树

作用:查看http请求的请求和响应结果
位置:选中测试计划/线程组 --> 右键 --> 添加 --> 监听器 --> 查看结果树
组成:

  • 取样结果:查看响应信息头信息、响应状态码
  • 请求:查看请求相关信息(url、方法、参数)
  • 响应:查看响应信息

若结果出现乱码,解决方法:
1、找到jmeter安装目录下的bin目录
2、打开jmeter.properties文件,修改配置sampleresult.default.encoding=UTF-8
3、重启jmeter即可
【新版默认就是utf-8】

JMeter参数化(重点)

参数化测试:把测试数据组织起来,用不同的测试数据调用相同的测试方法
本质:实现测试数据与测试方法的分离

  • JMeter中常见的参数化方式:
    • 用户定义的变量——全局变量
    • 用户参数——为每个用户分配不同的参数值
    • CSV Data Set Config——文件方式参数化
    • 函数——随机数据
    • 数据库

用户定义的变量

作用:定义全局变量
位置:测试计划 --> 线程组 --> 配置元件 --> 用户定义的变量
【练习】
请求:https://www.baidu.com:443
要求:使用用户定义的变量配置被测系统的协议、域名和端口
在这里插入图片描述
在这里插入图片描述

用户参数

作用:针对同一组参数,当不同的用户来访问时,可以获取到不同的值
位置:测试计划 --> 线程组 --> 前置处理器 --> 用户参数
【练习】
请求:https://www.baidu.com
要求:第一个用户请求附带参数:name=“张三"&age=28;第二个用户请求附带参数:name=“李四”&age=30
操作步骤:
1、添加线程组,线程数设置为2
2、添加用户参数
3、添加HTTP请求
4、添加查看结果树
在这里插入图片描述
在这里插入图片描述

CSV数据文件设置

作用:让不同用户在多次循环时,可以取到不同的值
位置:测试计划 --> 线程组 --> 配置元件 --> CSV数据文件设置
在这里插入图片描述
【练习】
请求:https://www.baidu.com
要求:循环请求3次,每次请求时附带参数username,password,code的值不相同
操作步骤:
1、定义CSV数据文件
2、添加线程组,设置循环次数为3
3、添加CSV数据文件设置
4、添加HTTP请求
5、添加查看结果树
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

函数(__counter)

作用:计数函数,一般做执行次数统计使用
位置:在菜单中选择 --> 选项(工具) --> 函数助手对话框
在这里插入图片描述
【练习】
请求:访问百度首页 http://www.baidu.com/s?num=1
要求:每个用户每次循环执行该脚本都可以使用不同的值
操作步骤:
1、添加线程组,设置虚拟用户数和循环次数
2、生成__counter函数
3、添加HTTP请求,使用__counter函数
4、添加查看结果树
在这里插入图片描述

小结

  • 什么是参数化?
    • 把测试数据组织起来,用不同的测试数据调用相同的测试方法
  • 4种参数化方式有何不同?如何选择适当的方式?
    • 用户定义的变量
      • 作用:定义全局变量
      • 局限性:每次取值(无论是否相同的用户)都是固定值
    • 用户参数
      • 作用:保证不同的用户针对同一组参数,可以取到不同的值
      • 局限性:同一个用户在多次循环时,取到相同的值
    • CSV数据文件设置
      • 作用:保证不同的用户及同一用户多次循环时,都可以取到不同的值
      • 局限性:需要手动进行测试数据的设置
    • 函数
      • 作用:保证不同的用户及多次循环时,都可以取到不同的值,不需要提前设置
      • 局限性:输入数据有特定的业务要求时无法使用(如:登录时的用户密码)

【案例】
某支付系统,需要1000个不同的用户登录,并使用添加不同的测试金额数据访问支付接口?
答案:
1、准备CSV数据文件——1000个登录的用户名密码
2、添加线程组
3、添加CSV数据文件设置
4、添加HTTP请求——登录,使用读取的用户名密码
5、添加HTTP请求——支付,使用counter函数添加不同的测试金额
6、查看结果树

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

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

相关文章

涛思数据库安装和卸载

安装 cd opt/taos/TDengine-server-2.4.0.5 sudo ./install.sh 启动taos​ 安装后,请使用 systemctl 命令来启动 TDengine 的服务进程 systemctl start taosd检查服务是否正常工作: systemctl status taosd 升级 3.0 版在之前版本的基础上&#x…

Vue3 集成 json-editor-vue3

简介 快速编辑json数据,还需要支持全屏编辑,以及json校验。 https://github.com/guyue88/json-editor-vue3 安装依赖 npm install json-editor-vue3 --save 引入 在 main.js中添加 import “jsoneditor”; 全局引入 import Vue from vue import Json…

无人自助超市系统小程序源码开发

随着科技的飞速发展和消费模式的转变,无人自助超市作为一种新兴的商业模式,以其便捷性、高效率以及对“体验式购物”的完美诠释,受到了广泛关注。本文renxb001将深入探讨无人自助超市系统小程序源码开发的核心环节和技术要点。 一、系统需求分…

Electron构建桌面应用程序,服务于项目的自主学习记录(持续更新...

无所畏惧地面对未知,并将其视为成长的机会 大纲官网快速入门1.安装node.js -- 这里推荐用nvm管理2.脚手架创建3.electron 包安装到应用的开发依赖4.创建主进程(main.js)并启动项目1.创建页面2.配置main.js3.启动项目 -- 效果 进阶 -- 基于项目场景功能使用场景一&am…

近年来自动驾驶行业就业与企业需求情况

自动驾驶行业在近年来持续发展,就业情况和企业需求呈现出多样化和复杂化的趋势。 以下是基于我搜索到的资料对自动驾驶行业最新就业情况和企业需求的详细分析: 自动驾驶行业对高端技术人才的需求非常旺盛,尤其是架构工程师、算法工程师等岗…

某乎登录加密以及zseck加密逆向

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 某乎的登录除了需要通过网易易盾外,登录还需要传额外的加密data参数,某盾的加密可以看我之前的文章,这里着重讲解登录以及后续ck的加密,将最终的的登录采集代码…

通过MySQL Workbench 将 SQL Server 迁移到GreatSQL

通过MySQL Workbench 将 SQL Server 迁移到GreatSQL 一、概述 MySQL Workbench 提供了可以将Microsoft SQL Server的表结构和数据迁移到 GreatSQL 的功能,此次将通过MySQL Workbench将SQL Server的数据迁移到GreatSQL。 本文章只是简单演示一下单张表的迁移&…

【LeetCode】每日一题 2024_10_8 旅行终点站(哈希)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动! 国庆结束了 . . . 力扣的每日一题也来到了终点站 题目:旅行终点站 代码与解题思路 func destCity(paths [][]string) string { // 国庆结束,旅途到了终点// 今天这道题算是一个小…

【LeetCode: 1870. 准时到达的列车最小时速 | 二分】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

看门狗电路设计

看门狗电路设计 看门狗是什么应用架构图TPV6823芯片功能硬件时序图为什么要一般是要保持200个毫秒左右的这种低电平的时间看门狗电路实际应用与条件 看门狗是什么 硬件看门狗芯片,Watch DogTimer,可用于受到电气噪音、电源故障、静电放电等影响(造成软件…

“炫我”受邀出席虚拟现实及元宇宙产业创新论坛!

当前,新一轮科技革命和产业变革向纵深演进,虚拟现实及元宇宙等相关产业加速发展,催生了新产业新业态新模式,发展潜力巨大、应用前景广阔。 9月27日,由北京市科学技术委员会、中关村科技园区管理委员会,北京…

JavaScript 访问者模式:打造高扩展性的对象结构

一. 前言 在面向对象编程中,访问者模式(Visitor Pattern)是一种行为设计模式,它允许我们向现有的类结构添加新的操作,而无需修改这些类。这对于需要对类层次结构中的元素进行复杂算法处理的场景非常有用。 本文将详细…

【AI绘画SD教程】Lineart线稿上色和IP-Adapter 人像写真插件实操教学,轻松助你生成多种风格的AI人像大片!SD零基础入门到精通教程

大家好,我是画画的小强 今天给大家分享一下如何用AI绘画工具StableDiffusion当中的 LineArt线稿处理 和 IP-Adapter 实操教学。 本期教程开始之前,请先确保你的电脑已经安装好StableDiffusion这款AI绘图工具,如你还没有安装使用&#xff0c…

最新价值5000元的V2M2引擎传奇源码2024BLUE升级版 团购

最新团购的V2M2引擎源码2024年BLUE升级版 特点优势是最新XE12编辑器,微端,各种自定义UI 无限仿GOM引擎功能 参考地址:最新价值5000元的V2M2引擎传奇源码2024BLUE升级版[原始团购版]_1234FCOM专注游戏工具及源码例子分享下载地址:BlueCodePXL…

适合技术小白入门 AI 编程的六个场景

前言 AI 编程最近特别热闹。 自媒体文章说它很强大,确实身边也会看到技术小白用它做出酷炫作品,令人艳羡。 但你自己用时却常遇到坑,找技术朋友一问听到的回答是“AI 干不了这个、铁定会把你带沟里去”。 谁说得对?技术小白到底能…

Linux——磁盘分区、挂载

Linux 分区 原理介绍 原理图如下 当我们在/home目录下新建一个文件a.txt时,该文件实际上是存放在硬盘B的分区1中的,这就是图里说的,当进入某个目录,可以进入到该目录下挂载的分区里的意思 硬盘说明 应用实例:挂载一个…

Linux的六个入侵检查思路及预防

背景 入侵检查是保障计算机安全运行的重要手段之一, 通过操作系统的静态配置分析、日志分析、异常行为分析以及文件完整性等方式来做检查,来判断我们的操作系统是否有受到入侵。今天阿祥就介绍十个简单的入侵检查思路及应对措施,希望对大家有…

基于JavaWeb开发的java springmvc+mybatis学生考试系统设计和实现

基于JavaWeb开发的java springmvcmybatis学生考试系统设计和实现 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各…

45岁被裁员的程序员,何去何从?

在当今快速变化的技术行业,职业生涯的稳定性受到挑战。在45岁被裁员,对很多程序员来说,可能是一种惊慌失措的体验。然而,这个阶段也可以被视为一个重新审视和调整方向的机会。本文将对可能的出路进行全方位的分析,并提…

音视频入门基础:FLV专题(9)——Script Tag简介

一、SCRIPTDATA 根据《video_file_format_spec_v10_1.pdf》第75页到76页,如果某个Tag的Tag header中的TagType值为18,表示该Tag为Script Tag(脚本Tag,又称Data Tag、SCRIPTDATA tag)。这时如果Filter的值不为1表示未加…