感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
😎😎😎 C语言
🐿️🐿️🐿️ C语言例题
🐓🐓🐓 数据结构C语言
🐔🐔🐔 C++
🐱‍👓🐱‍👓🐱‍👓 Linux
🐣🐣🐣 python
😎😎😎 软件测试
🏀🏀🏀 笔试练习题
🐱‍👤🐱‍👤🐱‍👤 秋招准备算法题
🐱‍🚀🐱‍🚀🐱‍🚀 高并发内存池项目
🚀🚀🚀 C++面试题
👍👍👍 Linux基础面试题
🐥🐥🐥 软件测试面试题
🐿️🐿️🐿️ 文章链接目录

报告概述

项目背景

博客系统是一款基于Web的内容创作与交流平台,主要用于用户注册登录、文章发布与管理、评论互动及内容搜索。该系统面向个人用户、团队以及内容运营者,提供从文章撰写、发布、阅读到互动的完整流程支持。随着功能的逐步完善和上线需求的推进,需要通过系统化的测试验证其功能的正确性、性能的稳定性以及在不同浏览器和终端下的兼容性,从而保障用户在实际使用过程中的良好体验

系统包含下面四个核心模块

(1) 登录页面
(2) 个人首页
(3) 博客详情页
(4) 博客编辑页

测试目的

功能验证
①确保所有核心功能符合需求规格说明书及设计文档要求
②验证用户注册、登录、注销等流程的正确性
③确认文章的创建、编辑、发布、删除、浏览的完整性
④验证标签、分类、搜索功能的可用性与准确性
⑤测试图片、附件等多媒体上传与展示的功能

用户体验优化
①评估页面布局与交互设计的合理性和一致性
②测试导航逻辑是否清晰、符合用户使用习惯
③验证提示信息、错误反馈、成功状态信息的准确性与友好性
④检查响应式设计在PC、平板、移动端的适配情况
⑤测试文章编辑器的易用性与稳定性(如Markdown/富文本支持)
⑥评估加载速度、页面跳转的流畅性
⑦检查用户在常见操作中的点击步骤和效率

系统稳定性保障
①评估系统在高并发访问、批量数据请求下的稳定性
②测试长时间运行下的内存消耗与性能表现
③验证异常情况(网络中断、服务器宕机、请求超时)下的容错能力
④检查文章、评论、用户数据在多场景下的一致性和完整性
⑤验证日志记录与异常处理机制的有效性
⑥测试备份与恢复机制,确保数据在极端情况下可恢复

安全性加固
①防止未授权访问、恶意操作和用户数据泄露
②验证用户认证、授权机制的安全性与健壮性
③测试防御SQL注入、XSS、CSRF等常见Web攻击的能力
④检查用户密码、隐私数据加密存储与传输的安全性
⑤验证文件上传安全策略(限制文件类型、大小、防止木马)
⑥检查会话管理的安全性(如Session超时、Token机制)

兼容性确认
①确保系统在主流浏览器(Chrome、Edge)下正常运行
②验证不同操作系统(Windows、Android)的兼容表现
③测试不同设备类型(PC、手机)的页面适配情况
④检查不同分辨率和屏幕尺寸下的界面显示效果
⑤验证在弱网环境下的可用性与加载表现

测试环境

操作系统:Windows 11
浏览器:Chrome、Edge
测试工具:Selenium

测试用例

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

手动测试

登录页面功能

账号和密码

正常登录
  测试场景一:输入正确的用户名及正确的密码
  预期结果:登录成功并跳转到博客首页
  实际结果:登录成功并跳转到博客首页

在这里插入图片描述
在这里插入图片描述

异常登录
   测试场景二:输入正确的用户名及错误的密码
   预期结果:提示密码错误
   实际结果:提示密码错误

在这里插入图片描述

测试场景三:输入错误的用户名及正确的密码
预期结果:提示用户名不存在或者密码错误
实际结果:提示用户名不存在或者密码错误

在这里插入图片描述

测试场景四:输入错误的用户名及错误的密码
预期结果:提示用户名不存在或者密码错误
实际结果:提示用户名不存在或者密码错误

在这里插入图片描述

测试场景五:不输入用户名及密码
预期结果:提示用户及密码未输入
实际结果:提示账号或密码不能为空

在这里插入图片描述

测试场景六:输入正确用户名及不输入密码
预期结果:提示密码未输入
实际结果:提示账号或密码不能为空

在这里插入图片描述

测试场景七:输入错误的用户名及不输入密码
预期结果:提示用户名不存在或密码未输入
实际结果:提示账号或密码不能为空

