【测试】JMeter从入门到进阶

本文参考 Jmeter自动化测试工具从入门到进阶6小时搞定,适合手工测试同学学习_哔哩哔哩_bilibili

JMeter介绍

JMeter 是 Apache 组织使用 Java 开发的一款测试工具:
1、可以用于对服务器、网络或对象模拟巨大的负载
2、通过创建带有断言的脚本来验证程序是否能返回期望的结果

优点:
1. 开源、免费 2. 跨平台 3. 支持多协议 4. 小巧 5. 功能强大
缺点:
1. 不支持IP欺骗 2. 使用JMeter无法验证JS程序,也无法验证页面UI,所以要和Selenium配合来完成Web2.0应用的测试

下载安装查看 【超详细】Jmeter安装配置详细教程_jmeter安装教程以及jdk环境配置-CSDN博客


JMeter基本使用

这里查询我的博客系统的接口。

添加线程组

添加HTTP请求

添加结果树


线程组相关设置

进 程: 正在运行的程序
线 程: 是进程中的执行单元
线程组: 进程中有许多线程,为了方便管理,可以对线程按照性质分组,分组的结果就是线程组
三者关系:一个进程可以包含多个线程组,一个线程组可以包含多个线程

特殊线程组

setUP线程组:最先执行的线程。

tearDown线程组:最后执行的线程组(要勾选主线程结束后运行它)

这两个线程组在任何情况下都是一个最先,一个最后。

开发模型线程组:在设计自定义负载模式时将非常有用,而无需计算线程的数量。表达式中的函数有助于生成动态工作负载模型。使用这个线程组,不需要计算测试所需线程的确切数量,只要负载生成器足够强大,可以生成负载模式。


常用配置元件

JMeter配置元件可以用来初始化默认值和变量,读取文件数据,设置公共请求参数,赋予变量值等,以便后续采样器使用。将在其作用域的初始化阶段处理。配置元件(Config Element)提供对静态数据配置的支持,可以为取样器设置默认值和变量。

详见Jmeter(八) - 从入门到精通 - JMeter配置元件(详解教程) - 北京-宏哥 - 博客园 (cnblogs.com)

HTTP请求默认值

http请求默认值:被复用的内容的封装。比如IP,端口等这些信息都是重复的,可以提取到这里,后续就不用写了。

信息头管理器

支持用户添加或者重写HTTP请求头。JMeter支持多个信息头管理器。多个信息头条目合并成一个信息头列表,跟随http请求一并提交到服务端。这里我们只添加字符集和信息内容为json

用户自定义变量

对于一些常见的变量,我们可以提取到这里。

CSV数据文件设置

使用

JDBC连接数据库

现在我们想要把数据库中的内容查询出来,并在百度中查询。

下载jar包

在maven仓库中下载所需的数据库jdbc的jar包。Maven Repository: Search/Browse/Explore (mvnrepository.com)

添加jar包

添加元件

添加JDBC取样器

查看结果

添加调试取样器

添加HTTP请求取样器

这个取样器来调百度的接口。


函数

下面将介绍几个常见的函数。

counter计数器函数

然后复制生产的函数使用即可。

true和false的使用

问题已找到,版本匹配错误。

random随机数函数

time函数


前置处理器

Jmeter的前置处理器可以用来在取样器执行前做一些数据准备操作,也需要注意使用的作用域问题。常用的前置处理器有:用户参数、BeanShell预处理器。

用户参数

使用用户参数传参的方法通常不使用,更多的还是用CSV文件传参,因为它把脚本和数据分开了。

使用还是和CSV数据文件一样。

BeanShell预处理器

线程组B想要使用线程组A中的结果数值时,就可以用到该处理器。在同一个线程组中可以用后置处理器。

设置全局变量

把生成的代码放到BeanShell取样器中

获取全局变量

哪里需要这个变量就把代码复制到哪里。

对应关系如下:

结果如下


后置处理器

XPath提取器

先用一个http请求到知乎的官网, 然后拿到它的title放到百度中搜索.

正则表达式提取器

如果从标签文档提取数据建议使用 XPath 提取器,如果从非标签文档提取数据建议使用正则表达式提取器。

现在准备把之前博客列表中的标题拿出来放到百度中搜索。

同上添加正则表达式提取器。


断言使用

断言:让程序代替人工判断响应结果是否符合预期
分类:
响应断言 = 断言状态码和响应体
大小断言 = 判断响应内容的字节长度
断言持续时间 = 判断响应时间(发送结果到得到响应之间的时间)

响应断言

大小断言

同响应断言,只不过比较的是长度。

断言持续时间


逻辑控制器

逻辑控制器可以控制采样器(samplers)的执行顺序。由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。JMeter逻辑控制器可以对元件的执行逻辑进行控制,除仅一次控制器外,其他可以嵌套别的种类的逻辑控制器。

if逻辑控制器

