【测试】JMeter从入门到进阶

news2024/9/21 16:37:58

本文参考 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.coloradmin.cn/o/2075199.html

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

相关文章

C3-80螺栓介绍及其特性

C3-80 螺栓作为马氏体不锈钢高强度紧固件的一员,在工程应用中扮演着重要角色。它不仅具有较高的强度,还拥有良好的耐腐蚀性能,适用于多种恶劣环境下的工业应用。 C3-80螺栓概述 C3-80螺栓是一种马氏体不锈钢材质的高强度紧固件,其…

电商数据怎么分析?电商数据接口助力电商运营中每日必看5个底层数据

数据分析充电站——深入探索中小企业数字化转型,专注提供各行业数据分析干货、分析技巧、工具推荐以及各类超实用分析模板,为钻研于数据分析的朋友们加油充电。 电商运营店铺涉及大量数据,包括用户行为、交易记录、库存信息等,如何…

【C++八股题整理】虚函数

C八股题整理 - 虚函数 虚函数虚函数的定义?C11引入的override和final关键字的作用?虚函数的实现原理?虚函数表(vbtl)和虚函数表指针(vptr)虚函数表、虚函数表指针的生成时期及存储位置&#xff…

JS常用事件示例

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>JS函数中的事件</title> <…

钡铼技术BL196MQTT远程IO模块工业物联网应用

随着工业物联网&#xff08;IIoT&#xff09;的迅猛发展&#xff0c;工业设备之间的互联互通已成为推动产业升级的关键因素之一。在这个背景下&#xff0c;钡铼技术推出了一款名为BL196MQTT的远程IO模块&#xff0c;该模块专为工业自动化环境中的数据采集与控制而设计&#xff…

搭建深度神经网络(DNN)

利用 numpy 工具&#xff0c;手动搭建一个 DNN 深度神经网络。 定义网络结构 初始化模型参数 循环计算&#xff1a;前向传播/计算当前损失/反向传播/权值更新 1、初始化模型参数 对于一个包含L层的隐藏层深度神经网络&#xff0c;我们在初始化其模型参数的时候需要更灵活一点…

触想强固型工业显示器加速海上油气勘探开发

石油作为现代工业发展的主要能源&#xff0c;已成为国际间政治、经济博弈的重要工具。 一、行业发展背景 过去百年间&#xff0c;人类对陆地油气资源的勘探开发逐渐趋于饱和&#xff0c;而面对持续增长的全球能源需求&#xff0c;海洋勘探已成为当今油气能源角逐的主要“战场”…

Linux文件IO缓存

一、缓冲区大小对 I/O 系统调用性能的影响 总之&#xff0c;如果与文件发生大量的数据传输&#xff0c;通过采用大块空间缓冲数据&#xff0c;以及执行更少的 系统调用&#xff0c;可以极大地提高 I / O 性能 二、stdio 库的缓冲 当操作磁盘文件时&#xff0c;缓冲大块数据以…

合宙LuatOS产品规格书——Air700EAQ

Luat Air700EAQ是合宙的LTE Cat.1bis通信模块&#xff0c;采用移芯EC716E平台&#xff0c;支持LTE 3GPP Rel.13技术。 该模块专为满足小型化、低成本需求而设计&#xff0c;具备超小封装和极致成本优势。 Air700EAQ支持移动双模&#xff0c;内置丰富的网络协议&#xff0c;集…

Qt第二十章 数据库操作

文章目录 Qt操作数据库QSqlDataBaseQSqlQuery执行SQL语句 QSqlRecordQSqlField数据库模型QSqlQueryModelQSqlTableModelQSqlRelationalTableModel 编译MySql驱动msvc版本MySql客户端程序部署 Qt操作数据库 需要在cmakelist加上Sql模块 QSqlDataBase 可以通过静态成员查看支持的…

北京青蓝智慧科技:2024(第九届)世界物联网大会将于11月在京举行