在这里插入图片描述

测试场景八:不输入用户名及输入正确的密码
预期结果:提示用户名未输入
实际结果:提示账号或密码不能为空

在这里插入图片描述

测试场景九:不输入用户名输入错误的密码
预期结果:提示用户名未输入或密码错误
实际结果:提示账号或密码不能为空

在这里插入图片描述

页面按钮

 测试场景一:在未登录情况下点击主页
 预期结果:无法跳转到主页并提示用户未登录
 实际结果:将登录页面重新刷新了一次但未提示用户未登录

在这里插入图片描述

测试场景二:在未登录情况下点击写博客
预期结果:无法跳转到博客编辑页并提示用户未登录
实际结果:跳转到博客编辑页未提示用户未登录

在这里插入图片描述

个人首页功能

页面按钮

 测试场景一:点击注销按钮
 预期结果:跳转回博客登录页面且需重新输入账号和密码
 实际结果:跳转回博客登录页面且需重新输入账号和密码

在这里插入图片描述

在这里插入图片描述

   测试场景二:点击写博客按钮
   预期结果:跳转到博客编辑页面
   实际结果:跳转到博客编辑页面

在这里插入图片描述

在这里插入图片描述

测试场景三:点击主页按钮
预期结果:页面刷新
实际结果:页面刷新

在这里插入图片描述

测试场景四:点击查看全文按钮
预期结果:跳转到博客详情页面
实际结果:跳转到博客详情页面

在这里插入图片描述

在这里插入图片描述

测试场景六:点击GitHub
预期结果:能够跳转到用户的GitHub
实际结果:跳转到gitee上

在这里插入图片描述

在这里插入图片描述

 测试场景七:点击文章按钮
 预期结果:跳转到文章页面
 实际结果:未跳转到文章页面且文章显示数量与实际数量不匹配

在这里插入图片描述

测试场景八:点击分类按钮
预期结果:跳转到文章分类页面
实际结果:未跳转到文章分类页面

在这里插入图片描述

个人信息

 测试场景一:查看头像显示
 预期结果:头像正确显示
 测试结果:头像正确显示

在这里插入图片描述

测试场景二:查看用户的名字
预期结果:名字与输入用户名相同
测试结果:名字与输入用户名相同

在这里插入图片描述

页面信息

测试场景一:博客标题
预期结果:博客标题能够正常显示
实际结果:博客标题能够正常显示

在这里插入图片描述

测试场景二:博客发布时间
预期结果:博客发布时间能够正常显示
实际结果:博客发布时间能够正常显示

在这里插入图片描述

测试场景三:博客内容
预期结果:博客内容能够正常查看
实际结果:博客内容能够正常查看

在这里插入图片描述
在这里插入图片描述

博客详情页功能

页面按钮

测试场景一:点击一篇已发布文章中的编辑按钮
预期结果:跳转到博客编辑页
实际结果:跳转到博客编辑页

在这里插入图片描述
在这里插入图片描述

测试场景二:点击一篇已发布文章中的删除按钮
预期结果:出现提示弹窗询问是否删除,删除后在主页中无法找到该文章
实际结果:出现提示弹窗询问是否删除,删除后在主页中无法找到该文章

在这里插入图片描述

在这里插入图片描述

页面信息

测试场景三:查看页面博客标题 发表时间 博客内容
预期结果:信息能够正常显示
实际结果:信息能够正常显示

在这里插入图片描述

博客编辑页

正常发布博客

测试场景一:输入标题和内容,点击发布博客
预期结果:博客正常发布
实际结果:博客正常发布

在这里插入图片描述

异常发布博客

测试场景一:不写标题,点击发布博客
预期结果:提示标题未输入
实际结果:提示内容未空

在这里插入图片描述
在这里插入图片描述

测试场景二:不写内容,点击发布博客
预期结果:提示内容未输入
实际结果:提示内容为空

在这里插入图片描述

在这里插入图片描述

测试场景三:不点击发布按钮
预期结果:内容未发布
实际结果:内容未发布

在这里插入图片描述

在这里插入图片描述

页面元素检查

 测试场景一:在已经写好的文章中测试文本小工具如撤消 粗体 标题
 预期结果:小工具能正常点击且能在文本中有所体现
 测试结果:小工具能正常点击且能在文本中有所体现

在这里插入图片描述

