IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Jmeter使用指南 -> 正文阅读

[开发测试]Jmeter使用指南

Jmeter使用教程以及实用的方法介绍。

what’s jmeter?

Jmeter官网:https://jmeter.apache.org/

image-20220411112106481

官网地址:https://jmeter.apache.org/,官网介绍如下:

The Apache JMeter? application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.

翻译原文的意思是,这是一个java应用,旨在加载测试功能行为和测量性能 。它最初是为测试 Web 应用程序而设计的,但后来扩展到其他测试功能。

what can I do?

(仅作了解,官网一大堆介绍)Apache JMeter 功能包括:

  • 能够加载和性能测试许多不同的应用程序/服务器/协议类型:

    • Web - HTTP、HTTPS(Java、NodeJS、PHP、ASP.NET,…)
    • SOAP / REST Web 服务
    • FTP
    • 通过 JDBC 的数据库
    • LDAP
    • 通过 JMS 的面向消息的中间件 (MOM)
    • 邮件 - SMTP(S)、POP3(S) 和 IMAP(S)
    • 本机命令或 shell 脚本
    • TCP
    • Java 对象

    …more

概况,总之我们可以使用该工具进行压力测试(简称压测),最后可以根据压测结果分析服务器性能和代码性能。

how to do?

重点在于如何使用,这里我们分为三部分介绍:

  1. 下载
  2. 安装配置
  3. 使用

下载

image-20220411112041913

选择Binaries编译好的可执行版本即可,下载完成之后将会得到一个.zip或者.tgz的压缩包。

解压完之后将会得到这样结构的文件:

image-20220411135114693

重点关注bin目录,我们进入到bin目录下查看目录结构:

image-20220411135336605

以下我们都在windows环境下进行(Linux 和 macOS 则是 执行 bin/jmeter.sh,Linux的使用将计划另开文章介绍),我们直接双击打开jmeter.bat文件即可运行(少数情况下需要以管理员权限运行),但是此时我们应该无法正常运行,需要两个前置条件:

  1. 电脑上jre环境并且配置了系统环境变量
  2. 配置jmeter相关系统环境变量

假设读者第1点已经都成功配置了,这里我们只重点关注第2点。

安装配置

  1. 新增JMETER_HOME的系统变量:将你解压后的jmeter根目录地址进行录入

    image-20220411140048774

  2. 编辑path,新增以下两组环境变量

    %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar
    %JMETER_HOME%\lib\jorphan.jar
    

    image-20220411141100669

这个时候,我们回到jmeter的bin目录里,双击打开jmeter.bat,将会跳出一个黑框执行窗口,随后将会唤醒一个GUI界面:

image-20220411141734052

这里由于我已经设置过语音为中文,大家第一次打开应该是英文界面,可以根据实际需要选择是否将界面设置为中文,设置方法有两种:

  • 上方菜单栏选择Options->Choose Language->Chinese,缺点是每次打开jmeter都需要设置一次

image-20220411142338800

  • 第二种方法可以一劳永逸,直接在bin目录下找到jmeter.properties,用编辑器打开后找到language这一行,首先将注释去掉,随后赋值zh_CN,保存之后重新打开即可

    #Preferred GUI language. Comment out to use the JVM default locale's language.
    language=zh_CN
    

至此,我们的环境变量配置结束,已经能够成功运行了,接下来我们介绍如何使用。

