当前位置: 首页 > news >正文

我的博文天地测试报告

我的博文天地测试报告

文章目录

    • 我的博文天地测试报告
  • 一.项目背景
  • 二.项目功能
    • 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 实际执行测试的部分操作步骤/结果的截图

  1. 注册异常
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
2. 正常登录
在这里插入图片描述

  1. 写博客异常
    在这里插入图片描述

  2. 写博客正常,发布成功并查看详情页
    在这里插入图片描述
    在这里插入图片描述

  3. 编辑博客
    在上面的博客详情页中点击编辑,并修改博客标题
    在这里插入图片描述
    通过博客详情查看到刚才编辑的博客
    在这里插入图片描述

  4. 删除博客
    在这里插入图片描述
    在博客详情页中点击删除

在这里插入图片描述
在这里插入图片描述
可看出刚才写的博客已经被删除了
在这里插入图片描述

  1. 注销
    点击注销回到登录页面
    在这里插入图片描述
    在这里插入图片描述

3.2 自动化测试

自动化测试

3.3 性能测试

使用JMeter进行了简单的性能测试:对登录、编写博客、获取博客列表、获取用户信息、删除博客等功能进行了简单的性能测试。

  1. 创建Stepping Thread Group (需要添加插件 Custom Thread Groups) 并配置线程数等信息进行性能测试,配置如图。
    在这里插入图片描述
  • 添加事务控制器将这些接口统一视为一个事务进行性能测试。
  • 添加HTTP信息头管理器将用户登录产生的jwtToken存入user_token中。实现提取登录接口返回值里的data数据,作为列表页接口的请求头信息。
  • 添加HTTP请求默认值并配置测试接口的协议、IP、端口号和内容编码(UTF-8)。
  1. 添加监听器查看测试结果
  • 添加聚合报告可以看到性能测试过程中整体的数据变化
  • 添加Response Times Over Time来监听整个事务运行期间的响应时间
  • 添加 Transactions per Second 来分析系统吞吐量。这个指标反映了系统同一时间内处理业务的最大能力。TPS值越高,说明系统的处理能力越强。

3.1.2 用户登录

  1. 设置HTTP请求为POST,路径为“/user/login”。
  2. 通过使用配置元件的CSV数据文件设置 ,从有多个用户名和密码的CSV文件中循环读取username和password。配置如下
    在这里插入图片描述
  3. 添加JSON提取器将返回值信息中的data数据放进jwtToken中。
  4. 添加JSON断言,用来判断返回结果是否正确。

jmeter性能测试结果

测试进行中:
在这里插入图片描述

测试结果:
(1) 聚合报告:
在这里插入图片描述

(2)响应时间
在这里插入图片描述
分析:在图表中,不同操作的响应时间差异较大。例如,“博客列表页” 的响应时间波动较为明显,在某些时间点达到了较高的值,接近 540 毫秒。并且相对其他功能的响应时间要长很多,说明该接口还需要进行优化;而 “删除博客” 的响应时间相对较为平稳,但也有一定的波动。这说明系统在处理不同功能时的性能表现不一致,部分功能可能需要更多的优化以降低响应时间。

(3)吞吐量(每秒事务率)
在这里插入图片描述
分析:图表中可以看到,所有接口的吞吐量在测试过程中呈现出一定的波动,但整体保持在 20 - 45 个事务每秒之间。在还没开始结束线程的测试后期,吞吐量有所下降,可能是因为系统逐渐达到了其处理能力的极限,或者出现了资源瓶颈等问题。

性能测试遇到的困难

做压测时,并发一段时间后,会报java.net.BindException: Address already in use: connect

原因:
windows提供给TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收它们,就导致在短时间内跑大量的请求时将端口占满了,导致如上报错。
解决方法:
在jmeter所在机器下进行如下操作:

  1. cmd中输入regedit命令打开注册表
  2. 在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters右键Parameters
    在这里插入图片描述
  3. 添加一个新的DWORD,名字为MaxUserPort
  4. 然后双击MaxUserPort,输入数值数据为 65534 ,基数选择十进制
  5. 重启机器

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中查看性能报告

完整报告内容

响应时间:
在这里插入图片描述
响应时间分布:
在这里插入图片描述

四.项目总结

该项目的主功能均已通过测试,但是仍然存在下面缺陷:

  1. 博客列表页左侧用户模块中的“用户图片”和“分类”还没有实现。
  2. 博客列表页和搜索博客响应时间过长,需要优化其性能。

相关文章:

我的博文天地测试报告

我的博文天地测试报告 文章目录 我的博文天地测试报告 一.项目背景 二.项目功能 2.1 功能介绍 三.测试分类 3.1 功能测试 3.1.1 测试用例 3.1.2 实际执行测试的部分操作步骤/结果的截图 3.2 自动化测试 3.3 性能测试 3.1.2 用户登录 jmeter性能测试结果 性能测试遇到的困难 …...

EtherCAT主站IGH-- 35 -- IGH之pdo_list.h/c文件解析