测试场景二:点击链接按钮并输入链接及链接名
预期结果:点击链接按钮后会弹出添加链接地址,输入后点击确定能够在文章中看到链接,点击链接会跳转到指定界面
实际结果:点击链接按钮后会弹出添加链接地址,输入后点击确定能够在文章中看到链接,点击链接会跳转到指定界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试场景三:点击链接按钮输入连接名但不输入链接
预期结果:提示未输入链接
实际结果:提示未输入链接

在这里插入图片描述

测试场景四:点击连接按钮输入链接但不输入链接名
预期结果:文章中只显示链接,且点击链接可以跳转
实际结果:文章中只显示链接,且点击链接可以跳转

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试场景五:点击链接输入不存在的地址
预期结果:提示地址错误
实际结果:未进行任何提示

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

测试场景六:点击添加图片
预期结果:弹出输入图片链接界面,输入链接后文章内容会出现图片
实际结果:输入链接后并没有出现图片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试场景七:点击行内代码
预期结果:输入的内容呈现形式与其他的不一样
实际结果:输入的内容呈现形式与其他的不一样

在这里插入图片描述
在这里插入图片描述

测试场景八:点击添加表情
预期结果:能够选择各种标签
实际结果:点击添加表情后会弹出告诉settings.emoji == false

在这里插入图片描述
在这里插入图片描述

自动化测试

测试环境

 系统:windows11
 浏览器:139.0.7258.128(正式版本) (64 位)
 语言:python
 模块:selenium4.0
 软件:pyCharm2024.1.7

创建浏览器对象Utils.py

#创建浏览器对象
import os
import sys
from datetime import datetime

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

#创建一个类叫Driver
class Driver:
    # 类里面的一个成员叫driver初始情况为空
    driver = ""
    # 用init构造函数给driver创建一个浏览器对象
    def __init__(self):
        options=webdriver.ChromeOptions()
        # 通过使用构造函数给driver创建一个浏览器对象,需要处理两个参数service通过什么服务打开谷歌 options表示添加浏览器配置
        self.driver=webdriver.Chrome(service=Service(ChromeDriverManager().install()),options=options)
        #设置隐式等待的时间
        self.driver.implicitly_wait(2)
    #创建一个屏幕截图的对象
    def getScreeShot(self):
        #创建屏幕截图,要求图片文件名称./2025-08-17-111.png
        #图片路径:../images/2025-08-17/2025-08-17-111.png
        dirname=datetime.datetime.now().strftime("%Y-%m-%d")
        #判断../images/这个路径下是否存在../images/2025-08-17这个文件夹
        if not os.path.exists("../images/"+dirname)
            os.mkdir("../images/"+dirname)
        filename=sys._getframe().f_back.f_code.co_name+"-"+datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S")+".png"
        #不能直接传文件名,要将这个文件名保存到"../images/"+dirname+"/"这个路径下
        self.driver.save_screenshot("../images/"+dirname+"/"+filename)
BlogDriver=Driver()

博客登录页面BlogLogin.py

测试前准备

#测试博客登录页面
import time

from selenium.webdriver.common.by import By

from common.Utils import BlogDriver
import unittest


class BlogLogin:
    url=""
    driver=""
    def __init__(self):
        self.url=" "
        # 取BlogDriverw对象的driver成员赋值给当前类对象的driver
        self.driver=BlogDriver.driver
        # 访问博客链接
        self.driver.get(self.url)

正常登录

    def LoginSucTest(self):
        # 点击登录
        self.driver.find_element(By.CSS_SELECTOR, "#username").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
        self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("zhangsan")
        time.sleep(3)
        self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123456")
        time.sleep(3)
        self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
        time.sleep(3)
        self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > h3")
        time.sleep(3)
        self.driver.back()

异常登录

   def LoginFailTest(self):
        #不能连续输入账号和密码,要把之前的账号和密码清空,否则第二次输入时会进行尾插
        self.driver.find_element(By.CSS_SELECTOR, "#username").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangsan")
        time.sleep(3)
        self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("12345")
        time.sleep(3)
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        time.sleep(3)
        #得到屏幕上出现的信息
        actual=self.driver.find_element(By.CSS_SELECTOR,"body").text
        #将屏幕截图添加到指定路径下
        BlogDriver.getScreeShot()
        # 判断屏幕是否会出现用户名或密码错误!
        assert actual=="用户名或密码错误!"
        self.driver.quit()

博客首页BlogList.py

#博客首页
from selenium.webdriver.common.by import By

from common.Utils import BlogDriver
class BlogList:
    url=""
    driver=""
    def __init__(self):
        self url="http://8.137.19.140:9090/blog_list.html"
        self.driver=BlogDriver.driver
        self.driver.get(self.url)
    #测试首页
    #登录情况下
    def ListTestByLogin(self):
        #查找标题是否存在
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > div.title")
        #查看内容是否存在
        self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(1) > div.desc")
        self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(1) > a")

