Mac下Jmeter安装及基本使用

news2024/11/15 23:28:08

本篇文章只是简单的介绍下Jmeter的下载安装和最基本使用

1、初识Jmeter

前一段时间客户端app自测的过程中,有偶现请求某个接口返回数据为空的问题,领导让我循环100次请求这个接口,看看有没有结果为空的问题。听同事说有Jmeter的专业测试工具,正好不是很忙,于是上手Jmeter来测试下这个接口。

Jmeter是什么?

Apache Jmeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试,最初被设计用于Web应用测试,后来扩展到其他测试领域。

Jmeter有什么用?

  1. 可以用于测试静态和动态资源,例如静态文件、Java小服务程序、Java对象、数据库等;
  2. 可以对服务器、网络或对象模拟巨大的负载,来自不同压力级别下测试它们的强度和分析整体性能;
  3. 可以对应用程序做功能/回归测试;

Jmeter的优势

完全可移植性和100%纯Java,跨平台性非常好;

2、Jmeter下载与安装

进入Apache Jmeter官网首页 https://jmeter.apache.org/, 点击左边的Download Releases
在这里插入图片描述

点击Binaries下的压缩包下载,目前最新的版本为5.4.1

在这里插入图片描述

下载成功后,解压直接使用,不用安装,所以把压缩包解压到常用的软件文件夹下
在这里插入图片描述

打开终端,进入到该解压文件夹下的bin目录下

在这里插入图片描述

选中apache-jmeter-5.4.1文件夹,右键-服务-新建位于文件夹位置的终端窗口

在这里插入图片描述

输入命令:sh jmeter,打开Jmeter软件
在这里插入图片描述

软件启动页

在这里插入图片描述

软件设置中文,Options-Choose Language-Chinese(Simplified)

在这里插入图片描述

3、Jmeter基本使用

Jmeter的使用,我是以需求为导向的【在这里是指定接口循环100次】,以完成需求为目标,跟着需求来学习这个Jmeter。

1.创建线程组

在这里插入图片描述

线程组的基本配置
在这里插入图片描述

我这里对线程组的配置是1个线程数,间隔1秒,循环5次
在这里插入图片描述

2.添加http请求

在新建的线程组下,添加-取样器-Http请求

在这里插入图片描述

假如某个接口为:https://app.test.com/app_login?userName=hahaha&password=7844112b3344112b34f7

1.https请求需要在协议里明确填写https,
2.服务器路径或ip项填写:app.test.com【注意不用填写https://,末尾也没有/】
3.Http请求项根据当前接口的请求方式填写,一般为post或get
4.路径项填写:/app_login?userName=hahaha&password=7844112b3344112b34f7
5.端口号:https方式请求,端口号需要填写443,http方式不用填写
6.请求参数,根据参数字段值进行添加

在这里插入图片描述

接口参数配置好之后,我们添加一个察看结果树,就可以进行测试了

3.添加察看结果树

选中http请求,右键-添加-监听器-察看结果树

在这里插入图片描述

在电脑上创建一个csv文件,用于保存测试的结果,然后在察看结果树中配置该文件
在这里插入图片描述

然后就可以进行测试运行这个接口了,选中线程组,右键启动

在这里插入图片描述

会提示察看结果树的文件已存在,是覆盖文件还是附加到现有文件,这个根据需求选择就好

在这里插入图片描述

点击察看结果树,会看到,右边列表里请求的结果,绿色对号表示接口请求成功

在这里插入图片描述

响应的数据结果有多种查看方式可以选择

在这里插入图片描述

本地察看结果树保存的文件数据,有一些基本的测试结果数据可供查看
在这里插入图片描述

至此,基本上是可以满足对某个接口压测100次的,但是呢,查看结果比较麻烦,需要一个个手动点击每一次的接口去查看结果。比如我现在项目中的接口返回的一个状态码字段ret,ret=0表示接口正常,有数据返回,ret=-2表示接口正常,无数据返回。手动点击100次查看结果,这个效率太低了,可以写一个脚本,把接口返回的某个字段保存到本地文件中,然后直接在文件中去查看结果,这样的话,会方便很多。

那么就用到了Jmeter的正则表达式提取器和BeanShell后置处理程序

