软件测试之基于博客系统项目的性能测试

发布于:2025-06-27 ⋅ 阅读:(13) ⋅ 点赞:(0)


上篇文章全面叙述了性能测试的基本知识,从需求拆解到指标量化,从场景模拟到瓶颈分析,贯穿于软件全生命周期。相信小伙伴已经从中深入了解了性能测试吧~ 本篇文章将给大家带来性能测试实站项目—基于博客系统项目的性能测试。希望小伙伴们可以认真学习,能够全面掌握性能测试噢(ง •_•)ง

一 性能测试工具

性能测试工具是用于评估系统、软件或网络在特定负载条件下性能表现的专业工具,可帮助发现系统瓶颈、验证性能指标是否达标。开源性能测试工具有JMeter,Gatling,Locust等等。下面我将为大家详细介绍Jmeter工具。

1 JMeter概念

Apache JMeter 是 Apache 组织基于 Java 开发的压⼒测试⼯具,⽤于对软件做性能测试。适用于Web 应用、API 接口、数据库等性能测试。

1.1 Jmeter工作流程图:

在这里插入图片描述

1.2 JMeter基本使⽤流程

1)启动JMeter
2)在“测试计划”下添加“线程组
3)在“线程组”下添加“HTTP”取样器
4)填写“HTTP请求”的相关请求数据
5)在“线程组”下添加“查看结果树”监听器
6)点击“启动”按钮运⾏,查看接⼝测试结果

1个http请求:
在这里插入图片描述
10个http请求:
在这里插入图片描述

1.3 Jmeter中重点组件

1)线程组

线程组是控制JMeter将⽤于执⾏测试的线程数,也可以把⼀个线程理解为⼀个测试⽤⼾。

线程数:⼀个线程即⼀个测试⽤⼾,设置发送的请求次数
Ramp-up时间(秒):设置性能测试运⾏时间,单位为秒
循环次数:
◦ 配置指定次数:控制脚本循环执⾏的次数
◦ 配置循环永远
▪ 需要调度器配置使⽤
▪ 运⾏时间:脚本执⾏时间
▪ 延迟启动时间:脚本等待指定时间才能运⾏

若配置调度器:循环次数—永远
在这里插入图片描述
2)HTTP取样器
添加必需的配置:http协议,http主机名/IP,端⼝
http协议端⼝号80
https端⼝号443
请求⽅法:路径(⽬录+参数)
内容编码(默认的ISO国际标准,但对中⽂⽀持不友好,可以使⽤utf-8)
参数:参数可以拼在路径⾥,也可以卸载参数中
POST参数要放到消息体数据中{wd:test}
3)查看结果树
查看结果树中包含:取样器结果:统计请求相关的信息
请求:HTTP请求的请求头和请求体的详细信息
响应:HTTP响应的响应头和响应体的详细信息
在这里插入图片描述

4)HTTP Cookie管理器

HTTP Cookie管理器像Web浏览器⼀样存储和发送Cookie。如果HTTP请求并且响应包含cookie,则
Cookie管理器会⾃动存储该cookie,并将其⽤于将来对该特定⽹站的所有请求。每个JMeter线程都有
⾃⼰的"cookie存储区"。因此,正在测试使⽤cookie存储会话信息的⽹站,则每个JMeter线程都将拥
有⾃⼰的会话。此类Cookie不会显⽰在Cookie管理器显⽰屏上,可以使⽤"查看结果树监听器"查看。
缓存配置可选择standard(标准)或compatibility(兼容的),当然也可以⼿⼯添加⼀些cookie.

只有状态码>200即有转发时才需用到
添加了HTTP Cookie管理器后,会⾃动存储并发送Cookie
在这里插入图片描述

5)HTTP请求默认值
博客中涉及到的接⼝协议、IP、端⼝号全都⼀样,可以单独抽取出来存放在默认值中,其他接⼝就可以省略不写协议、IP、端⼝号

6)⽤⼾定义的变量
添加⽅式:线程组—配置元件—⽤⼾定义的变量
有时我们只想要在固定的场景⾥使⽤参数化,改动后不希望影响到其他的脚本,就可以在HTTP请求的取样器中引⼊定义的变量。$ {参数名}
适⽤场景:变量需要在多个脚本中使⽤,⽅⾯统⼀管理和修改。一次修改,终身受益
在这里插入图片描述

7)CSV数据⽂件设置

以登陆接⼝为例,当我们执⾏登陆接⼝的性能测试时,⼿动配置了⽤⼾名和密码为固定的username和password,然⽽实际使⽤中不可能只有⼀个⽤⼾登陆,为了模拟更真实的登录环境,我们需要提供更多的⽤⼾username和password来实现登录操作

