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

论坛社区基础版【项目测试报告】

文章目录

  • 一、项目背景
  • 二、项目功能
    • 用户注册/登录
    • 帖子列表页
    • 发布帖子
    • 个人中心
  • 三、测试工具和环境
  • 四、测试计划
    • 非功能测试用例
    • 功能测试用例
    • 部分人工手动测试截图
    • web自动化测试
      • 测试用例
      • 代码框架
    • 配置内容代码文件(Utils.py)
    • 注册页面代码文件(RegistrationPage.py)
    • 登录页面代码文件(LoginPage.py)
    • 发布帖子页面代码文件(PublishingPage.py)
    • 个人中心页面代码文件(PersonalCenterPage)
    • 测试论坛系统代码文件(RunTest.py)
  • 五、总结
    • 测试背景
    • 测试用例执行情况
      • 用户注册
      • 用户登录
      • 个人中心页面
      • 发布帖子页面
    • 不足和改进
      • 不足
      • 改进
    • 小结


一、项目背景

本系统延续前后端分离架构,使用MySQL关系型数据库存储结构化数据,部署于云服务器环境。
前端页面扩展为六大核心模块:用户注册/登录页、主版块索引页、帖子详情页(含评论互动)、内容发布页、个人中心页及消息通知页。
该论坛系统适用于中小型兴趣社区、企业知识共享平台等场景,通过模块化设计既可快速部署基础论坛,也可通过功能扩展演进为综合性社区平台。

二、项目功能

该论坛系统主要有以下几个功能:

  • 用户注册/登录;
  • 帖子列表展示;
  • 发布帖子
  • 个人中心。

用户注册/登录

  • 采用用户自主注册机制;
  • 登录成功跳转至版块列表页,失败时弹出错误提示窗口;
  • 登录态异常自动退回至登录页。

帖子列表页

  • 按发帖时间倒序排列主题帖;
  • 展示帖子标题、作者、发布时间、浏览数、点赞量和评论数;
  • 点击帖子跳转至详情页

发布帖子

  • 支持纯文本发帖;
  • 有版块选择;
  • 提交成功刷新当前页面数据。

个人中心

  • 可修改头像、昵称、邮箱地址和密码等;
  • 点击提交修改按钮返回登录页面。

三、测试工具和环境

操作系统:Windows 11 家庭中文版

处理器: 11th Gen Intel(R) Core(TM) i5-1155G7 @ 2.50GHz 2.50 GHz

浏览器:Chrome 版本 133.0.6943.142(正式版本) (64 位)

测试工具:Python,Selenium

自动化脚本运行环境: PyCharm 2024.2.1

四、测试计划

非功能测试用例

功能测试用例

部分人工手动测试截图

情景一:异常注册

未勾选 使用条款和隐私政策

密码和确认密码不一致

情景二:异常登录

用户名或密码错误

情景三:登录成功后的跳转页面

情景四:登录成功后的发布帖子页面

情景五:登录成功后的个人中心页面

web自动化测试

测试用例

见上面的功能测试用例

代码框架

配置内容代码文件(Utils.py)

# 导入所需的模块
import datetime  # 用于处理日期和时间
import os  # 用于文件和目录操作
import sys  # 用于获取调用栈信息

# 导入Selenium相关模块
from selenium import webdriver  # Selenium 核心模块
from selenium.webdriver.chrome.service import Service  # Chrome 浏览器服务
from webdriver_manager.chrome import ChromeDriverManager  # 自动管理 ChromeDriver