场景如下: 当用户自定义变量 if_key = value时, 访问百度官网.

ForEach控制器

在百度中一次所有 java c++ python.

循环逻辑控制器

线程1访问百度官网5次, 线程2访问bing官网10次. 

循环控制器比在线程组中控制循环次数要灵活的多.


性能测试

模拟各种正常的、峰值的测试环境,检测程序的各项性能指标是否能够达标。

高并发场景设置

JMeter 中内置了 定时器,可以实现时间模式相关的性能测试

需求:同一时刻 100 个同学去访问博客系统的博客列表,统计高并发情况下平均响应时间以及错误率(高并发)

添加同步定时器

首先添加一个线程组线程数量为100。

添加聚合报告

查看结果

高频率场景设置

一个用户以 20QPS的频率访问博客系统的博客列表,持续15秒,统计服务器的平均响应时间
QPS: Query per Seconds 每秒查询数(查询率),每秒访问多少次服务器

循环次数 = 访问频率 * 持续时间
每分钟访问次数 = 访问频率 * 60

添加常数吞吐量定时器

添加聚合报告

同上。

观察结果

上面只是对接口的测试,并没有获取其他资源。若想模拟浏览器操作,获取dom元素,查看该博客操作即可。jmeter压测学习11-模拟浏览器访问web页面 - 上海-悠悠 - 博客园 (cnblogs.com)

图形化报告制作

在 JMeter 中可以以图形化(饼状图、柱状图...)的方式显示脚本运行结果,相比聚合报告或查看结果树更直观,用户体验更友好。

对于上述的第二个场景设置我们使用图形化展示。

  1. 进入bin目录下的cmd
  2. 输入命令:jmeter -n -t 脚本文件 -l 日志文件 -e -o 目录
    -n 无图形化运行
    -t 被运行的脚本
    -l 将运行信息写入日志文件(文件要么不存在自动创建,要么里面是空的)
    -e 生成测试报告
    -o 指定报告输出目录(目录要么不存在自动创建,要么里面是空的)
  3. 查看结果
jmeter -n  -t D:\code\test\blog\博客测试计划.jmx -l D:\code\test\blog\log\test.txt -e -o D:\code\test\blog\graph

接口功能测试

测试博客系统的添加博客功能。由于该功能必须得登录才能操作,所以这里

准备工作

添加cookie管理器

由于登录是需要图形验证码的,我们这里直接手动登录复制cookie。操作见下面的博客:

Jmeter入门18 Jmeter添加cookie的两种方式 - dinghanhua - 博客园 (cnblogs.com)

添加信息头管理器

添加http请求默认值

准备测试用例

这里只是简单写了个测试用例

id,title,content  其中id可以为空,其他的都不能为空

测试接口

CSV数据文件设置

表单传值

对照结果

根据HTTP请求结果对照。

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

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

相关文章

9个最流行的文本转语音引擎【TTS 2024】

在快速发展的技术世界中,文本转语音 (TTS) 引擎正在取得显著进步。从增强各种应用程序中的用户体验到创建逼真且引起情感共鸣的语音输出,TTS 引擎正变得不可或缺。在这里,我们介绍了 2024 年为行业树立新标准的九款最佳 TTS 引擎。 NSDT工具推…

应用层协议(上)Http(URL、Cookie、Session)内含逻辑图解通俗易懂!

绪论​ “少年没有乌托邦 心向远方自明朗”,本章是应用层常用且重要的协议htttp,没看过应用层建议一定先看那一篇后再看本章才能更好的去从上到下的理解应用层。 话不多说安全带系好,发车啦(建议电脑观看)。 1.Http协…

Mac移动硬盘选什么格式最好 Mac怎么用ntfs移动硬盘

在使用Mac电脑的过程中,很多用户可能有需要扩展存储空间的需求。选择合适的移动硬盘格式对于数据传输的效率和兼容性至关重要。本文将详细介绍Mac移动硬盘选什么格式好,以及Mac怎么用ntfs移动硬盘,帮助用户优化Mac的使用体验。 一、Mac移动硬…

悬浮翻译工具有哪些?工作学习必备的5款悬浮翻译工具

当我们身处异国他乡,或是工作中遇到多语种交流的需求时,语言障碍往往会成为一道难以逾越的高墙。 不过,在这个充满创新的时代里,技术已经为我们准备好了答案——屏幕翻译器app。它们不仅能够即时翻译屏幕上的文字,还能…

电脑回收站清空了怎么恢复?

在日常使用电脑的过程中,不小心清空回收站导致重要文件丢失的情况时有发生。面对这种情况,我们不必过于慌张,因为有多种方法可以尝试恢复被清空的文件。本文将为您详细介绍几种有效的恢复方法,帮助您找回宝贵的文件。 方法一&…

芯片后端之 PT 使用 report_timing 产生报告 之 -nets 选项

