我的博文天地测试报告
我的博文天地测试报告
文章目录
- 我的博文天地测试报告
- 一.项目背景
- 二.项目功能
- 2.1 功能介绍
- 三.测试分类
- 3.1 功能测试
- 3.1.1 测试用例
- 3.1.2 实际执行测试的部分操作步骤/结果的截图
- 3.2 自动化测试
- 3.3 性能测试
- 3.1.2 用户登录
- jmeter性能测试结果
- 性能测试遇到的困难
- 3.4 性能测试报告
- 在index.html中查看性能报告
- 四.项目总结
一.项目背景
本项目旨在开发一个简单的个人博客系统,通过这个自己的系统来管理掌握的知识,使其能够有效的进行归纳。本项目采用前后端分离的方式实现,并借助数据库存储相关数据,最终将系统部署到云服务器上。前端主要由登录页、列表页、详情页、编辑页和注册页这五个页面构成,通过与后端结合,实现了以下主要功能。
二.项目功能
该个人博客系统主要实现了以下几个功能:登录、注册、写博客、博客详情、编辑博客、搜索博客以及删除博客等功能。
2.1 功能介绍
用户注册: 可以在这个页面通过输入用户名、电话号码、密码以及Github网址(可以选择不填写)注册一个新用户。在登录界面可以根据用户名以及密码进行登录。
用户登录: 可以在这个页面通过输入用户名、密码,输入正确的密码就可以登录进入博客列表页。其他情况会在下方显示对应的错误信息。在登录页面右上角存在主页、写博客和注册两个按钮,但是在未登录情况下点击"主页"和"写博客"均只会跳转到登录页面,只有点击"注册"时才会进入注册页面进行用户注册。
博客列表展示 : 可以在列表页查看所有的博客简介,其包括博客标题、发布时间以及内容概要。点击"查看全文"可以进入文章详情页查看文章详情。在左侧可以看到登录的用户以及文章数、分类数等的模块。在右上角有主页、写博客和注销三个功能:主页即列表页,写博客即博客编辑页,注销即注销当前登录用户,回到登录页面。
博客详情展示: 在列表页面点击“查看全文"按钮就会跳转到详情页,此时就可以看到该篇博客的完整内容。在右上角同样有主页、写博客、注销三个功能。博客详情页左侧会显示当前文章这种的文章数以及分类数等模块。如果该博客还是当前登录用户发布的,则会在文章的最下面会有编辑和删除的两个按钮。点击"编辑"就会进入编辑页面进行博客内容的修改。 点击"删除"即删除该篇博客,删除之后就会跳转到列表页面,该篇博客就被成功删除并且不会在列表界面再次显示。
写博客: 在登录之后的任意界面均可以点击“写博客"之后就会进入写博客页面,此时就可以使用markdown用法进行博客的编写,点击“发布文章”后就可以成功发布文章,此时就会跳转到列表页。
编辑博客: 在博客详情页点击"编辑"按钮就会跳转到博客编辑页,此时就可以进行博客内容的修改。点击"更新文章"就可以进行博客的更新,此时就会跳转回博客列表页面。
搜索博客: 在博客列表页(主页)上方可以通过输入关键词,搜索出所有包含该关键词的博客简介,其包括博客标题、发布时间以及内容概要。
三.测试分类
3.1 功能测试
3.1.1 测试用例
3.1.2 实际执行测试的部分操作步骤/结果的截图
- 注册异常
2. 正常登录
-
写博客异常
-
写博客正常,发布成功并查看详情页
-
编辑博客
在上面的博客详情页中点击编辑,并修改博客标题
通过博客详情查看到刚才编辑的博客
-
删除博客
在博客详情页中点击删除
可看出刚才写的博客已经被删除了
- 注销
点击注销回到登录页面
3.2 自动化测试
自动化测试
3.3 性能测试
使用JMeter进行了简单的性能测试:对登录、编写博客、获取博客列表、获取用户信息、删除博客等功能进行了简单的性能测试。
- 创建Stepping Thread Group (需要添加插件 Custom Thread Groups) 并配置线程数等信息进行性能测试,配置如图。
- 添加事务控制器将这些接口统一视为一个事务进行性能测试。
- 添加HTTP信息头管理器将用户登录产生的jwtToken存入user_token中。实现提取登录接口返回值里的data数据,作为列表页接口的请求头信息。
- 添加HTTP请求默认值并配置测试接口的协议、IP、端口号和内容编码(UTF-8)。
- 添加监听器查看测试结果
- 添加聚合报告可以看到性能测试过程中整体的数据变化
- 添加Response Times Over Time来监听整个事务运行期间的响应时间
- 添加 Transactions per Second 来分析系统吞吐量。这个指标反映了系统同一时间内处理业务的最大能力。TPS值越高,说明系统的处理能力越强。
3.1.2 用户登录
- 设置HTTP请求为POST,路径为“/user/login”。
- 通过使用配置元件的CSV数据文件设置 ,从有多个用户名和密码的CSV文件中循环读取username和password。配置如下
- 添加JSON提取器将返回值信息中的data数据放进jwtToken中。
- 添加JSON断言,用来判断返回结果是否正确。
jmeter性能测试结果
测试进行中:
测试结果:
(1) 聚合报告:
(2)响应时间
分析:在图表中,不同操作的响应时间差异较大。例如,“博客列表页” 的响应时间波动较为明显,在某些时间点达到了较高的值,接近 540 毫秒。并且相对其他功能的响应时间要长很多,说明该接口还需要进行优化;而 “删除博客” 的响应时间相对较为平稳,但也有一定的波动。这说明系统在处理不同功能时的性能表现不一致,部分功能可能需要更多的优化以降低响应时间。
(3)吞吐量(每秒事务率)
分析:图表中可以看到,所有接口的吞吐量在测试过程中呈现出一定的波动,但整体保持在 20 - 45 个事务每秒之间。在还没开始结束线程的测试后期,吞吐量有所下降,可能是因为系统逐渐达到了其处理能力的极限,或者出现了资源瓶颈等问题。
性能测试遇到的困难
做压测时,并发一段时间后,会报java.net.BindException: Address already in use: connect
原因:
windows提供给TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收它们,就导致在短时间内跑大量的请求时将端口占满了,导致如上报错。
解决方法:
在jmeter所在机器下进行如下操作:
- cmd中输入regedit命令打开注册表
- 在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters右键Parameters
- 添加一个新的DWORD,名字为MaxUserPort
- 然后双击MaxUserPort,输入数值数据为 65534 ,基数选择十进制
- 重启机器
3.4 性能测试报告
JMeter测试报告是一个全面而详细的文档,它提供了关于测试执行结果的详细信息,帮助用戶全面评 估系统的性能并进行性能优化。 生成性能测试报告的命令:
Jmeter -n -t 脚本文件 -l 日志文件 -e -o 目录
-n : 无图形化运行
-t : 被运行的脚本
-l : 将运行信息写入日志文件,后缀为jtl的日志文件
-e : 生成测试报告
-o : 指定报告输出目录
注意:日志文件和目录可以不存在,若为已经存在的情况下需要保证内容为空,否则会出现错误!
(1)进入到存放上面测试(.jmx文件)的目录
(2 ) 输入如 Jmeter -n -t 脚本文件 -l 日志文件 -e -o 目录 的指令进行性能测试并导出测试报告。
运行结束:
性能测试报告生成成功后,在PerformanceTestReport文件夹下将出现以下内容:
双击index.html即是性能测试报告
在index.html中查看性能报告
完整报告内容
响应时间:
响应时间分布:
四.项目总结
该项目的主功能均已通过测试,但是仍然存在下面缺陷:
- 博客列表页左侧用户模块中的“用户图片”和“分类”还没有实现。
- 博客列表页和搜索博客响应时间过长,需要优化其性能。