# 创建浏览器驱动类
class Driver:
    driver = ""  # 类属性,用于保存浏览器驱动实例
    
    def __init__(self):
        """初始化浏览器驱动配置"""
        # 创建 Chrome 浏览器选项对象(可用于添加扩展、无头模式等配置)
        options = webdriver.ChromeOptions()
        
        # 指定 ChromeDriver 的路径
        driver_path = "D:/Downloads/chromedriver-win64/chromedriver-win64/chromedriver.exe"
        
        # 创建 Chrome 浏览器驱动实例
        self.driver = webdriver.Chrome(
            executable_path=driver_path,  # 指定驱动路径
            options=options  # 传入浏览器选项
        )
        
        # 设置隐式等待(作用于整个浏览器生命周期,查找元素时的默认等待时间)
        self.driver.implicitly_wait(2)  # 单位:秒

    def getScreeShot(self):
        """屏幕截图方法"""
        # 生成日期格式的目录名(示例:2023-08-01)
        dirname = datetime.datetime.now().strftime("%Y-%m-%d")
        
        # 拼接截图保存路径(上级目录的 images 文件夹下)
        screenshot_dir = "../images/" + dirname
        
        # 如果目录不存在则创建
        if not os.path.exists(screenshot_dir):
            os.mkdir(screenshot_dir)
            
        # 生成文件名格式:
        # 调用当前方法的上层方法名 + 时间戳 + 后缀(示例:test_login_2023-08-01-143045.png)
        filename = (
            sys._getframe().f_back.f_code.co_name  # 获取调用该方法的函数名
            + datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S")
            + ".png"
        )
        
        # 保存截图到指定路径
        self.driver.save_screenshot(os.path.join(screenshot_dir, filename))

# 创建全局浏览器驱动实例(可被其他模块导入使用)
ForumDriver = Driver()

注册页面代码文件(RegistrationPage.py)

# 测试论坛注册界面
# 本脚本使用 Selenium 库实现对论坛注册界面的自动化测试,包括成功注册和失败注册的测试用例。

from selenium.webdriver.common.by import By  # 导入 Selenium 的 By 模块,用于指定元素的查找方式
from common.Utils import ForumDriver  # 导入自定义的 ForumDriver 类,用于获取 WebDriver 实例


class ForumRegistration:
    url = ""  # 用于存储论坛注册页面的 URL
    driver = ""  # 用于存储 WebDriver 实例

    def __init__(self):
        # 初始化方法,设置注册页面的 URL 并启动 WebDriver
        self.url = "http://127.0.0.1:9580/sign-up.html"  # 设置论坛注册页面的 URL
        self.driver = ForumDriver.driver  # 获取 WebDriver 实例
        self.driver.get(self.url)  # 打开注册页面

    # 成功注册的测试用例
    def RegistrationSucTest(self):
        """
        测试正常注册流程:
        1. 清空所有输入框。
        2. 输入有效的用户名、昵称、密码和确认密码。
        3. 勾选用户协议。
        4. 点击注册按钮。
        5. 验证是否成功跳转到登录页面。
        6. 截图保存测试结果。
        """
        # 若连续多次的 send_keys 则会出现关键词拼接,而不是替换。若要替换需要先 clear
        self.driver.find_element(By.CSS_SELECTOR, "#username").clear()  # 清空用户名输入框
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").clear()  # 清空昵称输入框
        self.driver.find_element(By.CSS_SELECTOR, "#password").clear()  # 清空密码输入框
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").clear()  # 清空确认密码输入框

        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("z11")  # 输入有效的用户名
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("123")  # 输入有效的昵称
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")  # 输入有效的密码
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("123")  # 输入有效的确认密码
        self.driver.find_element(By.CSS_SELECTOR, "#policy").click()  # 勾选用户协议
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()  # 点击注册按钮

        # 查找注册成功跳转后的页面的元素:登录页面的 用户登录元素
        self.driver.find_element(By.CSS_SELECTOR, "body > div > div > div > div:nth-child(1) > div > div.card.card-md > div > h2")  # 验证是否成功跳转到登录页面

        # 添加屏幕截图
        ForumDriver.getScreeShot()  # 调用截图方法,保存测试结果

    # 失败注册的测试用例
    def RegistrationFailTest(self):
        """
        测试异常注册流程:
        1. 清空所有输入框。
        2. 输入用户名、密码和确认密码(确认密码与密码不一致)。
        3. 勾选用户协议。
        4. 点击注册按钮。
        5. 验证是否出现注册失败提示。
        6. 截图保存测试结果。
        """
        # 若连续多次的 send_keys 则会出现关键词拼接,而不是替换。若要替换需要先clear
        self.driver.find_element(By.CSS_SELECTOR, "#username").clear()  # 清空用户名输入框
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").clear()  # 清空昵称输入框
        self.driver.find_element(By.CSS_SELECTOR, "#password").clear()  # 清空密码输入框
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").clear()  # 清空确认密码输入框

        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("z")  # 输入用户名
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("123")  # 输入昵称
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("12")  # 输入密码
        # 确认密码和密码输入不一致
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("123")  # 输入与密码不一致的确认密码

        self.driver.find_element(By.CSS_SELECTOR, "#policy").click()  # 勾选用户协议
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()  # 点击注册按钮

        # 查找注册失败页面的元素:注册页面的 提示检查确认密码
        self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(5) > div > div")  # 验证是否出现注册失败提示

        # 添加屏幕截图
        ForumDriver.getScreeShot()  # 调用截图方法,保存测试结果