添加⽅式:线程组⸺配置元件⸺CSV数据⽂件设置
操作步骤:
1)CSV数据⽂件设置
2)编写test.csv⽂件。
3)修改登陆接⼝及其他涉及到username和password获取的参数
4)修改线程组中线程数,使得每次取到的username和password都不⼀样
在这里插入图片描述

8)JSON提取器
接⼝响应成功,通过提取返回值对应字段,可⽤于其他接⼝的参数配置
在这里插入图片描述

操作符参考:

Operator Description
$ 表⽰根元素
@ 当前元素
* 通配符,所有节点
.。 选择所有符合条件的节点
. <name 子元素
[‘’ (, ‘’)] 括号表示子元素或子元素列表
[ (, )] 数字索引或索引列表
[start:end] 数字切片操作符
[?()] 过滤器表达式。表达式必须评估为布尔值。

上面表格的有些符号打不出来直接看下方的图片啵~
在这里插入图片描述
9)JSON断⾔
接⼝发送请求成功,响应码为200并不能完全代表接⼝请求成功,我们更多需要关注接⼝响应数据是否符合预期。
JSON断言(除了登录,其他接口也可以添加JSON断言) 如果断言id即$.data.[0]
.id则最好用正则表达式 \d+或者精确匹配一个完整的id号断言
在这里插入图片描述
10)同步定时器(集合点)

为了达到并发的效果,需要添加同步定时器。
JMeter同步定时器的作⽤主要在于模拟多⽤⼾并发访问的场景,确保多个线程能够同时执⾏某个操作,以达到真正的并发效果。

数量不能超过线程组里配置的线程数,当准备好的线程数>=配置数量,就直接发送请求。
当配置的数量小于线程数时,最好把循环—永远打开,避免最后一次未准备好的线程数量达不到并发数在这里插入图片描述11)事务控制器
JMeter事务控制器的作⽤主要⽤于测试执⾏嵌套测试元素所花费的总时间。这相当于模拟⽤⼾进⾏⼀系列操作的测试。
若不添加事务控制器,则⼀个接⼝即⼀个事务。
添加了事务控制器后,可以将多个接⼝统⼀放到⼀个事务控制器下作为⼀个事务。(一个接口就是一个事务,多个接口就是多个事务)—工作中较少用在这里插入图片描述

12)常⻅监听器
1)聚合报告
从聚合报告可以看到性能测试过程中整体的数据变化。
在这里插入图片描述

2) Response Times Over Time
Response Times Over Time主要⽤于监听整个事务运⾏期间的响应时间。在测试过程中,它可以帮助测试⼈员观察并分析响应时间的实时平均值以及整体响应时间的⾛向。通过这⼀监听器,测试⼈员能够更直观地了解系统在不同时间点的响应性能,从⽽发现可能存在的性能问题或瓶颈。
在这里插入图片描述

3)Transactions per Second(TPS)
JMeter中的Transactions per Second(TPS)监听器是⼀个⽤于分析系统吞吐量的重要⼯具。TPS,即每秒事务数,表⽰⼀个客⼾机向服务器发送请求后服务器做出反应的过程。这个指标反映了系统在
同⼀时间内处理业务的最⼤能⼒。TPS值越⾼,说明系统的处理能⼒越强。

在这里插入图片描述

2 测试报告

JMeter测试报告是⼀个全⾯⽽详细的⽂档,它提供了关于测试执⾏结果的详细信息,帮助⽤⼾全⾯评估系统的性能并进⾏性能优化

⽣成性能测试报告的命令:

Jeter -n -t 脚本⽂件 -l ⽇志⽂件 -e -o ⽬录
-n : ⽆图形化运⾏
-t : 被运⾏的脚本
-l : 将运⾏信息写⼊⽇志⽂件,后缀为jtl的⽇志⽂件
-e : ⽣成测试报告
-o : 指定报告输出⽬录
注意:⽇志⽂件和⽬录可以不存在,若为已经存在的情况下需要保证内容为空,否则会出现错误!

性能测试报告⽣成成功后,在rizhi⽂件夹下将出现以下内容:
在这里插入图片描述

双击index.html⽂件,就能看到性能测试报告
在这里插入图片描述
写在最后
以上就是我做的基于博客系统项目,借助 JMeter 开展性能测试的相关内容。从理解 JMeter 概念,到梳理工作流程、掌握使用步骤与重点组件,再到最终输出测试报告,我们一起一步步探索了性能测试的关键环节。希望这些知识能助力大家在实际项目中,精准发现博客系统性能瓶颈,优化用户体验。性能测试之路漫漫,让我们持续深耕,用技术为优质产品护航,期待与各位在后续测试实践中碰撞更多灵感,下次分享再见~
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到