论坛系统测试报告

发布于:2025-05-09 ⋅ 阅读:(16) ⋅ 点赞:(0)

目录

  • 项目背景
  • 项目简介
  • 测试工具
  • 测试用例
  • 功能测试
  • 性能测试
  • 弱网测试
  • 自动化测试
  • bug简述
  • 测试结论

1. 项目背景

通过论坛系统,我们可以将自己的问题或者学习经验分享到上面,和他人讨论分享,从而共同进步。

2. 项目简介

论坛系统共分为以下几个页面:登录页面、注册页面、论坛首页、我的/他人文章详情页、帖子发布页、我的/他人帖子页面、个人中心页面。

登录页面:通过输入正确的账号和密码进行登录。

注册页面:按要求输入用户名、昵称、密码进行注册。

论坛首页:查看用户昵称、头像;查看首页发布的贴子并且可以跳转到帖子详情页;选择不同分类查看当前分类下的帖子;查看站内信,可以回复他人给自己发的私信;切换白天和夜间模式;搜索;可以点击发布按钮并跳转到帖子发布页面

我的文章详情页:查看作者/回复者头像昵称;点赞帖子;发布回复帖子

他人文章详情页:查看作者/回复者头像昵称;点赞帖子;发布回复帖子;给帖子作者发私信

帖子发布页:选择板块、输入标题和内容并点击发布按钮

我的帖子页面:可以查看头像、昵称、发帖数、邮箱、注册日期、发布的帖子并可以点击跳转到详情页、个人介绍

他人帖子页面:可以查看头像、昵称、发帖数、邮箱、注册日期、发布的帖子并可以点击跳转到详情页、个人介绍;可以给当前用户发私信

个人中心页面:可以修改头像、昵称、邮箱地址、电话号码、密码、个人简介

3. 测试工具

在进行性能测试时,我们会用到jmeter工具;在进行弱网测试时,我们会用到fiddler工具;在进行自动化测试时,我们会用到PyCharm以及selenium库来编写自动化脚本。

4. 测试用例

测试用例

5. 功能测试

这里会展示部分功能测试的截图:

  • 正常登录

正常登录(1)

正常登录(2)


  • 异常登录

异常登录(1)

异常登录(2)


正常注册:

正常注册


异常注册:

异常注册(1)

异常注册(2)

异常注册(3)


  • 论坛首页登录状态

论坛首页登录状态(1)

论坛首页登录状态(2)

bug1:部分分类名称未显示

论坛首页登录状态(3)

bug2:帖子数量显示不正确

论坛首页登录状态(4)

论坛首页登录状态(5)

论坛首页登录状态(6)

bug3:在搜索框搜索后不会跳出搜索的内容


  • 论坛首页未登录状态

论坛首页未登录状态


  • 我的帖子详情页面

我的帖子详情页面(1)

我的帖子详情页面(2)


  • 他人帖子详情页面

他人帖子详情页面(1)

他人帖子详情页面(2)

他人帖子详情页面(3)


  • 正常发布帖子

正常发布帖子(1)

正常发布帖子(2)

bug4:帖子发布时间显示不正确


  • 异常发布帖子

异常发布帖子(1)

异常发布帖子(2)


  • 我的帖子页面

我的帖子页面(1)

bug5:显示的发帖数和实际发帖数不一致

bug6:注册日期错误


  • 他人帖子页面

他人帖子页面


  • 个人中心页面

个人中心页面(1)

个人中心页面(2)


bug7:修改密码时和原来的密码相同也能修改成功


个人中心页面(3)

个人中心页面(4)

个人中心页面(5)

个人中心页面(6)


bug8:让密码取消掩码显示不成功

6. 性能测试

性能测试

性能测试报告(1)

性能测试报告(2)

性能测试报告(3)

性能测试报告(4)

性能测试报告(5)

性能测试报告(6)

性能测试报告(7)

总结: 在较高的并发下,回复帖子接口、帖子详情页接口、论坛首页接口、点赞接口出现错误;且大部分接口响应时间较长。

7. 弱网测试

弱网测试(1)

弱网测试(2)

弱网测试(3)

弱网测试(4)

总结: 在弱网环境下,页面加载变慢,但不会错误展示;建议页面在加载缓慢时加上默认提示来使用户体验更加良好。