4.添加正则表达式提取器

正则表达式提取器是提取响应结果中的指定数据

在这里插入图片描述

比如想要过滤接口返回的的ret字段值 { “ret”: 0 } ,配置如下
在这里插入图片描述

在这里插入图片描述

5.添加BeanShell 后置处理程序

在这里插入图片描述
在这里插入图片描述

脚本程序如下,将正则表达式匹配到的数据保存到本地文件中

在这里插入图片描述

源代码如下:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import org.apache.jmeter.samplers.*;
import org.apache.jmeter.config.*; 
import java.util.regex.Matcher;
import java.util.regex.Pattern;

FileWriter fstream = new FileWriter("/Users/xxx/Desktop/666.csv",true);       
BufferedWriter out = new BufferedWriter(fstream);
out.write(vars.get("ret")+"\n"); 
out.close();
fstream.close();
var ret=vars.get("ret");
if(ret!=0){
   log.info("ssssssssssssssssssssssssssssssssssssssssssssssssssssss,ret:"+ret);
}

log.info可以把日志打印在控制台
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.运行测试

选中http请求,右键启动

1. 先查看日志运行结果

在这里插入图片描述

发现10次运行,ret字段返回值都为0

2. 查看本地文件是否保存ret字段值

在这里插入图片描述

可以看到666.csv文件已经保存ret的值了,我们通过查看666.csv这个文件可以更方便的筛选我们想要的测试结果

4、总结

Jmeter测试接口的基本功能算是熟悉了,不过它还有很多强大的功能,目前因为没有用到,也就没有进一步深入研究,待以后用到的时候,继续学习

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

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

相关文章

Java数据结构学习和源码阅读(线性数据结构)

线性数据结构 链表 LinkList 链表的数据结构 一组由节点组成的数据结构,每个元素指向下一个元素,是线性序列。 最简单的链表结构: 数据指针(存放执行下一个节点的指针) 不适合的场景: 需要循环遍历将…

【C++】 使用红黑树模拟实现STL中的map与set

文章目录 前言1. 对之前实现的红黑树进行一些补充和完善1.1 析构1.2 查找 2. STL源码中map和set的实现3. 改造红黑树封装map和set3.1 红黑树结构修改3.2 map、set的结构定义3.3 insert的封装3.4 insert测试3.5 发现问题并解决3.6 红黑树迭代器实现3.7 封装set和map的迭代器并测…

uniapp scroll-view横向滚动无效,scroll-view子元素flex布局不生效