博客详情页BlogDetail.py

#测试博客详情页
from selenium.webdriver.common.by import By

from common.Utils import BlogDriver
class BlogDeail:
    url=""
    driver =""
    def __init__(self):
        self.url="http://8.137.19.140:9090/blog_detail.html?blogId=158477"
        self.driver=BlogDriver.driver
        self.driver.get(self.url)
    #登录状态下
    def DetailTestByLogin(self):
        #检查标题
        self.driver.find_element(By.Css_SELECTOR,"body > div.container > div.right > div > div.title")
        #检查时间
        self.driver.find_element(By.Css_SELECTOR, "body > div.container > div.right > div > div.date")
        #检查内容
        self.driver.find_element(By.CSS_SELECTOR,"#detail > p")
        #屏幕截图
        BlogDriver.getScreeShot()

博客编辑页BlogEdit.py

#博客编辑页面
from selenium.webdriver.common.by import By

from common.Utils import BlogDriver
class BlogEdit:
    url=""
    driver=""
    def __init__(self):
        self.url="http://8.137.19.140:9090/blog_edit.html"
        self.driver=BlogDriver.driver
        self.driver.get(self.url)
    #测试登录状态下编辑页面
    def EditSucTestBlogin(self):
        #找到标题
        self.driver.find_element(By.CSS_SELECTOR,"#title").send_kedys("MrGaomq")
        #找到编辑区,因为编辑区域为空,无法直接在编辑区域里写数据,所以可以选择点击菜单栏的横线给里面加入内容
        #菜单栏出现bug,菜单栏里面的元素是非法的,导致无法点击,因为横线有许多标签,试了这些标签依然会抱错,所以这个菜单栏的元素虽然可以点击但是无法定位的
        self.driver.find_element(By.CSS_SELECTOR,"#editor > div.editormd-toolbar > div > ul > li:nth-child(21) > a").click()
        #直接点击发布按钮发布博客 这里需要主要因为点击按钮会导致页面进行跳转,因为页面跳转需要加载时间,可能会出现代码执行速度比页面渲染更快导致元素查找不到,所以需要添加等待,这里添加的隐式等待,建议添加隐式等待,因为隐式等待作用域是在driver整个生命周期
        self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
        actual=self.driver.find_element(By.CSS_SELECTOR,"#body > div.container > div.right > div:nth-child(1) > div.desc").text
        assert actual=="MrGaomq"
        BlogDriver.getScreeShot()

博客首页测试脚本RunTest.py

from tests import BlogLogin
from tests import BlogList
from tests import BlogDetail
from tests import BlogEdit
from common.Utils import BlogDriver
#if __name__ == "__main__"表示程序的执行入口
if __name__ == "__main__":
    BlogLogin.BlogLogin().LoginFailTest()
    BlogLogin.BlogLogin().LoginSucTest()
    #登录成功后调用博客首页测试首页用例
    BlogList.BlogList().ListTestByLogin()
    BlogDetail.BlogDeail().DetailTestByLogin()
    BlogEdit.BlogEdit().EditSucTestBlogin()
    BlogList.driver.quit()

兼容性测试

测试场景一:使用安卓手机测试博客系统
预期结果:博客系统各功能能够在安卓手机正常使用
实际结果:博客系统各功能能够在安卓手机正常使用

.

测试场景二:使用Edge浏览器测试博客系统
预期结果:博客系统各功能能够在Edge浏览器正常使用
实际结果:博客系统各功能能够在Edge浏览器正常使用

.

测试场景三:使用谷歌浏览器测试博客系统
预期结果:博客系统各功能能够在谷歌浏览器正常使用
实际结果:博客系统各功能能够在谷歌浏览器正常使用

安全测试

密码隐藏

测试场景一:输入密码加密
预期结果:输入的密码会在页面中以 .号显示
实际结果:输入的密码会在页面中以 .号显示

在这里插入图片描述

SQL注入

万能登录

测试场景一:对用户名输入' OR'1'='1  密码输入' OR '1'='1
预期结果:系统应提示错误,不应直接登录成功
实际结果:系统应提示错误,未直接登录成功

在这里插入图片描述注释截断

测试场景二:对用户名输入admin' --  密码随意输入
预期结果:系统应提示错误,不应绕过密码登录
实际结果:系统应提示错误,未绕过密码登录