2024年11月&#xff0c;北京将迎来第九届世界物联网大会的盛大启幕。 这一年度盛会由世界物联网大会、中国移动通信联合会、外交理事会携手举办&#xff0c;得到了世界绿色设计组织、世界物联网基金会等机构的大力支持。 大会的宗旨在于推动全球智能联网数字经济的创新进展&a…

Golang | Leetcode Golang题解之第373题查找和最小的K对数字

题目&#xff1a; 题解&#xff1a; func kSmallestPairs(nums1, nums2 []int, k int) (ans [][]int) {m, n : len(nums1), len(nums2)// 二分查找第 k 小的数对和left, right : nums1[0]nums2[0], nums1[m-1]nums2[n-1]1pairSum : left sort.Search(right-left, func(sum in…

Notion 使用详解——基础教程

《Notion 使用详解——基础教程》 一、Notion简介 Notion是一款集笔记、任务、数据库、wiki、知识库等功能于一体的生产力工具&#xff0c;其强大的模块化设计和高度自定义能力&#xff0c;使其成为个人和团队提高工作效率的理想选择。 二、基础操作 1. 创建页面&#xff1a;…

几个很棒的AI问题和精彩回答

这里有几个很棒的与AI相关的问题和精彩的回答&#xff0c;分享给大家 2024&#xff0c;怎么以10倍的速度设计AI产品&#xff1f; 回答嘉宾&#xff1a;Tidyread作者 根据产品定位&#xff0c;对整体风格进行定调 Tidyread 希望人们能从中建立资讯阅读的秩序感&#xff0c;所以…

阿里云对象存储OSS的前端直传-demo

原由 在项目里有时候会碰到比如上传文件相关的&#xff0c;一般都是后端提供个接口&#xff0c;然后我们上传的时候后端再传到阿里OSS或者其他服务商的对象存储&#xff0c;然后把最终的url拿到存起来或者返回给前端&#xff0c;这种方式其实在上传图片的频率不高的业务场景中…

电商数据接口助力电商数据分析||电商运营每日必看5个底层数据

数据分析充电站——深入探索中小企业数字化转型&#xff0c;专注提供各行业数据分析干货、分析技巧、工具推荐以及各类超实用分析模板&#xff0c;为钻研于数据分析的朋友们加油充电。 电商运营店铺涉及大量数据&#xff0c;包括用户行为、交易记录、库存信息等&#xff0c;如何…

Python测试之测试覆盖率统计

本篇承接上一篇 Python测试框架之—— pytest介绍与示例&#xff0c;在此基础上介绍如何基于pytest进行测试的覆盖率统计。 要在使用 pytest 进行测试时检测代码覆盖率&#xff0c;可以使用 pytest-cov 插件。这个插件是基于 coverage.py&#xff0c;它能帮助你了解哪些代码部…

【PySide6-QML】2. 添加菜单栏

文章目录 前言实现添加菜单栏添加菜单添加子菜单点击动作添加快捷键 前章回顾&#xff1a;【PySide6-QML】1. 创建新项目 前言 本文使用 MenuBar 添加工具菜单栏&#xff0c;Action 添加子菜单&#xff0c;并添加快捷键和动作回调。 实现 添加菜单栏 import QtQuick.Contr…

centos mongodb安装+开机启动

1.mongodb安装 Centos系统中mongodb的安装详解_centos安装mongodb-CSDN博客 步骤1-下载 下载地址&#xff1a;Download MongoDB Community Server | MongoDB 步骤2-安装-修改配置 Centos系统中mongodb的安装详解_centos安装mongodb-CSDN博客 下载包到 /usr/local/ 解压 tar…

新一代RK3576芯片,3588平替吗?

瑞芯微RK3576是一款高性能、低功耗的SoC&#xff08;系统级芯片&#xff09;处理器&#xff0c;适用于基于ARM的PC、边缘计算设备、个人移动互联网设备等多种应用场景。它采用Arm架构的八核心CPU&#xff0c;集成了GPU、MCU、NPU、VPU等多种计算核心&#xff0c;并具有丰富的外…