自动化测试基础 --- Jmeter

前置环境安装

首先我们需要知道如何下载Jmeter

这里贴上下载网站Apache JMeter - Download Apache JMeter

我们直接解压,然后在bin目录下找到jemter.bat即可启动使用

成功打开之后就是这个界面

每次打开可以用这种方式切换成简体中文

或者直接修改properties文件修改对应的语言包

接口测试自动化基础

我们都知道接口测试可以使用postMan或者使用浏览器直接查看数据

那我们为啥使用Jmeter呢?

笔者认为是因为Jmeter可以实现自动化

可以实现循环接口测试  

假设a接口对登录依赖 我们可以提取登录的验证信息以某种形式传给a接口

首先得先添加一个线程组(先使用一个线程)

这里的线程组就可以模拟多个用户访问了

接着我们就可以创建对应的HTTP请求了

为了查看结果,我们得再创建一个查看结果树来进行查看接口返回的结果

我们不妨试一下,请求个api试试

本地写了一个最简单的测试一下结果

如果a对b有依赖关系我们就将b写成一个代码片段 

可以保存下来使用一个include模块控制器即可

我们都知道不同环境都需要测试

开发环境/测试环境/预发布环境/发布环境

不同的环境测试改来改去比较繁琐

我们就可以使用自定义变量

这样我们每次只需要实现对相同变量的修改即可

这也是自动化最基础的应用

对一个接口使用多组数据输入咋办???
无所谓,循环和csv文件导入会出手

对应的txt文件/csv一样

第一行是变量名称,可以在很多地方引用

JSON断言

我们对于返回的结果总要进行一定的验证

这里的验证可以放在csv文件中作为预期结果

当http请求失败后 我们会实现

通常我们可以判断code和对应的message

具体情况具体分析 实现自动化验证

对核心数据都需要测试

使用公共数据咋办,下一个接口对上一个接口有依赖关系

我们直接使用Json提取器提取上一个接口的返回信息

比如登录的token....

Jmeter连接数据库

我们知道开发的信息数据来源一定是数据库

有些时候我们可以直接连接数据库验证信息

比如说我现在要验证1w个用户的登录

这时候使用csv肯定不行啊

或者是抽查某些数据

这时候我们使用JDBC连接数据库

在这里填入mysql的jar包或者是对应的jar包驱动即可

然后我们直接写sql即可

这里获取的数据库变量也是可以直接进行断言的

Jmeter调试

这里可以看到目标结果和实际结果

注:我们不知道数据库会返回对应多少条数据

所以下面设置的变量会变成 变量_1  变量_2.....对应查出来的数据

随机查出一条数据

ORDER BY RAND()  limit 1 

问题

假设我现在需要搞10000条数据来验证咋办?

有人说循环?  多线程??

都不ok 

循环多次访问数据库很容易就造成死锁了

多线程也是不到万不得已不去用的,因为出错概率很高且不好处理

这里就得使用V函数来操作了

使用这样的方式在变量中加入一个子变量

Jmeter 梯度压测

开始的时候使用多少个线程来压测??

不清楚,使用梯度压测性价比更高,逐步加压

这里需要下载对应的jar包解压放到对应的bin目录下

下载地址:Install :: JMeter-Plugins.org

首先我们说说负载测试压力测试和性能测试的区别

首先性能测试包括压力测试和负载测试

负载测试主要就是观察一个系统性能的拐点,第一次也可以做为基准测试的标准

压力测试主要就是给服务器一定的压力(一般在40%以下),进行稳定性测试,持续长时间查看一个系统的稳定程度

主要的指标就是并发数/吞吐量/错误率这样

但是我们如何知道需要引入多少个线程呢

这里梯度压测就登场了

我们只需要查看这个接口需要多少的性能指标 找到对应的性能拐点

同一时间去观察一下此刻的线程数 就可以知道使用多少线程去测试这个接口了

然后我们还可以看汇总报告

一个发送多少个请求以及响应时间  吞吐量  错误率等....

加上这个图就能实现以上功能了

但是别以为这就是压测了

真正的压测是需要知道对应的分析原因的

JVM? mq 缓存  哪里出现了问题 调优才是关键

因为光靠一张图开发也能轻松知道啊

我直接创建几个线程不是轻轻松松

OK本期分享就到这里 

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

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

相关文章

C 语言中怎么产生真正的随机数?

在C语言中&#xff0c;要产生真正的随机数&#xff0c;我们通常使用标准库中的 <stdlib.h> 头文件中提供的随机数生成函数。 这些函数可以生成伪随机数&#xff0c;但它们在一定程度上是随机的&#xff0c;足以满足大多数应用程序的需求。 1. 伪随机数生成函数 C标准库…

《C语言文件处理:从新手到高手的跃迁》

&#x1f4c3;博客主页&#xff1a; 小镇敲码人 &#x1f49a;代码仓库&#xff0c;欢迎访问 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f30f; 任尔江湖满血骨&#xff0c;我自踏雪寻梅香。 万千浮云遮碧…