使用

  1. 右键测试计划创建线程组

    image-20220411143017064

    这里我们看到有三种类别的线程组:分别是setUp线程组,线程组,以及tearDown线程组

    我们可以理解为setUp线程组是主线程运行前需要执行的准备工作,例如执行准备测试数据,线程组即为主线程将准备好的测试数据进行压测,tearDown线程组则是压测结束的后置动作将测试数据进行清理。

  2. 设置属性

    image-20220411143641441

    分成三部分来看,分别是错误策略,线程属性,调度器。

    • 错误策略:若执行发生错误之后的处理

    • 线程属性:

      设置线程数(即并发数)

      Ramp-Up时间,在多少时间内启动完设置的线程

      循环次数:执行的次数(设置调度器的时候可以勾选永远)

    • 调度器:

      针对持续一段时间内的压测需要设置调度器属性,首先我们需要将上面线程属性的循环次数勾选永远,随后勾选上调度器,设置持续时间以及启动延迟

  3. 设置取样器,这里我们以HTTP请求为例

    右键线程组->添加->取样器->HTTP请求

    image-20220411144716834

    image-20220411144821077

    • 设置Web服务器,协议,ip,端口号等信息

    • HTTP请求设置请求类型GET或者POST,设置请求路径

    • 设置参数或者消息体数据(body)

    这里再额外介绍一下如果我们的请求需要设置请求头,但是在这里没找到设置请求头的地方我们该如何设置。

    image-20220411145102962

    测试计划右键->添加->配置元件->HTTP信息头管理器

    image-20220411145158562

    我们就可以点击添加按钮进行新增请求头信息,这里设置的请求头将会被应用到同一个测试计划种的HTTP请求中。

  4. 设置监听器

    我们监听运行过程中的参数,需要通过设置监听器来实现:

    右键HTTP请求->添加->监听器

    image-20220411150136855

    这里我们能看到很多组监听器,一般情况下最主要的监听器就是以下几种:

    • 查看结果树
    • 汇总报告
    • 聚合报告

    查看结果树:保存所有的线程请求结果,支持以.csv格式保存,我们需要设置一个写入文件路径表示将请求过程写入到某个文件中。并且支持仅错误日志还是仅成功日志的筛选显示。点开配置按钮可以支持导出数据的内容,一般用默认的配置即可。

    image-20220411150627723

    image-20220411150724782

    汇总报告主要包括请求时长最小值,最大值和平均值,以及吞吐量等信息,该部分信息会在执行过程中实时刷新数据,并且在执行完之后可以保存表格数据到本地:

    image-20220411150959319

    聚合报告同汇总报告,可以实时刷新数据,并且执行完之后可以保存表格数据到本地。

  5. 设置JSON断言

    什么是JSON断言?意思就是我们在执行过程中并不一定统一用http返回状态码200来表示执行成功,有可能我们的http状态码是200,但是我们的返回值业务状态码实际上是返回了一个错误的自定义业务状态码,例如:

    {
        "statusCode": "9000",
        "errMsg": "用户注册失败!"
    }
    

    这个时候我们就不能将该次请求算作成功了,所以我们需要通过JSON断言来实现,例如我们规定statusCode返回2000才能算作成功。

    image-20220411154605051

    在Assert JSON Path exists中设置对应值,这里写作:$.statusCode

    Expected Value:2000

    即实现上述判断业务状态码是否成功,只有statusCode=2000的情况下才算作请求成功。

至此,我们已经全部实现了压测前的配置准备工作,我们点击菜单栏中的绿色运行按钮即可以开始压测了:
image-20220411154947004

附加:使用动态请求数据进行测试

以上我们设置请求参数都是固定的,如果我们需要从一个地方模拟每个线程数使用不同的参数该如何实现呢。

首先我们准备好一份csv文件,里面有id,name的表头值。

image-20220411155251848

随后我们添加CSV Data Set Config的配置元件:

image-20220411155358870

image-20220411155541539

主要设置文件的位置,然后指定文件编码,变量名称使用我们的表头用英文逗号分割,即这里是id,name

下方的配置中一般采用默认配置即可,需要注意的是是否允许带引号那里默认是False,根据需要可以选择True,即表示后续我们设置变量的时候前后默认带引号表示字符串。

回到HTTP请求,我们设置请求体数据就可以用变量符号${}来表示csv的变量,它就会循环获取csv中的数据了:

{
	"id": ${id},
	"name": ${name}
}

image-20220411155858264

参考资料:

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:30:46  更:2022-04-15 00:32:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:35:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码