JMeter安装及性能测试详解

JMeter安装及性能测试详解

JMeter介绍

(参考:www.importnew.com/13876.html)

JMeter使用了不同技术和协议,是一款可以进行配置和执行负载测试、性能测试和压力测试的工具。负载测试、性能测试和压力测试概念:

负载测试: 这类测试使系统或者应用程序在预先设计好的极端场景下测试运行。这类测试用来评估系统或者程序在极端条件下的行为。

性能测试: 这种测试被用来检测系统的性能表现,包括特定情况下,系统的响应能力和稳定性。

压力测试: 这类测试通过载入更多的外部资源,并使系统组件超越其所设定的能力范围,试图使系统挂掉

在这里插入图片描述

优点:

  • 开源免费,基于Java编写,可集成到其他系统可拓展各个功能插件
  • 支持接口测试,压力测试(分布式测试)等多种测试类型,支持录制回放,入门简单
  • 相较于自己编写框架或其他开源工具,有较为完善的UI界面,便于接口调试
  • 多平台支持,可在Linux,Windows,Mac上运行
  • 提供多种报表数据图形展示

JMeter的目录文件介绍

  • bin: 核心可执行文件,包含配置
  • jmeter.bat: windows启动文件
  • jmeter-server.bat:windows下启动负载生成器(肉鸡)服务文件
  • jmeter: mac或者Liunx启动文件
  • jmeter-server:mac或者Liunx下启动负载生成器服务文件
  • jmeter.properties: 核心配置文件
    • 设置默认语言:language=zh_CN
    • 配置远程肉鸡IP和端口(服务器):remote_hosts=123.123.123.132:1099,234.234.234.234:1099
    • 肉鸡上配置:server_port=1099
    • 输出报告的配置,480行左右
  • extras:插件拓展的包
  • Lib:核心的依赖包
  • Ext:核心包,协议包
  • Junit:单元测试包

JMeter下载及环境配置

准备工作 安装JMeter前需要安装配置好Java,参考之前文章Java系统环境变量配置

下载后无需安装解压即可使用。

在这里插入图片描述

如果有idea工具或eclipse,可以双击ApacheJMeter.jar关联启动,也可以点击jemeter.bat进行启动

在这里插入图片描述

启动如下图所示:

在这里插入图片描述

JMeter组件

组件介绍

  • 测试计划(Test Plan): 使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器
  • 线程组(Thread Group):代表一定数量的并发用户,它可以用来模拟并发用户发送请求
  • 采样器(sampler):定义实际的请求内容,被线程组包含,我们主要用HTTP请求
  • 监听器(Listener) :包含查看结果树及聚合报告等图形化显示结果
  • 逻辑控制器(Logic Controller):逻辑判断功能,如if、for等语句控制
  • 断言(Assertions) :包含响应断言断言、xml断言等
  • 配置元件(Config Element):主要包括参数化配置、JDBC配置等
  • 前置处理器(Pre Processors)和后置处理器(Post Processors)
  • 定时器(Timer):用于操作之间设置等待时间

测试计划

打开JMeter即显示测试计划,测试计划用来描述一个测试(性能测试或者接口测试),包含与本次性能测试所有相关的功能,即该性能测试的所有内容是于基于一个计划的。

  1. 用户定义的变量 一般添加一些系统常用的配置;如果测试过程中需要切换环境、配置,一般不建议在测试计划上添加变量,因为不方便启用和禁用,一般是直接添加用户自定义变量组件
  2. 独立运行每个线程组 用于控制测试计划中的多个线程组的执行顺序,如果勾选了,可以保证按照顺序依次执行;不然则会交替执行
  3. Run tearDown Thread Groups after shutdown of main threads 开启之后,当线程组遇到错误停止时,会执行tearDown线程组;不然不会执行
  4. 函数测试模式(Functional Testing) 如果选中了此选项,监听组件如“查看结果树”配置了保存到一个文件中,那么jmeter会将每次的请求结果保存到文件中。一般不建议勾选

线程组

常见概念:

  • 进程: 正在运行的程序 = 程序启动,进程创建,程序退出,进程释放

  • 线程: 进程中的执行线索 = 游戏中,能动的角色 或者 迅雷每一部电影下载,底层都对应一个线程实现

  • 线程组: 对线程按照性质归类分组 = 比如: 植物大战僵尸,划分三组能量组、攻击组、破坏组

  • 层级关系: 进程 > 线程组 > 线程 (一个进程包含多个线程组,一个线程组包含多个线程)

  • 并发执行: 程序中的多个线程同时执行 = 多部电影下载 = 线程结束顺序与启动顺序不一定一致

  • 顺序执行: 程序中的多个线程按照先后顺序依次执行 = 电影先下载完毕,然后再播放 = 线程结束顺序与启动顺序一致

线程组设置: 线程组相当于有多个用户,同时去执行相同的一批次任务。每个线程之间都是隔离的,互不影响的。一个线程的执行过程中,操作的变量,不会影响其他线程的变量值。 测试计划右键添加->threads->线程组(控制总体并发)

  • 线程数

    虚拟用户数,一个虚拟用户占用一个线程

  • 准备时长

    全部线程启动的时长,比如100个线程,20秒,则表示20秒内100个线程都要启动完成,每秒启动5个线程

  • 循环次数

    每个线程发送的次数,假如值为5,100个线程,则会发送500次请求,可以勾选永远循环