【计算机毕设】基于SpringBoot的在线拍卖系统 - 免费源码(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 研究目的 本项目旨在设计并实现一个基于Spring Boot的在线拍卖系统&#xff0c;为用户提供便捷的拍卖服务&#xff0c;实现商品的竞拍和交易功能&#xff0c…

前端 | 数据统计及页面数据展现

文章目录 &#x1f4da;实现效果&#x1f4da;模块实现解析&#x1f407;html&#x1f407;css&#x1f407;javascript &#x1f4da;实现效果 折线图分别展现当前累计单词总数及每篇新增单词数&#xff0c;鼠标悬浮读取具体数值。 数值统计 词云图展现&#xff0c;及点击查看…

在线旅游网站,基于 SpringBoot+Vue+MySQL 开发的前后端分离的在线旅游网站设计实现

目录 一. 前言 二. 功能模块 2.1. 登录界面 2.2. 管理员功能模块 2.3. 用户功能模块 三. 部分代码实现 四. 源码下载 一. 前言 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff0c;旅游网站当然…

Error: Maximum response size reached

错误原因复现 请求下载的文件是4g的&#xff0c;postman报错Error: Maximum response size reached 解决办法 Postman设置请求时长和数据大小 Settings&#xff0c;打开设置面板 postman有默认请求时间&#xff0c;正常的postman请求后端少量数据&#xff0c;返回特别快。但…

美颜滤镜SDK解决方案,稳定可靠,易于集成

高质量的视觉体验已成为企业吸引用户、提升品牌形象的关键&#xff0c;美摄科技凭借其领先的美颜滤镜SDK技术&#xff0c;为企业提供了从人像美颜到多元场景处理的全方位解决方案&#xff0c;助力企业轻松实现视觉升级。 一、强大能力&#xff0c;覆盖多场景 美摄科技美颜滤镜…

洪水仿真模拟(ArcGIS),水利数字孪生新利器

这两天ArcGIS Pro的官方账号释放了一个名为“Flood Simulation in ArcGIS Pro”的洪水模拟功能视频。根据视频详情页的介绍&#xff0c;该洪水仿真模拟功能会作为新功能出现在ArcGIS Pro 3.3中。 由于我目前从事的主要应用方向都是弱GIS的领域&#xff0c;所以我已经很久没有再…

无线收发模块家电控制实验

zkhengyang可申请加入数字音频系统研究开发交流答疑群(课题组) 当然可以先用固定电平发送&#xff0c;可以实现&#xff0c;0/1数据发送&#xff0c;接收。 可以使用51单片机来编码码&#xff0c;解码&#xff0c;或者任何MCU或者SOC&#xff0c;DSP&#xff0c;FPGA。 注意G…

银河麒麟操作系统 v10 离线安装 Docker v20.10.9

1查看系统版本 [rootweb-0001 ~]# cat /etc/os-release NAME"Kylin Linux Advanced Server" VERSION"V10 (Tercel)" ID"kylin" VERSION_ID"V10" PRETTY_NAME"Kylin Linux Advanced Server V10 (Tercel)" ANSI_COLOR"…

OBS插件--自定义着色器

自定义着色器 自定义着色器是一个滤镜插件&#xff0c;可以用于源和场景。插件自带一百多款滤镜效果&#xff0c;支持自己编写效果代码。 下面截图演示下操作步骤&#xff1a; 首先&#xff0c;打开 OBS直播助手 在插件中心左侧导航栏&#xff0c;选择 滤镜 项&#xff0c;然…

在go-zero中使用jwt

gozero使用jwt 两个步骤 获取token验证token 前端获取token 先编写 jwt.api 文件&#xff0c;放在api目录下 syntax "v1"info (title: "type title here"desc: "type desc here"author: "type author here"email: &quo…

经常睡不好觉?试试用上华为手环9新升级的睡眠监测功能

睡眠问题是不是经常困扰着你呢&#xff1f;听说&#xff0c;华为手环9的睡眠监测功能升级了&#xff0c;无论是入睡前、睡眠中还是睡醒后&#xff0c;都能够帮助我们改善睡眠&#xff0c;让我们告别糟糕的睡眠质量&#xff01; 睡觉前&#xff0c;打开华为手环9的睡眠模式&…

二值信号量、计数型信号量与互斥量

二值信号量 什么是信号量? 信号量(Semaphore),是在多任务环境下使用的一种机制,是可以用来保证两个或多个关键代码段不被并发调用。 信号量这个名字,我们可以把它拆分来看,信号可以起到通知信号的作用,然后我们的量还可以用来表示资源的数量,当我们的量只有0和1的时…

1.基于python的单细胞数据预处理-特征选择

文章目录 特征选择背景基于基因离散度基于基因归一化方差基于基因皮尔森近似残差特征选择总结 参考&#xff1a; [1] https://github.com/Starlitnightly/single_cell_tutorial [2] https://github.com/theislab/single-cell-best-practices 特征选择背景 现在已经获得了经过…

企业微信集成H5授权登录相关知识(二)

流程&#xff1a; 1.前端请求企业微信获取code&#xff1a;官网网页授权链接 2.企业微信返回的code请求后端判断是否已绑定系统账户 3.后端根据企业微信code&#xff0c;accessToken获得userId 4.userId获取user进行oauth2授权方式进行免密登录 相关知识&#xff1a; 一&a…

初阶数据结构—顺序表和链表

第一章&#xff1a;线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就…

土壤墒情自动监测站—墒情异常数据报警提示

TH-TS600土壤墒情自动监测站通常配备有预警提示功能&#xff0c;用于在墒情出现异常情况时及时向用户发出警告。这一功能对于农业生产至关重要&#xff0c;因为它可以帮助农民或农田管理者及时发现土壤墒情的变化&#xff0c;并采取相应的措施来确保作物健康生长。 土壤墒情自动…

Redis之Stream流

reidis为了抢占市场份额&#xff0c;推出了自己的消息队列&#xff0c;Stream流&#xff0c; 常用操作如下&#xff1a; xadd name id值 key value key1 value1...&#xff1a;若不存在为name的stream流&#xff0c;则创建一个新的名为name的stream流。这里id相当于数据库中的…

修改ollama模型文件下载位置

修改ollama模型文件下载位置。你如果不改这个东西&#xff0c;所有的模型文件都会下到c盘&#xff0c;土豪随意。 这里修改环境变量&#xff1a; OLLAMA_MODELS将这个环境变量设置为你想存放的路径。然后重启电脑&#xff01;