登录页面代码文件(LoginPage.py)

# 测试论坛登录界面
# 本脚本使用 Selenium 库实现对论坛登录界面的自动化测试,包括成功登录和异常登录的测试用例。

from selenium.webdriver.common.by import By  # 导入 Selenium 的 By 模块,用于指定元素的查找方式

from common.Utils import ForumDriver  # 导入自定义的 ForumDriver 类,用于获取 WebDriver 实例


class ForumLogin:
    url = ""  # 用于存储论坛登录页面的 URL
    driver = ""  # 用于存储 WebDriver 实例

    def __init__(self):
        # 初始化方法,设置登录页面的 URL 并启动 WebDriver
        self.url = "http://127.0.0.1:9580/sign-in.html"  # 设置论坛登录页面的 URL
        self.driver = ForumDriver.driver  # 获取 WebDriver 实例
        self.driver.get(self.url)  # 打开登录页面

    # 成功登陆的测试用例
    def LoginSucTest(self):
        """
        测试正常登录流程:
        1. 清空用户名和密码输入框。
        2. 输入正确的用户名和密码。
        3. 点击登录按钮。
        4. 验证是否成功登录到首页。
        5. 截图保存测试结果。
        """
        # 若连续多次的 send_keys 则会出现关键词拼接,而不是替换。若要替换需要先 clear
        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("zhaoliu")  # 输入正确的用户名
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")  # 输入正确的密码
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()  # 点击登录按钮

        # 查找登录成功页面的元素:首页标题
        self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title")  # 验证是否成功登录到首页

        # 添加屏幕截图
        ForumDriver.getScreeShot()  # 调用截图方法,保存测试结果

    # 异常登陆的测试用例
    def LoginFailTest(self):
        """
        测试异常登录流程:
        1. 清空用户名和密码输入框。
        2. 输入未注册的用户名和密码。
        3. 点击登录按钮。
        4. 验证是否出现登录失败提示。
        5. 截图保存测试结果。
        """
        # 若连续多次的 send_keys 则会出现关键词拼接,而不是替换。若要替换需要先 clear
        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("admin")  # 输入未注册的用户名
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")  # 输入密码
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()  # 点击登录按钮

        # 检查是否登录失败:看是否出现 提示登录失败元素
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")  # 验证是否出现登录失败提示

        # 添加屏幕截图
        ForumDriver.getScreeShot()  # 调用截图方法,保存测试结果

发布帖子页面代码文件(PublishingPage.py)

from selenium.webdriver.common.by import By  # 导入 Selenium 的 By 模块,用于指定元素的查找方式
from common.Utils import ForumDriver  # 导入自定义的 ForumDriver 类,用于获取 WebDriver 实例