8. 自动化测试

# common/Utils.py

import datetime
import os.path
import sys

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


class Driver:
    driver = ""

    def __init__(self):
        options = webdriver.ChromeOptions()
        self.driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()),options=options)
        self.driver.implicitly_wait(5)

    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("../images/"+dirname+"/"+filename)

ForumDriver = Driver()
# tests/ForumLogin.py

import time

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

from common.Utils import ForumDriver


class ForumLogin:
    driver = ""
    url = ""

    def __init__(self):
        self.driver = ForumDriver.driver
        self.url = "http://127.0.0.1:9580/sign-in.html"
        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("waves")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR,"#submit").click()

        WebDriverWait(self.driver,3).until(EC.title_is("比特论坛"))
        ForumDriver.getScreenShot()

    def LoginFailTest(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("waves")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("1234")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        WebDriverWait(self.driver,3).until(EC.visibility_of_element_located((By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")))
        ForumDriver.getScreenShot()

        time.sleep(0.5)

        # 错误的用户名和正确的密码
        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("wave")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        WebDriverWait(self.driver, 3).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")))
        ForumDriver.getScreenShot()

        time.sleep(0.5)

        # 错误的用户名和错误的密码
        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("wave")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("1234")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        WebDriverWait(self.driver, 3).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")))
        ForumDriver.getScreenShot()
# tests/ForumRegister.py

import datetime
import time

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

from common.Utils import ForumDriver


class ForumRegister:
    driver = ""
    url = ""

    def __init__(self):
        self.driver = ForumDriver.driver
        self.url = "http://127.0.0.1:9580/sign-up.html"
        self.driver.get(self.url)

    def RegisterSucTest(self):
        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(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR,"#policy").click()
        self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
        WebDriverWait(self.driver,3).until(EC.title_is("比特论坛 - 用户登录"))
        ForumDriver.getScreenShot()

    def RegisterFailTest(self):
        # 输入被占用的用户名,正确的昵称、密码、确认密码,点击同意隐私政策,点击注册
        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("waves")
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("waves")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#policy").click()
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        time.sleep(0.5)
        ForumDriver.getScreenShot()

        # 关闭警告
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div > span.close-jq-toast-single").click()
        # 把勾选的同意隐私政策取消勾选
        self.driver.find_element(By.CSS_SELECTOR, "#policy").click()
        time.sleep(0.5)

        # 输入未被占用的用户名,正确的昵称,密码和确认密码不相同,点击同意隐私政策,点击注册
        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("waves123")
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("waves123")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        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()
        text1 = self.driver.find_element(By.CSS_SELECTOR,"#signUpForm > div > div:nth-child(5) > div > div").text
        assert text1 == "请检查确认密码"
        ForumDriver.getScreenShot()

        # 把勾选的同意隐私政策取消勾选
        self.driver.find_element(By.CSS_SELECTOR, "#policy").click()
        time.sleep(0.5)

        # 输入正确的昵称、密码,点击注册
        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, "#nickname").send_keys("waves123")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        text2 = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(2) > div").text
        assert text2 == "用户名不能为空"
        text3 = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(5) > div > div").text
        assert text3 == "请检查确认密码"
        ForumDriver.getScreenShot()
# tests/ForumHomepage.py

import time

from selenium.webdriver.common.by import By

from common.Utils import ForumDriver


class ForumHomepage:
    driver = ""
    url = ""

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

    def ForumHomepageByNotLogin(self):
        title = self.driver.title
        assert title == "比特论坛 - 用户登录"
        ForumDriver.getScreenShot()

    def ForumHomepageByLogin(self):
        # 查看用户头像
        self.driver.find_element(By.CSS_SELECTOR,"#index_nav_avatar")
        # 查看用户昵称
        # 把页面放大到全屏,不然没有显示出用户昵称就提取不了文本
        self.driver.maximize_window()
        nickname = self.driver.find_element(By.CSS_SELECTOR,"#index_nav_nickname").text
        assert nickname == "waves"
        # 查看首页发布的帖子
        self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1)")
        time.sleep(2)
        ForumDriver.getScreenShot()
        # 查看站内信,可以回复他人给自己发的私信
        self.driver.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div:nth-child(2) > div > a > svg").click()
        self.driver.find_element(By.CSS_SELECTOR,"#index_div_message_list > div:nth-child(1) > div > div.col.text-truncate > a > span:nth-child(2)").click()
        self.driver.find_element(By.CSS_SELECTOR,"#btn_index_message_reply").click()
        self.driver.find_element(By.CSS_SELECTOR,"#index_message_reply_receive_content").send_keys("hello")
        self.driver.find_element(By.CSS_SELECTOR,"#btn_index_send_message_reply").click()
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")
        ForumDriver.getScreenShot()
        self.driver.find_element(By.CSS_SELECTOR,"#index_message_offcanvasEnd > div.offcanvas-header > button").click()
        # 切换白天和夜间模式
        self.driver.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div:nth-child(2) > a.nav-link.px-0.hide-theme-dark > svg").click()
        self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1)")
        ForumDriver.getScreenShot()
        self.driver.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div:nth-child(2) > a.nav-link.px-0.hide-theme-light > svg").click()
        self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1)")
        ForumDriver.getScreenShot()