在这里插入图片描述
错误回显

测试场景三:对用户名输入' OR 1=1# 密码输入test
预期结果:页面应提示统一错误,不应显示 SQL 报错信息
实际结果:页面应提示统一错误,未显示 SQL 报错信息

在这里插入图片描述

Bug描述

1:登录页面->页面按钮->点击主页按钮

bug级别:一般
bug出现频率:高
bug描述:在登录页面中点击主页按钮页面会刷新,但是不会进入个人主页以及并未提示用户未登录
测试环境:windows11 谷歌139.0.7258.128(正式版本) (64 位)
复现步骤:在登录页面中点击主页按钮

在这里插入图片描述

2:登录页面->页面按钮->点击写博客按钮

bug级别:一般
bug出现频率:高
bug描述:在登录页面中点击写博客按钮页面会跳转到博客编辑页,点击发布文章后页面会跳回登录页面但是不会提示用户未登录
测试环境:windows11 谷歌139.0.7258.128(正式版本) (64 位)
复现步骤:在登录页面中点击写博客按钮

在这里插入图片描述

3:个人首页->页面按钮->点击GitHub链接

bug级别:严重
bug出现频率:高
bug描述:个人主页中点击GitHub地址会跳转到非GitHub网页,缺少对跳转链接审核
测试环境:windows11 谷歌139.0.7258.128(正式版本) (64 位)
复现步骤:在个人页面中点击GitHub地址

在这里插入图片描述

4:个人首页->页面按钮->点击文章按钮

bug级别:严重
bug出现频率:高
bug描述:个人主页中点击文章按钮未跳转到文章页面
测试环境:windows11 谷歌139.0.7258.128(正式版本) (64 位)
复现步骤:在个人页面中点击文章按钮

在这里插入图片描述

5:个人首页->页面按钮->点击分类按钮

bug级别:严重
bug出现频率:高
bug描述:个人主页中点击文章按钮未跳转到文章分类页面
测试环境:windows11 谷歌139.0.7258.128(正式版本) (64 位)
复现步骤:在个人页面中点击分类按钮

在这里插入图片描述

6:个人首页->页面信息->文章数量

bug级别:严重
bug出现频率:高
bug描述:个人首页中文章数量与实际数量不匹配
测试环境:windows11 谷歌139.0.7258.128(正式版本) (64 位)
复现步骤:个人首页观察文章数量

在这里插入图片描述

7:个人首页->页面信息->文章分类

bug级别:严重
bug出现频率:高
bug描述:个人首页中文章分类数量与实际数量不匹配
测试环境:windows11 谷歌139.0.7258.128(正式版本) (64 位)
复现步骤:个人首页观察文章分类数量

在这里插入图片描述

8:博客编辑页->异常发布博客->不写标题,点击发布博客

bug级别:严重
bug出现频率:高
bug描述:博客编辑页面中不写标题发布博客提示内容未空
测试环境:windows11 谷歌139.0.7258.128(正式版本) (64 位)
复现步骤:博客编辑页面中不写标题,点击发布博客

在这里插入图片描述

9:博客编辑页->异常发布博客->不写内容,点击发布博客

bug级别:严重
bug出现频率:高
bug描述:博客编辑页面中不写标题发布博客提示内容未空
测试环境:windows11 谷歌139.0.7258.128(正式版本) (64 位)
复现步骤:博客编辑页面中不写标题,点击发布博客

在这里插入图片描述

10:博客编辑页->文本小工具->链接->输入不存在的链接

bug级别:严重
bug出现频率:高
bug描述:博客编辑页面中输入不存在的链接未进行任何提示
测试环境:windows11 谷歌139.0.7258.128(正式版本) (64 位)
复现步骤:博客编辑页面点击链接,输入不存在的链接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11:博客编辑页->文本小工具->图片

bug级别:严重
bug出现频率:高
bug描述:博客编辑页面中输入图片地址和链接后未出现图片
测试环境:windows11 谷歌139.0.7258.128(正式版本) (64 位)
复现步骤:博客编辑页面点击图片,输入图片地址和链接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12:博客编辑页->文本小工具->表情

bug级别:严重
bug出现频率:高
bug描述:博客编辑页面中无法使用表情按钮
测试环境:windows11 谷歌139.0.7258.128(正式版本) (64 位)
复现步骤:博客编辑页面点击表情后出现错误弹窗

在这里插入图片描述

Logo

惟楚有才,于斯为盛。欢迎来到长沙!!! 茶颜悦色、臭豆腐、CSDN和你一个都不能少~

更多推荐