# 测试发布帖子页
class PublishingPage:
    url = ""  # 用于存储论坛主页的 URL
    driver = ""  # 用于存储 WebDriver 实例

    def __init__(self):
        """
        初始化方法,设置论坛主页的URL并启动WebDriver。
        """
        self.url = "http://127.0.0.1:9580/index.html"  # 设置论坛主页的 URL
        self.driver = ForumDriver.driver  # 获取 WebDriver 实例
        self.driver.get(self.url)  # 打开论坛主页

    # 登录状态下发布帖子页的测试
    def PublishingPageDetail(self):
        """
        测试在登录状态下进入发布帖子页面的流程:
        1. 点击发布帖子的按钮,进入发布帖子页面。
        2. 验证页面中是否存在“发新帖”元素,以确认页面加载成功。
        3. 添加屏幕截图以保存测试结果。
        """
        # 点击发布帖子标签进入发布帖子主页
        self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-header.d-print-none > div > div > div.col-auto.ms-auto.d-print-none > div > a.btn.btn-primary.d-none.d-sm-inline-block.article_post").click()

        # 查看发布帖子页面中 发新帖元素是否存在
        self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-header.d-print-none > div > div > div > h2")

        # 添加屏幕截图
        ForumDriver.getScreeShot()  # 调用截图方法,保存测试结果

个人中心页面代码文件(PersonalCenterPage)

from selenium.webdriver.common.by import By  # 导入 Selenium 的 By 模块,用于指定元素的查找方式
from common.Utils import ForumDriver  # 导入自定义的 ForumDriver 类,用于获取 WebDriver 实例

# 测试个人中心页
class PersonalCenterPage:
    url = ""  # 用于存储论坛主页的 URL
    driver = ""  # 用于存储 WebDriver 实例

    def __init__(self):
        """
        初始化方法,设置论坛主页的URL并启动WebDriver。
        """
        self.url = "http://127.0.0.1:9580/index.html"  # 设置论坛主页的 URL
        self.driver = ForumDriver.driver  # 获取 WebDriver 实例
        self.driver.get(self.url)  # 打开论坛主页

    # 登录状态下个人中心页的测试
    def PersonalCenterPage(self):
        """
        测试在登录状态下进入个人中心页面的流程:
        1. 点击头像,进入个人主页。
        2. 点击设置按钮,进入个人中心。
        3. 验证个人中心页面中是否存在“用户中心”元素。
        4. 添加屏幕截图以保存测试结果。
        """
        # 点击头像进入个人主页
        self.driver.find_element(By.CSS_SELECTOR, "#index_nav_avatar").click()
        # 点击设置按钮进入个人中心
        self.driver.find_element(By.CSS_SELECTOR, "#index_user_settings").click()

        # 检查个人中心页中 用户中心元素是否存在:
        self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-header.d-print-none > div > div > div > h2")

        # 添加屏幕截图
        ForumDriver.getScreeShot()  # 调用截图方法,保存测试结果

测试论坛系统代码文件(RunTest.py)

from tests import LoginPage  # 导入登录页面的测试模块
from tests import RegistrationPage  # 导入注册页面的测试模块
from tests import PersonalCenterPage  # 导入个人中心页面的测试模块
from common.Utils import ForumDriver  # 导入公用的 WebDriver 工具类
from tests import PublishingPage  # 导入发布帖子页面的测试模块

if __name__ == '__main__':
    """
    主程序入口,用于运行所有测试用例。
    """
    # 注册页面
    print("开始测试:注册页面")

    # 注册失败
    print("测试用例:注册失败")
    RegistrationPage.ForumRegistration().RegistrationFailTest()  # 调用注册失败的测试用例

    # 注册成功
    print("测试用例:注册成功")
    RegistrationPage.ForumRegistration().RegistrationSucTest()  # 调用注册成功的测试用例

    # 登录页面
    print("开始测试:登录页面")

    # 登录失败
    print("测试用例:登录失败")
    LoginPage.ForumLogin().LoginFailTest()  # 调用登录失败的测试用例

    # 登录成功
    print("测试用例:登录成功")
    LoginPage.ForumLogin().LoginSucTest()  # 调用登录成功的测试用例

    # 个人中心页
    print("开始测试:个人中心页")
    PersonalCenterPage.PersonalCenterPage().PersonalCenterPage()  # 调用个人中心页的测试用例

    # 发布帖子页
    print("开始测试:发布帖子页")
    PublishingPage.PublishingPage().PublishingPageDetail()  # 调用发布帖子页的测试用例

    # 指定浏览器的退出
    print("关闭浏览器")
    ForumDriver.driver.quit()  # 关闭 WebDriver 实例,退出浏览器