EtherCAT主站IGH-- 35 -- IGH之pdo_list.h/c文件解析 0 预览一 该文件功能`pdo_list.c` 文件功能函数预览二 函数功能介绍`pdo_list.c` 中主要函数的作用1. `ec_pdo_list_init`2. `ec_pdo_list_clear`3. `ec_pdo_list_clear_pdos`4. `ec_pdo_list_total_size`5. `ec_pdo_list_a…...

嵌入式开发神器:Buildroot的介绍和使用方法

目录 引言**Buildroot 能做什么?****1. 生成交叉编译工具链(Toolchain)****2. 生成嵌入式 Linux 根文件系统(RootFS)****3. 编译 Linux 内核和设备树文件****4. 编译 Bootloader(U-Boot)****5. …...

JavaScript系列(61)--边缘计算应用开发详解

JavaScript边缘计算应用开发详解 🌐 今天,让我们深入探讨JavaScript的边缘计算应用开发。边缘计算是一种将计算和数据存储分布到更靠近数据源的位置的架构模式,它能够提供更低的延迟和更好的实时性能。 边缘计算基础架构 🌟 &am…...

【LeetCode】day15 142.环形链表II

142. 环形链表 II - 力扣(LeetCode) 题目描述 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则…...

代理对象与目标对象

1. 定义:代理对象和目标对象 1.1 目标对象(Target Object) 目标对象是指 被增强的原始对象,即需要通过 AOP 切面(Aspect)增强功能的业务对象(原始类)。增强逻辑(Advice…...

【Kubernetes Pod间通信-第3篇】Kubernetes中Pod与ClusterIP服务之间的通信

引言 我们之前了解了在不同场景下,Kubernetes中Pod之间的通信是如何路由的。 【Kubernetes Pod间通信-第1篇】在单个子网中使用underlay网络实现Pod到Pod的通信【Kubernetes Pod间通信-第2篇】使用BGP实现Pod到Pod的通信现在,我们来看看在集群中,Pod与服务之间的通信是如何…...

DNN(深度神经网络)近似 Lyapunov 函数

import torch import torch.nn as nn import torch.optim as optim import matplotlib.pyplot as plt # from torchviz import make_dot import torchviz# 1. Lyapunov 函数近似器(MLP 结构) class LyapunovNet(nn.Module):def __init__(self, input_dim…...

128陷阱

首先我们了解一下关于包装器类型 java是面向对象的语言,但基本类型并不是面向对象的,从而出现了包装器类型,并且包装器添加了更多的属性和方法。如我们在使用集合类型Collection的时候就一定要使用包装类型而非基本类型,它相当于将…...

PromptSource和LangChain哪个更好

目录 1. 设计目标与定位 PromptSource LangChain 2. 功能对比 3. 优缺点分析 PromptSource LangChain 4. 如何选择? 5. 总结 PromptSource 和 LangChain 是两个在自然语言处理(NLP)领域非常有用的工具,但它们的设计目标和…...

构成正方形的数量:算法深度剖析与实践

目录 引言算法核心概念 定义正方形的构成条件数据结构与输入形式算法数学原理 几何关系的数学表达坐标运算与判定逻辑Python 实现 代码展示代码解析Python 实现的优势与局限C 语言实现 代码展示代码解析C 语言实现的性能特点性能分析与优化 性能分析 时间复杂度空间复杂度优化思…...

Redis持久化-秒杀系统设计

在构建高性能、高可用的系统时,Redis 作为缓存和消息队列的角色越来越重要。在一些场景下,我们还需要将 Redis 的数据进行持久化,以确保数据的安全性和恢复能力。除此之外,秒杀系统也越来越成为电商、抢购等平台的核心功能之一。本…...

音视频入门基础:RTP专题(8)——使用Wireshark分析RTP

一、引言 通过Wireshark可以抓取RTP数据包,该软件可以从Wireshark Go Deep 下载。 二、通过Wireshark抓取RTP数据包 首先通过FFmpeg将一个媒体文件转推RTP,生成RTP流: ffmpeg -re -stream_loop -1 -i input.mp4 -vcodec copy -an -f rtp …...

OpenAI 实战进阶教程 - 第六节: OpenAI 与爬虫集成实现任务自动化

爬虫与 OpenAI 模型结合,不仅能高效地抓取并分析海量数据,还能通过 NLP 技术生成洞察、摘要,极大提高业务效率。以下是一些实际工作中具有较高价值的应用案例: 1. 电商价格监控与智能分析 应用场景: 电商企业需要监控…...

SpringUI Web高端动态交互元件库

Axure Web高端动态交互元件库是一个专为Web设计与开发领域设计的高质量资源集合,旨在加速原型设计和开发流程。以下是关于这个元件库的详细介绍: 一、概述 Axure Web高端动态交互元件库是一个集成了多种预制、高质量交互组件的工具集合。这些组件经过精…...

解密企业安全密码:密钥管理服务如何重塑数据保护?

在数字化时代,数据是企业最宝贵的资产之一。然而,随着网络威胁的不断升级和数据泄露事件的频繁发生,如何保护企业数据的安全已成为每个组织面临的紧迫问题。传统的安全措施往往无法应对复杂的威胁环境,密钥管理服务作为企业信息安…...

基于keepalived+GTID半同步主从复制的高可用MySQL集群

文章目录 项目架构图项目名称项目环境项目描述ip地址规划项目步骤一.安装好8台全新的centos7.9的系统,关闭firewalld和selinux,配置每台主机的静态ip地址,设置每台主机对应的主机名。1、关闭firewalld2.关闭seLinux3.配置每台主机静态ip地址4…...

图片PDF区域信息批量提取至Excel,基于QT和阿里云api的实现方案

办公文档处理:在企业日常办公中,经常会遇到大量的扫描文档(如发票、合同、报表等)以图片或 PDF 格式存储。需要将这些文档中的特定区域信息(如发票金额、合同条款、报表数据等)提取出来,整理到 …...

Java 大视界 -- Java 大数据在智能教育中的应用与个性化学习(75)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也期待你毫无保留地分享独特见解,愿我们于此携手成长,共赴新程!💖 一、…...

从零手写Spring IoC容器(二):bean的定义与注册

从零手写Spring IoC容器(二):bean的定义与注册 一. 回顾简单容器的不足之处 在第一章中,我们实现了一个最简单的 IoC 容器,但该版本存在诸多不足,例如: Bean 的管理方式过于简单,…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...