# tests/OthersForumDetail.py

import time

from selenium.webdriver.common.by import By

from common.Utils import ForumDriver


class OthersForumDetail:
    driver = ""
    url = ""

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

    def OthersForumDetail(self):
        # 选择不同分类查看当前分类下的帖子
        self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(2) > a").click()
        # 点击跳转到他人帖子详情页
        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")
        time.sleep(0.5)
        ForumDriver.getScreenShot()
        # 发布回复帖子
        self.driver.find_element(By.CSS_SELECTOR,"#article_details_reply > div.editormd-toolbar > div > ul > li:nth-child(20) > a > i").click()
        time.sleep(0.5)
        self.driver.find_element(By.CSS_SELECTOR,"#details_btn_article_reply").click()
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(0.5)
        ForumDriver.getScreenShot()
        time.sleep(0.5)
        # 给帖子作者发私信
        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("hello")
        self.driver.find_element(By.CSS_SELECTOR,"#btn_index_send_message").click()
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(0.5)
        ForumDriver.getScreenShot()
        # 查看作者/回复者头像昵称
        self.driver.find_element(By.CSS_SELECTOR, "#details_reply_area > div:nth-child(1) > div.col-3.card > div > span")
        self.driver.find_element(By.CSS_SELECTOR, "#details_reply_area > div:nth-child(1) > div.col-3.card > div > h3 > a")
        self.driver.find_element(By.CSS_SELECTOR,"#article_details_author_avatar")
        # 跳转到他人帖子页面
        self.driver.find_element(By.CSS_SELECTOR, "#article_details_author_name").click()
        # 查看头像
        self.driver.find_element(By.CSS_SELECTOR,"#profile_avatar")
        # 查看昵称
        self.driver.find_element(By.CSS_SELECTOR, "#profile_nickname")
        # 查看发帖数
        self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-header.d-print-none > div > div > div.col > div > div:nth-child(1)")
        # 查看邮箱
        self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-header.d-print-none > div > div > div.col > div > div:nth-child(2)")
        # 查看注册日期
        self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-header.d-print-none > div > div > div.col > div > div:nth-child(3)")
        # 查看个人介绍
        text = self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-body > div > div > div.col-lg-4 > div > div > div > div > h2").text
        assert text == "个人介绍"
        # 给当前用户发私信
        self.driver.find_element(By.CSS_SELECTOR, "#btn_profile_send_message").click()
        self.driver.find_element(By.CSS_SELECTOR,"#index_message_receive_content").send_keys("hello")
        self.driver.find_element(By.CSS_SELECTOR, "#btn_index_send_message").click()
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(1)
        ForumDriver.getScreenShot()
        # 查看发布的帖子并可以点击跳转到详情页
        self.driver.find_element(By.CSS_SELECTOR,"#profile_article_body > li:nth-child(1) > div.card.timeline-event-card > div > div > div > div > div.text-truncate > a > strong").click()
        self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-header.d-print-none > div > div.row.g-2.align-items-center > div")
        time.sleep(1)
        ForumDriver.getScreenShot()
# tests/MyForum.py

import time

from selenium.webdriver.common.by import By

from common.Utils import ForumDriver


