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

论坛系统测试报告

目录

  • 一、项目背景
  • 二、论坛系统测试用例思维导图
  • 三、论坛系统测试
    • 3.1界面测试
    • 3.2登陆测试
    • 3.3主页测试
    • 3.4个人中心测试
  • 四、自动化测试脚本
    • 4.1配置驱动
    • 4.2创建浏览器类
    • 4.3功能测试
      • 4.3.1登陆测试
      • 4.3.2注册测试
      • 4.3.3主页测试
      • 4.3.4帖子编辑
      • 4.3.5运行主代码
  • 五、BUG分析
    • 六、测试总结

一、项目背景

论坛系统致力于打造一个多元交流社区,吸引各领域专业人士、爱好者及普通用户汇聚一堂。用户可在开放的环境中充分交流。伴随互联网用户群体持续壮大,尤其是年轻一代网民对在线交流和知识获取的需求不断攀升,论坛作为经典且有效的互动平台,蕴藏着巨大发展潜力。通过论坛系统建设,期望满足不同用户的多样化需求,提升信息交流效率与质量,为用户创造更多价值,助力互联网内容生态的健康、持续发展。

二、论坛系统测试用例思维导图

对于论坛系统简单可以分为六类方面进行测试:界面测试、安全测试、易用性测试、兼容性测试、功能测试
在这里插入图片描述

三、论坛系统测试

3.1界面测试

在这里插入图片描述

  • 用户登陆框虽然没有在屏幕正中央,好在用白色和背景板颜色区分更加显眼,并标有黑体“用户登陆”。
  • 用户名及密码输入框大小合适,让用户容易输入。
  • 登陆按钮用蓝色框格包围使得用户能加轻松登陆。
  • “点击注册”字样用蓝色标识,时用户容易找到。
  • 密码框内“小眼睛”有显示密码功能。

3.2登陆测试

  • 用户名及密码为空时输入框下显示红色“用户名不能为空”或“密码不能为空”字样。
    (用户名:zhangsan 密码:12345 为例)
    在这里插入图片描述
  • 输入正确用户名及错误密码,提示用户名或密码错误.
    在这里插入图片描述
  • 输入错误用户名及正确密码.
    在这里插入图片描述
  • 输入正确用户名及正确密码
    进入论坛主页
    在这里插入图片描述

3.3主页测试

  • 1.点击发帖子

在这里插入图片描述

  • 2.选择板块

在这里插入图片描述

  • 3.输入标题及内容

在这里插入图片描述

  • 4.点击发布

在这里插入图片描述

  • 5.发布成功!!!

在这里插入图片描述

  • 6.点击输入框输入论坛测试

在这里插入图片描述
测试发现点击搜索框内的放大镜无法搜索。

  • 7.点击帖子标题

在这里插入图片描述
显示进入帖子

  • 8.点击发私信

在这里插入图片描述

  • 9.发布成功

在这里插入图片描述
测试显示没有查找私信功能

  • 10.点击回复

在这里插入图片描述
回复成功!!!

3.4个人中心测试

  1. 点击主页头像

在这里插入图片描述

  1. 进入个人中心

在这里插入图片描述

  1. 点击修改昵称/邮箱地址/电话号码

在这里插入图片描述
测试结果发现无法修改

  1. 点击修改密码

在这里插入图片描述

  1. 修改成功

在这里插入图片描述

四、自动化测试脚本

4.1配置驱动

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。
WebDriverManager 是一个开源的 Java 库,用于自动管理 Selenium WebDriver 所需的驱动程序(如 ChromeDriver、GeckoDriver、EdgeDriver 等)。它可以自动下载、设置和维护这些驱动程序,从而简化了 Selenium 测试的配置过程

在pycharm软件的设置中观察是否安装这两个软件包,如果没有可能无法正常驱动打开本地浏览器
在这里插入图片描述

4.2创建浏览器类

  • 每个功能都需要pycharm驱动浏览,若每个功能都有一份浏览器驱动,功能过多可能导致软件崩溃,将驱动器类放入一个common文件,功能测试则放入test文件,image用于保存截屏图片


在这里插入图片描述

  • 驱动器类
    Lunta实例化出Driver类,每次测试功能时调用类对象driver,防止每个功能模块都创建一个新的驱动器。
import datetime
import os
import sys
import time

from selenium import webdriver
from selenium.webdriver.edge.service import Service
from webdriver_manager.microsoft import EdgeChromiumDriverManager