采样器

  1. 采样器定义实际的请求内容,被线程组包含,我们主要讲HTTP请求及JDBC Request
  2. 线程组->添加-> Sampler(采样器) -> Http

采样器参数配置:

  • 名称:采样器名称
  • 注释:对这个采样器的描述
  • web服务器:默认协议是http、默认端口是80
  • 服务器名称或IP :请求的目标服务器名称或IP地址
  • 路径:服务器资源的路径

监听器

监听器包含查看结果树及聚合报告等图形化显示结果,我们主要讲查看结果树及聚合报告 线程组->添加->监听器(Listener)-> 查看结果树

断言

断言用于检查测试中得到的响应(response)数据等是否符合预期,断言用以保证接口(性能)测试过程中的数据交互是否与预期一致 a、响应断言

  • 线程组 -> 添加 -> 断言 -> 响应断言

  • apply to(应用范围):

    Main sample only: 仅当前父取样器 进行断言

  • 要测试的响应字段

    响应文本:即响应的数据,比如字符串、json等文本

    响应代码:http的响应状态码,比如200,302,404这些

    响应信息:http响应代码对应的响应信息,例如:OK, Found

    Response Header: 响应头

  • 模式匹配规则:

    • 包括:包含在里面就成功,支持正则匹配
    • 匹配:响应内容完全匹配,支持正则匹配
    • equals:完全匹配,不支持正则匹配
    • substring:包括子串就成功,不支持正则匹配

b、Json断言

线程组 -> 添加 -> 断言 -> json断言

 

cmd

复制代码

1 {"avatar_large": "https://cdn.v2ex.com/navatar/6cdd/60ea/184_large.png?m=1587133817", "name": "apple"}

Assert json path exists:$.name

 

cmd

复制代码

1 [{"avatar_large": "https://cdn.v2ex.com/navatar/6cdd/60ea/184_large.png?m=1587133817", "name": "apple"}, 2 {"avatar_large": "https://cdn.v2ex.com/navatar/6cdd/60ea/184_large.png?m=1587133817", "name": "python"}]

Assert json path exists:$.avatar_large[0].name

 

cmd

复制代码

{"avatar_large": [{"url":https://cdn.v2ex.com/navatar/6cdd/60ea/184_large.png?m=1587133817", "name": "apple"},{"url": "https://cdn.v2ex.com/navatar/6cdd/60ea/184_large.png?m=1587133817", "name": "python"}]}

Assert json path exists:$.avatar_large[0].name

  • additonally assert value:勾选后可以在下方文本框中添加断言之
  • match as regular expression:勾选后,文本框支持正则表达式

参数化:

Jmeter提供的参数化方式:

  • 测试计划用户定义变量参数化

  • 用户自定义变量参数化

  • 用户变量

  • CSV文件数据参数化(文本文件)

  • 函数助手

函数助手

通过函数助手生成,csv文件数据调用参数,直接使用即可,只能是多个线程执行才能循环拿数据, 并且是线程组共享数据。

JMeter性能测试

1. JMeter 为性能测试提供了一下特色:

JMeter 可以对测试静态资源(例如 js、html 等)以及动态资源(例如 php、jsp、ajax 等等)进行性能测试 JMeter 可以挖掘出系统最大能处理的并发用户数 JMeter 提供了一系列各种形式的性能分析报告

**2.使用 JMeter 一般用于以下两种类型的性能测试

负载测试:通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。 压力测试:测试系统能承受的最大负载能力。目的在于发挖掘出目标服务系统可以处理的最大负载

3.基本过程

在这里插入图片描述

下面我们看下使用 jmeter 进行性能测试的基本过程 3.1新增线程组 创建测试线程组,并设置线程数量及线程初始化启动方式。 3.2新增 JMeter 元组 创建各种默认元组及测试元组,填入目标测试静态资源请求和动态资源请求参数及数据。 3.3新增监听器 创建各种形式的结果搜集元组,以便在运行过程及运行结束后搜集监控指标数据。 3.4运行&查看结果 调试运行,分析指标数据,挖掘性能瓶颈、评估系统性能状态;

4.实验测试

下面我们以打开百度演示上述过程。 新增线程组 在 JMeter 的 bin 目录下双击 jmeter.bat或ApacheJMeter.jar 启动 JMeter,如下图:

在这里插入图片描述

在左边操作栏中选择“测试计划”,右击新增一个线程组,如图所示:

在这里插入图片描述

初始化线程组相关信息

在这里插入图片描述

新增 JMeter 元组 添加默认配置元素,添加如下默认配置,如图

在这里插入图片描述

各默认组件配置如图所示。HTTP Cache Manager

在这里插入图片描述

在这里插入图片描述

Http请求默认值

在这里插入图片描述

添加HTTP取样器

在线程组上右击新增HTTP请求,如图:

在这里插入图片描述

Http请求设置如图:

在这里插入图片描述

新增监听器 在这里我们添加如下监听器,如图所示

在这里插入图片描述

运行&查看结果 如果启动运行 jmeter,可以单击添加的监听器查看运行过程中的监控指标数据,也可以等运行结束后,再查看。

在这里插入图片描述

结果说明 下面我们就监听器所采集的结果图进行简要的说明:图形结果

在这里插入图片描述

在这里插入图片描述

查看结果树:

在这里插入图片描述

用表格查看结果:

在这里插入图片描述

聚合报告查看如下图所示:

在这里插入图片描述

 总结

如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们,加入方式在文章的最后面

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

​​​

​​​

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

  • 29
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值