要素排查: 1.scroll-x属性需要开启,官方类型是Boolean,实际字符串也行。 2scroll-view标签需要给予一个固定宽度,可以是百分百也可以是固定宽度或者100vw。 3.子元素需要设置display: inline-block(行内块元素&#x…

国标GB28181视频平台EasyGBS通过对应密钥上传到其他平台展示的详细步骤来啦!

国标GB28181协议视频平台EasyGBS是基于国标GB28181协议的视频云服务平台,支持多路设备同时接入,并对多平台、多终端分发出RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。平台可提供视频监控直播、云端录像、云存储、检索回放、智能告警、语音对讲、平台级…

项目管理实战笔记:硬技能(下)

需求变更: pmp里面涉及需求变更的很多,尤其是CCB 对于CCB的需求变更,可能需要以下步骤: 1. 确定变更的原因和必要性:需要了解变更是因为业务需求的变化、技术方案的变更还是其他原因,以及变更是否是必要的…

内行才知道的新闻稿发布技巧,媒介盒子为你揭秘

不知道最近其他小伙伴有没有遇上以上说的一些情况,必须借助新闻稿发布达到营销推广的目的。 可是对于新闻稿发布这一块却不知道应该怎么办,尤其是新手上任,对于如何发布新闻稿是一头雾水。 新闻稿的发布是企业在公关传播中重要的一环&#…

如何将PDF文件转换为PPT文件?

如何将pdf转换成ppt?PDF文件作为常用的文件格式,不仅可以在教学过程中使用,还可以在营销展会、培训讲座等过程中使用。欧迪芬文件的使用,能够在一定程度上提升我们的办公效率。对于PDF文件来说,其中包含的元素非常多&a…

【算法刷题之数组篇(2)】

目录 1.leetcode-35. 搜索插入位置(简单)2.leetcode-74. 搜索二维矩阵(中等)3.leetcode-73. 矩阵置零(中等)4.leetcode-56. 合并区间(中等)5.leetcode-54. 螺旋矩阵(中等…

水溶性试剂Hexynoic acid STP ester,炔酸STP酯,NHS酯的极好替代品

产品简介:炔酸STP酯是一种具有末端炔丙基和STP酯基的水溶性试剂。STP酯是在水性环境中进行偶联反应的传统N-羟基琥珀酰亚胺(NHS)酯的极好替代品。炔丙基通过铜催化的叠氮化物-炔烃点击化学与含叠氮化物的化合物或生物分子反应,产生…

leetcode303. 区域和检索 - 数组不可变(java)

前缀和数组的应用 区域和检索 - 数组不可变题目描述前缀和数组代码演示 区域和检索 - 数组不可变 难度 - 简单 原题链接 - 区域和检索 - 数组不可变 题目描述 给定一个整数数组 nums,处理以下类型的多个查询: 计算索引 left 和 right (包含 left 和 righ…

解决运行在微信小程序中报[ app.json 文件内容错误] app.json: app.json 未找到(env: Windows,mp,1.05.2204

找到project.config.json文件夹 添加 "miniprogramRoot": "unpackage/dist/dev/mp-weixin/", 即可

发展全球电商业务,为什么首选Facebook Messenger电子商务?

Facebook Messenger电子商务就是使用Facebook的消息传递渠道Messenger来购买和销售产品或服务。通过将 Messenger与客户服务平台,例如SaleSmartly(SS客服)集成,企业可以利用渠道强大的消息传递功能为客户提供更加个性化和对话式的…

这个免费全景网站你知道吗,多篇教程教您如何创作全景作品

引言: 随着科技的不断进步,虚拟现实(VR)技术正逐渐融入我们的日常生活,为我们带来了没有过的沉浸式体验。其中,VR全景网站作为一种引领人们身临其境体验的创新方式,正在逐渐受到大众的关注。 蛙…

androidStudio或IDEA的通过gitBash打开插件

本人,一个资深的命令行,业余爱好者。常年直接vim,或者shell上服务器阅读代码。比较偏好使用GitBash来打开项目,进行git status,git diff,git add,commit等动作。 基于以上原因,本人开…

怎样通过本地电脑搭建SFTP服务器,并实现公网访问?

本地电脑搭建SFTP服务器,并实现公网访问 文章目录 本地电脑搭建SFTP服务器,并实现公网访问1. 搭建SFTP服务器1.1 下载 freesshd 服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2. 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内…

SecureCRT 备份Button Bar中所有Button

一、前言 Button Bar功能可以保存一些常用命令避免重复输入,但是有时候secureCRT的button bar经常莫名其妙消失,重装系统或软件后,也都需要重新一个个添加Button,如果能备份就能减少这些费时间的操作 二、备份步骤 在面板Optio…

江西南昌电气机械三维测量仪机械零件3d扫描-CASAIM中科广电

精密机械零部件是指机械设备中起到特定功能的零件,其制造精度要求非常高。这些零部件通常由金属、塑料或陶瓷等材料制成,常见的精密机械零部件包括齿轮、轴承、螺丝、活塞、阀门等。精密机械零部件的制造需要高精度的加工设备和工艺,以确保其…

我们可能要为ChatGPT的谢幕做好准备

ChatGPT的未来:悬念仍存 ​ 人工智能已经成为我们生活不可或缺的一部分。在众多AI应用中,OpenAI研发的ChatGPT凭借其极强的语言理解和生成能力脱颖而出,是一项划时代的变革性创新,帮助了无数企业和个人,改变了我们与技…

【Apollo】自动驾驶感知——毫米波雷达

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖&#x1f…

Java课题笔记~JSON

3.1 概述 概念:JavaScript Object Notation。JavaScript 对象表示法. 如下是 JavaScript 对象的定义格式: {name:"zhangsan",age:23,city:"北京" } 接下来我们再看看 JSON 的格式: {"name":"zhangsa…