class MyForum:
    driver = ""
    url = ""

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

    def MyForum(self):
        # 进入我的帖子页面
        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.dropdown").click()
        self.driver.find_element(By.CSS_SELECTOR,"#index_user_profile").click()
        # 查看头像
        self.driver.find_element(By.CSS_SELECTOR,"#profile_avatar")
        # 查看昵称
        self.driver.find_element(By.CSS_SELECTOR, "#profile_nickname")
        # 查看发帖数
        self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-header.d-print-none > div > div > div.col > div > div:nth-child(1)")
        # 查看邮箱
        self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-header.d-print-none > div > div > div.col > div > div:nth-child(2)")
        # 查看注册日期
        self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-header.d-print-none > div > div > div.col > div > div:nth-child(3)")
        # 查看个人介绍
        text = self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-body > div > div > div.col-lg-4 > div > div > div > div > h2").text
        assert text == "个人介绍"
        ForumDriver.getScreenShot()
        # 查看发布的帖子并可以点击跳转到详情页
        self.driver.find_element(By.CSS_SELECTOR, "#profile_article_body > li:nth-child(1) > div.card.timeline-event-card > div > div > div > div > 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")
        time.sleep(0.5)
        ForumDriver.getScreenShot()
        # 发布回复帖子
        self.driver.find_element(By.CSS_SELECTOR, "#article_details_reply > div.editormd-toolbar > div > ul > li:nth-child(20) > a > i").click()
        time.sleep(0.5)
        self.driver.find_element(By.CSS_SELECTOR, "#details_btn_article_reply").click()
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(0.5)
        ForumDriver.getScreenShot()
        # 查看作者/回复者头像昵称
        self.driver.find_element(By.CSS_SELECTOR, "#article_details_author_avatar")
        self.driver.find_element(By.CSS_SELECTOR, "#article_details_author_name")
        self.driver.find_element(By.CSS_SELECTOR, "#details_reply_area > div:nth-child(1) > div.col-3.card > div > span")
        self.driver.find_element(By.CSS_SELECTOR, "#details_reply_area > div:nth-child(1) > div.col-3.card > div > h3 > a")
# tests/ForumEdit.py

import time

from selenium.webdriver.common.by import By

from common.Utils import ForumDriver