class Driver:
    driver=""
    def __init__(self):
        #打开edge驱动管理
        EdsIns=EdgeChromiumDriverManager().install()
        options=webdriver.EdgeOptions()
        #创建edge浏览器对象
        self.driver=webdriver.Edge(service=Service(EdsIns),options=options)

        # 截屏功能

    def getScreenShot(self):
        dirname = datetime.datetime.now().strftime('%Y-%m-%d')
        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"
        self.driver.save_screenshot(f'../images/{dirname}/' + filename)
Lunta=Driver()

4.3功能测试

4.3.1登陆测试

  1. 函数find_element()分别找出用户名及密码输入框
  2. send_keys输入内容
  3. click模拟用户点击登陆按钮
  4. find_element找出主页信息判断是否登陆成功
import time

from selenium.webdriver.common.by import By

from common.untils import Lunta

class LunTaLgoin:
    url=""
    driver=""
    def __init__(self):
        self.url="http://127.0.0.1:9580/sign-in.html"
        self.driver=Lunta.driver
        self.driver.get(self.url)

    #成功登陆
    def LTLoginTest(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")
        self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("1234")
        self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
        time.sleep(2)
        #查找头像是否登陆成功
        self.driver.find_element(By.CSS_SELECTOR,"#index_nav_avatar")
        #截屏登陆成功页面
        Lunta.getScreenShot()
        # self.driver.find_element(By.CSS_SELECTOR,"#index_nav_avatar").click()
        # self.driver.find_element(By.CSS_SELECTOR,"#index_user_logout").click()
        # Lunta.getScreenShot()

    #登陆失败
    def LTFailTest(self):
        #密码错误
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangsan")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("12345")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        time.sleep(1)
        Lunta.getScreenShot()
        #检测是否出现密码错误弹窗
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")

        #清空内容
        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("zhang")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("1234")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        time.sleep(1)
        Lunta.getScreenShot()
        # 检测是否出现密码错误弹窗
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")

        # 清空内容
        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("")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("12345")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        time.sleep(1)
        Lunta.getScreenShot()
        # 检测是否出现用户名不能为空提示
        text=self.driver.find_element(By.CSS_SELECTOR, "#signInForm > div.mb-3 > div").text
        assert text=="用户名不能为空"

        # 清空内容
        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("zhang")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        time.sleep(1)
        Lunta.getScreenShot()
        # 检测是否出现用户名不能为空提示
        text = self.driver.find_element(By.CSS_SELECTOR, "#signInForm > div.mb-2 > div > div").text
        assert text == "密码不能为空"

4.3.2注册测试

  1. click模拟点击注册按钮
  2. find_element找出用户名,昵称,密码及确认密码输入框
  3. send_keys输入内容
  4. 注册失败是否有弹窗提示
  5. 注册成功返回登陆界面是否能登陆
import time

from selenium.webdriver.common.by import By

from common.untils import Lunta
class LunTareg:
    driver=""
    url=""
    def __init__(self):
        self.url = "http://127.0.0.1:9580/sign-in.html"
        self.driver = Lunta.driver
        self.driver.get(self.url)

    def LTreg(self):
        time.sleep(2)
        self.driver.implicitly_wait(2)
        self.driver.find_element(By.CSS_SELECTOR,"body > div > div > div > div:nth-child(1) > div > div.text-center.text-muted.mt-3 > a").click()
        #注册成功
        self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("zhangs")
        self.driver.find_element(By.CSS_SELECTOR,"#nickname").send_keys("zhangs")
        self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("1234")
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("1234")
        self.driver.find_element(By.CSS_SELECTOR, "#policy").click()
        self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
        time.sleep(2)
        Lunta.getScreenShot()
        self.driver.back()
        #登陆
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangs")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("1234")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        time.sleep(2)
        # 查找头像是否登陆成功
        self.driver.find_element(By.CSS_SELECTOR, "#index_nav_avatar")
        # 截屏登陆成功页面
        Lunta.getScreenShot()
        time.sleep(2)
        self.driver.back()

    def LTrefaii(self):
        time.sleep(2)
        self.driver.implicitly_wait(2)
        #点击注册
        self.driver.find_element(By.CSS_SELECTOR,"body > div > div > div > div:nth-child(1) > div > div.text-center.text-muted.mt-3 > a").click()
        # 注册失败(用户已存在)
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangs")
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("zhangs")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("1234")
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("1234")
        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.jq-toast-wrap.bottom-right > div")
        Lunta.getScreenShot()

        # 注册失败(用户名为空)
        self.driver.find_element(By.CSS_SELECTOR, "#username").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()

        # 是否提示
        text=self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(2) > div").text
        assert text=="用户名不能为空"
        Lunta.getScreenShot()

        # 注册失败(昵称为空)
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangs")
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()

        # 是否提示
        text = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(3) > div").text
        assert text == "昵称不能为空"
        Lunta.getScreenShot()

        # 注册失败(密码为空)
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("zhangs")
        self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        time.sleep(2)
        # 是否提示
        text = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(4) > div").text
        assert text == "密码不能为空"
        Lunta.getScreenShot()

        # 注册失败(确认密码错误)
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("1234")
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("12345")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        text=self.driver.find_element(By.CSS_SELECTOR,"#signUpForm > div > div:nth-child(5) > div > div").text
        assert text=="请检查确认密码"


        #未点击同意
        self.driver.find_element(By.CSS_SELECTOR, "#policy").click()
        # 是否弹窗提示
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")
        Lunta.getScreenShot()
        self.driver.back()

4.3.3主页测试

1.click点击发帖子内容
2.send_keys输入标题
3.send_keys输入内容(编辑框外置无法完成交互)
4.Action链模拟点击(click无法点击)

import time

from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

from common.untils import Lunta


class LunTahome():
    driver=""
    url=""
    def __init__(self):
        # 登陆状态url
        self.driver=Lunta.driver
        self.url="http://127.0.0.1:9580/index.html"
        self.driver.get(self.url)



    def LTPuTest(self):
        self.driver.implicitly_wait(5)
        #点击发布帖子
        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,"#article_post_borad").click()
        #编辑框外置无法完成交互
        # 输入标题,若能交互则完成以下命令
        # self.driver.find_element(By.CSS_SELECTOR, "#article_post_title").send_keys("如何年薪百万")
        #self.driver.find_element(By.CSS_SELECTOR,"article_post_submit").click()
        # # Action链模拟点击
        # element = self.driver.find_element(By.XPATH, '//*[@id="article_post_submit"]')
        # ActionChains(self.driver).move_to_element(element).click().perform()
        # # 提示帖子内容不能为空
        # self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")
        # Lunta.getScreenShot()

        #输入标题
        self.driver.find_element(By.CSS_SELECTOR,"#article_post_title").send_keys("如何年薪百万")
        #Action链模拟点击
        element=self.driver.find_element(By.XPATH,'//*[@id="article_post_submit"]')
        ActionChains(self.driver).move_to_element(element).click().perform()
        #提示帖子内容不能为空
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")
        Lunta.getScreenShot()

        # 不输入标题
        self.driver.find_element(By.CSS_SELECTOR,"#article_post_title").clear()
        # Action链模拟点击
        element = self.driver.find_element(By.XPATH, '//*[@id="article_post_submit"]')
        ActionChains(self.driver).move_to_element(element).click().perform()
        # 提示输入标题不能为空
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")
        Lunta.getScreenShot()

        self.driver.back()