今天,我们再学习一点点 后仿真相关技能。 那就是,了解 report_timing 中的 -nets 选项 。 如果我们仅仅使用如下命令,执行后会发现: pt_shell> report_timing -from FF1/CK -to FF2/d -delay_type max 我们使用命令 report_timing 报出的如上路径延时信息,仅仅显示…

Maven的一些相关知识【重修】《包括私服搭建!》

mvnrepository.com Maven 下载jar包的位置! 【该部分有教程】 这是什么nb代码投稿视频-这是什么nb代码视频分享-哔哩哔哩视频 MAVEN 的私服搭建: https://zhuanlan.zhihu.com/p/520107316 2、maven私服搭建及应用(下)_哔哩…

R7RS标准之重要特性及用法实例(三十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…

frameworks 之InputReader

frameworks 之InputReader InputManagerService 初始化InputManagerService 启动InputReader 事件的读取设备节点注册和监听设备输入事件的读取 InputReader 事件的处理设备的添加和删除处理触摸事件的处理数据的加工和分发 android 输入事件 主要分 2个流程 事件读取 和 事件…

python的jieba库中文分词词频统计和合并

可能在设置问题模板的时候需要分析已有问句,然后统计词频,根据词频设计问题模板

31套科技风PPT免费分享

目录 部分展示 部分展示 #PPT下载 「科技风模板」链接:https://pan.quark.cn/s/fb2f39a1d343 链接永久有效,点击这里下载,记得给个赞哦

Java生成一个5位的随机验证码(大小写字母和数字)

生成验证码 内容:可以是小写字母,也可以是大写字母,还可以是数字 规则:长度为5 内容中四位字母,一位数字 其中数字只有一位,但是可以出现在任意位置。 package test;impo…

QT error: expected ‘:‘ before ‘slots‘ public slots:

C:\Users\Administrator\Desktop\VideoHill\GikISearch\net.h:10: error: expected : before slots public slots: 先看看头文件里有没有加上引用包含#include <xxxx> 也就是一个引用包含都没有 没有就会报这个。至少一个。 加上后

【架构-24】XML和JSON

XML&#xff08;可扩展标记语言&#xff09;和JSON&#xff08;JavaScript对象表示法&#xff09;是两种常用的数据格式&#xff0c;用于在不同系统之间传输和交换数据。它们各有优点和缺点&#xff0c;适用于不同的场景。下面是对XML和JSON的简要介绍以及它们之间的对比。 XM…

Chapter 01 Vue入门

欢迎大家订阅【Vue2Vue3】入门到实践 专栏&#xff0c;开启你的 Vue 学习之旅&#xff01; 文章目录 前言一、Vue简介二、el:挂载点三、data&#xff1a;数据对象四、第一个Vue程序五、安装 Vue 开发者工具 前言 Vue 是一个框架&#xff0c;也是一个生态&#xff0c;其功能覆盖…

Modbus-TCP——Libmodbus安装和使用(Ubuntu22.04)

1、简介 Modbus是一种通信协议&#xff0c;广泛用于工业自动化和过程控制领域&#xff0c;允许不同设备之间进行数据交换。libmodbus是一个用于 Modbus 协议的开源库&#xff0c;主要用于开发和实现 Modbus 协议的客户端和服务器应用程序。libmodbus 以 C 语言编写&#xff0c…

【云原生】MySQL的源码编译

1、实验环境 &#xff08;1&#xff09;虚拟机版本&#xff1a;RHEL7.9 &#xff08;2&#xff09;主机 主机名称IP地址mysql-node1172.25.254.10mysql-node2172.25.254.20 2、实验步骤 注意&#xff1a;我们的两台主机都要进行MySQL源码编译&#xff0c;并且操作相同&…

探索 InternLM 模型能力边界

一、任务介绍 在 CompassArena 中选择双模型对话&#xff0c;与InternLM2.5及另外任意其他模型对话&#xff0c;收集 5 个 InternLM2.5 输出结果不如其他模型的对话案例&#xff0c;以及 InternLM2.5 的 5 个 Good Case。 任务地址&#xff1a;Docs Bad Case 1&#xff1a; 模…

Transforms的学习以及地址问题

一、地址问题 在学习Dataset类的实战与Tensboard的学习中&#xff0c;有出现一些地址的问题&#xff1a; 1、相对地址 相对地址的使用&#xff1a; 使用于在从端口中&#xff0c;打开TensorBoard的页面。使用的就是相对地址&#xff1b;例如&#xff1a; tensorboard --log…

新书推荐:《分布式商业生态战略:数字商业新逻辑与企业数字化转型新策略》

近两年&#xff0c;商业经济环境的不确定性越来越明显&#xff0c;市场经济受到疫情、技术、政策等多方因素影响越来越难以预测&#xff0c;黑天鹅事件时有发生。在国内外经济方面&#xff0c;国际的地缘政治对商业经济产生着重大的影响&#xff0c;例如供应链中断&#xff0c;…