class ForumEdit:
    driver = ""
    url = ""

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

    def ForumFailEdit(self):
        # 点击发布按钮并跳转到帖子发布页面
        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_title").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_title").send_keys("自动化测试")
        # 保证内容为空
        self.driver.find_element(By.CSS_SELECTOR, "#edit-article > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click()
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(0.5)
        ForumDriver.getScreenShot()
        # 输入内容,点击发布按钮
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_title").clear()
        self.driver.find_element(By.CSS_SELECTOR,"#edit-article > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click()
        self.driver.find_element(By.CSS_SELECTOR,"#edit-article > div.editormd-toolbar > div > ul > li:nth-child(20) > a > i").click()
        time.sleep(0.5)
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(0.5)
        ForumDriver.getScreenShot()
        # 输入标题和内容,不点击发布按钮
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_title").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_title").send_keys("自动化测试")
        self.driver.find_element(By.CSS_SELECTOR,"#edit-article > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click()
        self.driver.find_element(By.CSS_SELECTOR,"#edit-article > div.editormd-toolbar > div > ul > li:nth-child(20) > a > i").click()
        time.sleep(0.5)
        text = self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-header.d-print-none > div > div > div > h2").text
        assert text == "发新贴"
        ForumDriver.getScreenShot()

    def ForumSucEdit(self):
        # 点击发布按钮并跳转到帖子发布页面
        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 > option:nth-child(2)").click()
        # 输入标题
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_title").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_title").send_keys("自动化测试")
        # 输入内容
        self.driver.find_element(By.CSS_SELECTOR,"#edit-article > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click()
        self.driver.find_element(By.CSS_SELECTOR,"#edit-article > div.editormd-toolbar > div > ul > li:nth-child(20) > a > i").click()
        # 点击发布按钮
        time.sleep(0.5)
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")
        title = self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        assert title == "自动化测试"
        ForumDriver.getScreenShot()
# tests/ForumPersonalCenter.py

import datetime
import time

from selenium.webdriver.common.by import By

from common.Utils import ForumDriver


class ForumPersonalCenter:
    driver = ""
    url = ""

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

    def FailModify(self):
        # 跳转到个人中心
        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.dropdown > a").click()
        self.driver.find_element(By.CSS_SELECTOR,"#index_user_settings").click()
        # 和原来的一样
        self.driver.find_element(By.CSS_SELECTOR,"#setting_submit_nickname").click()
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div:nth-child(1) > span.close-jq-toast-single").click()
        self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_email").click()
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div:nth-child(1) > span.close-jq-toast-single").click()
        self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_phoneNum").click()
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_remark").click()
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(0.5)
        ForumDriver.getScreenShot()
        # 原密码错误
        self.driver.find_element(By.CSS_SELECTOR,"#settings_input_oldPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").send_keys("12345")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").send_keys("1234")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("1234")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(1)
        ForumDriver.getScreenShot()
        # 新原密码和确认密码不同
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").send_keys("1234")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("12345")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(1)
        ForumDriver.getScreenShot()
        # 只填写正确的原密码
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(0.5)
        ForumDriver.getScreenShot()
        # 只填写正确的新原密码
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").send_keys("1234")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(1)
        ForumDriver.getScreenShot()
        # 只填写正确的确认密码
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("1234")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(0.5)
        ForumDriver.getScreenShot()

    def SucModify(self):
        # 跳转到个人中心
        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.dropdown > a").click()
        self.driver.find_element(By.CSS_SELECTOR, "#index_user_settings").click()
        # 修改邮箱地址
        self.driver.find_element(By.CSS_SELECTOR,"#setting_input_email").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_email").send_keys(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
        self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_email").click()
        self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(1)
        ForumDriver.getScreenShot()
        # 修改电话号码
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_phoneNum").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_phoneNum").send_keys(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
        self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_phoneNum").click()
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(0.5)
        ForumDriver.getScreenShot()
        # 修改个人简介
        self.driver.find_element(By.CSS_SELECTOR, "#settings_textarea_remark").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_textarea_remark").send_keys(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_remark").click()
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")
        time.sleep(0.5)
        ForumDriver.getScreenShot()
# tests/RunTest.py

from common.Utils import ForumDriver
from tests import ForumLogin, ForumRegister, ForumHomepage, OthersForumDetail, MyForum, ForumEdit, ForumPersonalCenter

if __name__ == "__main__":
    ForumRegister.ForumRegister().RegisterFailTest()
    ForumRegister.ForumRegister().RegisterSucTest()
    ForumLogin.ForumLogin().LoginFailTest()
    ForumHomepage.ForumHomepage().ForumHomepageByNotLogin()
    ForumLogin.ForumLogin().LoginSucTest()
    ForumHomepage.ForumHomepage().ForumHomepageByLogin()
    OthersForumDetail.OthersForumDetail().OthersForumDetail()
    MyForum.MyForum().MyForum()
    ForumEdit.ForumEdit().ForumFailEdit()
    ForumEdit.ForumEdit().ForumSucEdit()
    ForumPersonalCenter.ForumPersonalCenter().FailModify()
    ForumPersonalCenter.ForumPersonalCenter().SucModify()
    ForumDriver.driver.quit()

9. bug简述

bug1:部分分类名称未显示

论坛首页登录状态(2)


bug2:帖子数量显示不正确

论坛首页登录状态(3)


bug3:在搜索框搜索后不会跳出搜索的内容

论坛首页登录状态(6)


bug4:帖子发布时间显示不正确

正常发布帖子(2)


bug5:显示的发帖数和实际发帖数不一致

bug6:注册日期错误

我的帖子页面(1)


bug7:个人中心页面修改密码时和原来的密码相同也能修改成功


bug8:个人中心页面让密码取消掩码显示不成功

10. 测试结论

通过对论坛系统的测试,测试出论坛系统在功能方面还存在8个bug需要修改;性能方面在20个线程同时不断向系统各接口发生请求时,部分接口会出现异常;在弱网环境下,页面加载变慢,但不会错误展示,建议页面在加载缓慢时加上默认提示来使用户体验更加良好;界面较为美观;布局清晰,用户易上手;可以兼容不同浏览器和不同版本;在输入密码时有掩码行为,可以很好的保护用户隐私。


网站公告

今日签到

点亮在社区的每一天
去签到