4.3.4帖子编辑

  • click点击发帖子>私信>send_keys输入内容>click点击回复>find_element搜索"回复成功弹窗">click点击回复>send_keys输入内容>click点击回复>find_element搜索“回复成功弹窗”>click点击点赞
import time

from selenium.webdriver.common.by import By

from common.untils import Lunta

class LunTaser:
    driver=""
    url=""
    def __init__(self):
        self.url="http://127.0.0.1:9580/index.html"
        self.driver=Lunta.driver
        self.driver.get(self.url)

    #搜索
    def LTaser(self):
        self.driver.implicitly_wait(5)
        self.driver.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div.nav-item.d-none.d-md-flex.me-3 > div > form > div > input").send_keys("1234")
        #点击搜索
        self.driver.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div.nav-item.d-none.d-md-flex.me-3 > div > form > div > input").click()
        #搜索第一篇文章
        time.sleep(3)
        text=self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        Lunta.getScreenShot()
        #断言是否搜索成功
        #assert text=="1234"

    #私信
    def LTiss(self):
        self.driver.implicitly_wait(5)
        Lunta.getScreenShot()
        self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        self.driver.find_element(By.CSS_SELECTOR,"#btn_details_send_message").click()
        self.driver.find_element(By.CSS_SELECTOR,"#index_message_receive_content").send_keys("上转转回收了吧")
        self.driver.find_element(By.CSS_SELECTOR,"#btn_index_send_message").click()
        Lunta.getScreenShot()
        #是否发布成功弹窗
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")
        Lunta.getScreenShot()

    #回复
    def LTreply(self):
        self.driver.implicitly_wait(5)
        time.sleep(5)
        self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        self.driver.find_element(By.CSS_SELECTOR,"#article_details_reply > div.CodeMirror.cm-s-default.CodeMirror-wrap.CodeMirror-empty > div.CodeMirror-scroll").send_keys("哇哈哈")
        self.driver.find_element(By.CSS_SELECTOR,"#details_btn_article_reply > span").click()
        #内容为空无法发送
        Lunta.getScreenShot()
        #提示请输入内容
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")

    #点赞
    def LTlike(self):
        self.driver.implicitly_wait(5)
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        self.driver.find_element(By.CSS_SELECTOR,"#details_btn_like_count").click()
        #提示点赞成功
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div > h2")
        time.sleep(1)
        Lunta.getScreenShot()