五、总结

测试背景

本次测试的目标是一个基础版的论坛系统,主要功能包括用户注册、登录、个人中心页面访问以及帖子发布。
测试旨在验证这些功能的正确性、稳定性和用户体验。

测试用例执行情况

用户注册

测试过程测试结果
输入有效的用户名、昵称、密码及确认密码后,成功跳转至登录页面,验证通过。注册成功
输入无效的用户名或密码(如密码不匹配),页面提示注册失败,验证通过。注册失败

用户登录

测试过程测试结果
输入正确的用户名和密码后,成功跳转至首页,验证通过。登录成功
输入错误的用户名或密码后,页面提示登录失败,验证通过。登录失败

个人中心页面

测试过程测试结果
登录状态下点击头像进入个人中心,页面加载成功,验证通过。通过

发布帖子页面

测试过程测试结果
登录状态下点击发布帖子按钮,成功进入帖子发布页面,验证通过。通过

不足和改进

不足

用户体验问题:

  • 登录失败时,提示信息不够具体,无法明确告知用户是用户名还是密码错误。

功能问题:

  • 未对用户输入进行严格校验,例如允许注册用户名为单个字符,可能导致后续功能异常。

测试覆盖不足:

  • 未测试帖子发布功能的完整流程(如输入帖子内容、提交帖子等)。

改进

优化错误提示:

  • 在注册和登录页面,提供更详细的错误提示,帮助用户快速定位问题。

增强输入校验:

  • 对用户名、密码等输入进行严格校验,确保符合系统要求。

完善功能测试:

  • 完整测试帖子发布功能,包括输入帖子标题、内容、提交等流程。

小结

本次测试基本覆盖了论坛系统的核心功能,测试结果表明系统的主要功能正常运行。
然而,仍存在一些用户体验和功能上的问题需要改进。
后续测试应重点关注功能的完整性、用户体验的优化以及系统的安全性。

相关文章:

  • 【YOLOv12改进trick】StarBlock引入YOLOv12,创新涨点优化,含创新点Python代码,方便发论文
  • django中路由配置规则的详细说明
  • 混合存储HDD+SSD机型磁盘阵列,配上SSD缓存功能,性能提升300%
  • Matlab—从入门到精通的第一天
  • 【AI深度学习基础】PyTorch初探
  • 分布式系统设计(架构能力)
  • 用Python分割并高效处理PDF大文件
  • 【kaggle机器学习实战--降雨数据集的二分类建模,内含插值法和二分类各种评估指标的可视化详解】
  • C++:#ifndef 头文件保护机制详解
  • visual studio下载安装
  • Vue3自定义hooks
  • SAP-ABAP:SAP的生产计划模块PP的bapi详细介绍及使用场景
  • SpringUI高保真动态交互元件库:助力产品原型设计
  • 数据结构 常见的排序算法
  • JVM常用概念之JNI临界区和GC锁定器
  • 【五.LangChain技术与应用】【31.LangChain ReAct Agent:反应式智能代理的实现】
  • 《会展管理:现场管理的实战经验分享》
  • 基于PyMuPDF与百度翻译的PDF翻译处理系统开发:中文乱码解决方案与自动化排版实践
  • Schematic Booster可以多模式打开原理图,兼容不同原理图设计图纸格式
  • 在 IntelliJ IDEA(2024) 中创建 JAR 包步骤
  • 大连 祥云 网站优化/关键词优化的主要工具
  • 都江堰建设局官方网站/网站seo好学吗
  • 如何制作网站板块/哪个平台可以免费推广
  • 社交网站 ui/在线推广企业网站的方法
  • 做网站 挣广告联盟的佣金/搜索引擎优化自然排名的优点
  • 做音响的是哪个网站/百度竞价排名又叫什么