赞
踩
在目前的中大型企业中,仅仅进行功能测试已经不足以满足企业的需求,在重大客户基数下性能测试将会直接影响到用户体验
所以在这篇文章中我们将会学习性能测试的相关知识以及常用工具Jmeter
我们将会从以下角度进行介绍:
首先我们需要去系统的了解一下性能测试的相关信息
首先我们需要了解我们为什么需要学习性能测试:
接下来我们需要理解性能主要针对什么:
那么性能测试就是在多种情况下对性能情况进行测试得出结果:
最后我们简单讲一下性能测试的目的:
我们在之前的文章中已经学习了功能测试,那么我们简单给出两者的区别:
- # 功能测试
- # 目的:主要为了验证系统的功能需求规格是否满足产品需求
- # 正向功能测试:采用完整正确的测试用例进行测试,判断是否满足产品需求
- # 逆向功能测试:采用不完整或部分错误或错误的测试用例进行测试,判断是否满足产品需求
-
- # 性能测试
- # 目的:主要为了判断产品是否满足其业务需求场景
- # 时间性能测试:采用业务需求场景下的测试用例获取最终时间结果,判断是否满足产品需求
- # 资源性能测试:采用业务需求场景下的测试用例获取计算机资源占比,判断是否满足产品需求
我们还需要知道其两者之间的先后顺序关系:
我们下面来介绍性能测试的多种测试方式
首先我们需要介绍基准测试:
我们给出一个简单实例来说明基准测试:
我们在最开始采用一种情况进行测试并得到结果进行记录,后续我们采用其他方式进行测试并与基准测试结果进行对比
基准测试:项目1.0版本,测试机配置(8G+16G),单用户查询一万条数据采用3.0s
后续测试:项目1.0版本,测试机配置(8G+32G),单用户查询一万条数据采用2.0s
后续测试:项目1.1版本,测试机配置(8G+16G),单用户查询一万条数据采用2.5s
那么基准测试的用途也很明显:
我们同样首先来介绍负载测试的意义:
我们给出一个简单实例来说明负载测试:
针对负载测试我们还需要知道这些内容:
负载测试的用途主要针对客户需求:
我们首先给出稳定性测试的概念:
我们现实中其实存在很多案例:
负载测试的用途主要针对产品持久性:
我们首先给出压力测试的概念:
针对压力测试主要分为两方面的压力测试:
我们分别给出两个案例:
- # 持续高压下压力测试
- # 例如B站中某个视频爆火,在一段时间内,该视频的点击率一直上升,一直调用get接口
- # 那么我们就需要去测试该接口在高负荷情况下(超过正常调用频率)在一段时间内(一天或三天)是否能够正常调用且无错误
-
- # 超高压情况下恢复测试
- # 例如某个功能爆火,导致该功能的点击量/接口调用率突然提升超过预期,导致该接口/数据库信息报错
- # 那么我们就需要测试在该功能崩溃情况下,是否能在较短时间内恢复该功能的正常运行/接口调用无异常
我们同样给出并发测试的概念:
我们在日常生活中可以见到很多案例:
但是我们需要注意到的是并发测试和负载测试虽然都是测试资源消耗或者说是资源的最大承受量,但两者是不同的:
其实并发测试的主要测试点更像是我们操作系统中出现的死锁情况:
我们在进行性能测试时,当然不能只根据我们的感觉来判断该性能是否符合标准,因此就出现指标这一概念
首先我们来介绍响应时间:
我们可以简单给出一张图片进行解释:
我们的响应时间通常是我们进行性能测试最直接的判断结果:
但我们还需要注意一点:
我们来简单介绍一下吞吐量:
吞吐量主要分为两种:
TPS每秒事务数
QPS每秒查询数
我们首先来介绍TPS:
我们采用一张图片解释:
我们再来介绍QPS:
我们同样采用一张图片解释:
我们来简单介绍一下资源利用率:
我们常见的一些计算机资源包括有:
首先我们直接给出一张性能测试流程图:
首先我们来讲解性能测试需求分析:
我们通常将性能测试需求分析划分为四步:
- # 1.明确被测系统
- # 我们首先需要了解我们所测试的系统的业务功能和技术架构
- # 我们需要去了解我们所测试的系统的常用模块,并了解其执行步骤
-
- # 2.明确测试内容
- # 在产品给出需求的情况下,我们直接去测试产品需求点即可
- # 若产品未给出需求,那么我们主要针对用户使用最频繁的部分进行测试或者针对性能过低的部分进行测试优化
-
- # 3.明确测试策略
- # 该测试策略就是我们前面所提到的测试分类方法
- # 该测试策略并非需要全部执行,我们需要针对不同情况采用不同测试策略进行测试
-
- # 4.明确测试指标
- # 同样,我们以产品的需求为主,如果存在需求,则满足需求即可
- # 若不存在需求,我们可以参考其他软件或之前版本的测试数据进行判断其指标
测试计划其实主要依照公司主管所制定的计划:
我们给出一张测试用例的常用模板图即可:
我们的性能测试通常通过工具进行测试:
我们的性能测试执行大概划分为四阶段:
- # 1.建立测试环境
- # 搭建性能测试环境,包括硬件环境,软件环境,网络环境
-
- # 2.编写测试脚本
- # 按照性能测试需求用例,使用性能测试工具书写测试脚本
-
- # 3.性能测试监控
- # 一般我们所使用的脚本工具都会存在性能测试监控窗口,我们只需要查看数据是否存在问题即可
-
- # 4.执行测试脚本
- # 设置性能运行场景,执行性能测试,收集测试结果并与指标进行对比
我们在执行测试用例之后会获取到其性能测试结果,我们只需要对比即可:
我们在测试结束之后通常需要去书写测试报告,主要是为了我们后续测试作为对照,主要包含以下内容:
接下来我们开始正式介绍Jmeter工具的使用
其实除了Jmeter之外,我们还有很多性能测试工具,其中之前比较出名的就是Loadrunner,我们这里简单介绍一下两者的区别:
- # 首先我们来简单说一下Loadrunner
- # Loadrunner实际上算是一款很知名的性能测试工具
- # Loadrunner的主要特点是:高收费,占用内存较大,功能全面无阉割,同时可模拟上万人同步操作
-
- # 而Jmeter其实就是针对Loadrunner所做出来的阉割版性能测试工具
- # 但是由于Jmeter的免费且开源使得它在如今社会满足企业需求且可以由我们自己插入第三方插件
- # Jmeter的主要特点是:免费且开源,占用内存极小,基本满足企业需求,同时可模拟千人同步操作,可以手动导入第三方实现企业需求
-
- # 且两者都包容多协议,像我们常用的Http,Https,FTP等协议,两者都可以使用
- # 且两者都存在监听件,我们所做的性能操作都会直接体现在监听件中,不需要我们手动记录
Jmeter的下载非常简单,我们只需要到官网下载对应压缩包即可:Apache JMeter - Download Apache JMeter
我们将其压缩到对应文件夹即可,注意需要是全英文文件夹,下面我们使用一张图来介绍各文件内容:
如果我们希望快速打开Jmeter,我们通常会将该文件的bin目录放入我们的环境变量,那么我们仅需要使用一行简单命令就开启服务:
最后我们给出一下Jmeter的一个页面展示:
这里我们所看到的是英文界面,当然我们可以将其变为中文界面,我只需要进入bin目录的Jmeter.properties文件修改:
最后我们给出一个小提示,因为我的电脑存在这个问题,所以记录下来:
- # 如果电脑是高刷新率,像我的电脑是240HZ刷新,就会导致Jmeter的GUI界面出现重叠问题
- # 我们只需要在Jmeter.bat脚本中的第一行,加入这行代码即可
- set JVM_ARGS=-Dsun.java2d.d3d=false
我们首先给出一张Jmeter工具的相关元件图,我们会在下面进行解释:
下面我们依次来介绍上述元件的作用:
- # 取样器
- # 取样器就是用来发送请求的元件,我们在页面上点击按钮其实就是发送请求,这里就是模拟发送请求
-
- # 逻辑控制器
- # 逻辑控制器就是控制我们的元件是否执行,包含我们常用的if,while,foreach等
-
- # 前置处理器
- # 前置处理器是对我们的请求参数在执行前进行处理
-
- # 后置处理器
- # 后置处理器是对我们请求后所返回的响应进行处理
-
- # 断言
- # Python中常用的判断结果是否符合预期的功能
-
- # 定时器
- # 定时器主要用来控制我们多久后执行该取样器(发送请求)
-
- # 配置元件
- # 配置元件内的元件都是用于进行初始化的东西
-
- # 监听器
- # 监听器主要是用来获取我们使用取样器发送请求后的响应数据相关信息
接下来我们需要知道元件的作用范围都在哪里:
- # Ø取样器:核心,没有作用域
-
- # Ø逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用
-
- # Ø其他元件:
- # •如果是某个取样器的子节点,则该元件只对其父节点起作用
- # •如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)
我们还需要注意其执行顺序:
- # 在同一个作用域(目录/级别/缩进)的不同元件的执行顺序:
- # 配置元件 - 前置处理程序 - 定时器 - 取样器 - 后置处理程序 - 断言 - 监听器
-
- # 在同一个作用域(目录/级别/缩进)的相同元件的执行顺序:
- # 从上到下的顺序依次执行
我们给出一张图,并给出它的执行顺序,大家可以明白其作用范围:
首先我们给出一个最简单的案例进行展示:
- # 步骤
-
- # 1.启动Jmeter
-
- # 2.在“测试计划”下添加线程组
-
- # 3.在“线程组”下添加“http请求”取样器
-
- # 4.填写“http请求”取样器信息
-
- # 5.在“线程组”下添加“查看结果树”监听器
-
- # 6.点击启动按钮,并查看结果
我们这里首先给出http请求的界面展示,后续我们会详细介绍:
然后我们这里直接启动,给出查看结果树的执行界面展示:
在了解其元组具体信息之前,我们首先需要了解一下线程组:
- # 线程组一共只有三种,我们右键测试计划就可以创建线程组,这里不给图片展示了
-
- # 1.线程组
- # 控制Jmeter用于执行测试的一组用户,用于执行测试用例,可以有1个或者多个(并行/串行),后续我们会给出具体参数信息设置
-
- # 2.Setup线程组
- # 预测试操作,所有脚本之前执行
- # 类似于Pytest里面的Setup方法
-
- # 3.Teardown线程组
- # 测试后操作,所有脚本之后执行
- # 类似于Pytest里面的Teardown方法
我们给出线程组的展示图并说明其具体使用参数信息:
而最后我们在给出一个小贴士,是关于线程组的并行或串行启动的开关按钮:
我们直接给出Jmeter请求的一张展示图,并在该展示图上进行介绍:
除了这些请求之外,我们在请求时,还需要传递参数信息:
我们给出一张展示图:
我们顺便给出一张查看结果树的请求和响应展示图:
我们在之前的自动化测试中也学习到了参数化,现在我们来学习Jmeter的参数化设置:
我们首先学习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
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。
我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,
测试开发视频教程、学习笔记领取传送门!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。