4.3.5运行主代码

from test import LunTaLgoin
from test import LunTahome
from test import LunTareg
from test import LunTaser



if __name__ == '__main__':
    # 注册失败
    LunTareg.LunTareg().LTrefaii()
    # 注册成功
    LunTareg.LunTareg().LTreg()
    #登陆失败
    LunTaLgoin.LunTaLgoin().LTFailTest()
    #登陆成功
    LunTaLgoin.LunTaLgoin().LTLoginTest()

    #主页测试
    LunTahome.LunTahome().LTPuTest()
    # 帖子测试
    LunTaser.LunTaser().LTaser()
    LunTaser.LunTaser().LTiss()
    LunTaser.LunTaser().LTreply()
    LunTaser.LunTaser().LTlike()

五、BUG分析

  1. 搜索框输入内容无法点击搜索

在这里插入图片描述

  1. 主页板块内容显示不完全

在这里插入图片描述

  1. 昵称、邮箱地址、电话号码、个人简介无法修改

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

六、测试总结

本次论坛系统测试旨在全面验证系统功能的完整性、稳定性及用户体验,确保系统能够满足用户在信息交流、内容发布等方面的需求。测试范围涵盖了前台用户操作功能以及后台管理功能,采用了多种测试方法,包括功能测试、性能测试、兼容性测试等。

相关文章:

  • C++ std::vector 超详细指南:基础实践(手搓vector)
  • FFMPEG利用H264+AAC合成TS文件
  • 关于tresos Studio(EB)的MCAL配置之GPT
  • Netty笔记6:Netty组件
  • 剑指 Offer II 060. 出现频率最高的 k 个数字
  • [Redis] 终极缓存四连杀:缓存预热、缓存击穿、缓存穿透、缓存雪崩,真的懂了吗?
  • XHR请求解密:抓取动态生成数据的方法
  • 【django初学者项目】
  • Unity3D 布料模拟(Cloth Simulation)详解
  • 计算机网络(1) 网络通信基础,协议介绍,通信框架
  • 【杂谈】信创电脑华为w515(统信系统)登录锁定及忘记密码处理
  • JVM简单了解
  • Avalonia 打包成deb
  • Stream流的核心思想
  • 为AI聊天工具添加一个知识系统 之130 详细设计之71 通用编程语言 之1
  • MAUI(C#)安卓开发起步
  • #define GBB_DEPRECATED_MSG(msg) __declspec(deprecated(msg))
  • VIA的寄生电感和Stub对高速信号的影响
  • 【大模型安全】大模型的技术风险
  • 【虚拟仿真】Unity3D中实现激光/射线的发射/折射/反射的效果(3D版)
  • 中国田径巡回赛西安站完赛:男子跳远石雨豪夺冠
  • 国内规模最大女子赛艇官方赛事在沪启航,中外41支队伍逐浪
  • 国际乒联主席索林:洛杉矶奥运会增设混团是里程碑事件
  • 朝鲜称将在各领域采取反制措施,应对美国敌对挑衅
  • 打击网络侵权盗版!四部门联合启动“剑网2025”专项行动
  • 租车订单时隔7年从花呗免密扣费?“GoFun出行”引质疑