作者前言
🎂 ??????🍧🍧🍧🍧🍧🍧🍧🎂
?🎂 作者介紹: 🎂🎂
🎂 🎉🎉🎉🎉🎉🎉🎉 🎂
🎂作者id:老秦包你會, 🎂
簡單介紹:🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂
喜歡學習C語言、C++和python等編程語言,是一位愛分享的博主,有興趣的小可愛可以來互討 🎂🎂🎂🎂🎂🎂🎂🎂
🎂個人主頁::小小頁面🎂
🎂gitee頁面:秦大大🎂
🎂🎂🎂🎂🎂🎂🎂🎂
🎂 一個愛分享的小博主 歡迎小可愛們前來借鑒🎂
論壇測試報告
- **作者前言**
- 1.項目背景
- 2.項目功能
- 3. 測試內容
- 3.1 設計測試用例
- 3.2 功能測試
- 3.2.1 注冊測試
- 3.2.2登入測試
- 3.2.3 論壇首頁
- 3.2.4 發帖中心
- 3.2.5 帖子詳情頁
- 3.2.6 個人中心
- 3.2.7 私信回復
- 4.自動化測試
- 4.1測試工具
- 4.2 自動化腳本
- 4.2.1 注冊測試
- 4.2.2登入測試
- 4.2.3 論壇首頁
- 4.2.4 發帖中心
- 4.2.5 帖子詳情頁
- 4.2.6 我的帖子
- 3.2.7 私信回復
- Bug簡述
- 測試總結
- Gitee
1.項目背景
本項目是一個論壇系統,采用前后端分離的方式實現,該系統旨在為用戶提供一個基于 Web 的文章發布和討論平臺。
用戶可以進行注冊登錄、查看和修改個人信息,進行帖子的增刪改查等基礎操作。
用戶可以點贊、評論帖子,私信其他用戶,并在帖子詳情頁上查看點贊數和閱讀量等信息。
2.項目功能
注冊模塊:在本頁面中,用戶可以透過注冊獲取賬號和密碼,用于登入,注冊過程中需要用戶輸入用戶名、昵稱、密碼、等操作完成注冊。
登入模塊用戶可以通過注冊來的賬號進行登入,輸入正確的賬號和密碼進行登入,登入成功將會跳轉到論壇首頁
論壇首頁:論壇首頁包含有用戶相關顯示信息、論壇分類、帖子、帖子搜索、發布帖子等功能。當點擊相關的按鈕會進行跳轉到對應的頁面進行操作。
個人中心:主要包含有用戶的信息,可以更換用戶的頭像,進行用戶密碼的更改等功能。
帖子詳情頁:主要包含了用戶發送帖子的內容、標題、回復評價、私信用戶等功能,
發帖子中心:具備了發帖子的基本要是,發送模塊、發送內容、發送標題等相關功能
私信中心:可以回復私信等功能
3. 測試內容
3.1 設計測試用例
設計測試用例可以從功能測試、性能測試、兼容性測試、易用性測試、界面測試、安全性測試進行入手、本次測試用例主要針對的是該頁面各個模塊的功能測試,
3.2 功能測試
3.2.1 注冊測試
界面:
測試用例1: 用戶名(TestUser)、昵稱(TestUser)、密碼(123456)、確認密碼全部填寫,點擊條款
預期結果:注冊正常,可以進行登入
實際結果:注冊成功,跳轉登入界面
**測試用例2:**輸入已經注冊過的用戶名(TestUser)、昵稱(TestUser)、密碼(123456)、確認密碼全部填寫,點擊條款
預期結果:注冊失敗
實際結果:注冊失敗,右下角彈窗出用戶已存在
測試用例3:用戶名(TestUse)、昵稱(TestUser)、密碼(123456)、確認密碼全部填寫,不點擊條款
預期結果: 注冊失敗
實際結果: 無法注冊
測試用例4: 用戶名(TestUse)、昵稱(TestUser)、密碼(123456)、確認密碼全部不填寫,點擊條款
預期結果: 注冊失敗
實際結果: 無法注冊
3.2.2登入測試
界面:
測試用例1: 輸入正確的用戶名(TestUser)、密碼(123456)
預期結果:登入正常,頁面跳轉
實際結果:登入正常,頁面跳轉
測試用例2: 輸入未注冊的用戶名(TestUser1)、密碼(123456)
預期結果:不能登入正常,
實際結果:不能正常登陸, 右下角提示錯誤
測試用例3: 不輸入的用戶名(TestUser)和密碼(123456)
預期結果:不能登入正常,
實際結果:不能正常登陸, 輸入框提示錯誤。
3.2.3 論壇首頁
界面:
測試用例1:點擊不同模塊
預期結果:可以切換不同的帖子列表
實際結果:可以切換不同的帖子列表
測試用例2:點擊java模塊,點擊右上角的搜索框,輸入1。進行查找
預期結果:查找出所有的1為標題的帖子
實際結果:不能查找,然后框內容情況
測試用例3:點擊右上角的白夜模式切換
預期結果:白天、夜天模式切換正常
實際結果:白天、夜天模式切換正常,頁面顏色改變
測試用例4:點擊右上角的私信通知
預期結果:打開成功,獲取所以私信的內容
實際結果:打開成功,獲取所以私信的內容
測試用例5:點擊右上角的頭像,點擊下拉框中的個人中心
預期結果:點擊成功,跳轉到個人中心
實際結果:點擊成功,跳轉到個人中心
測試用例6:點擊右上角的頭像,點擊下拉框中的我的帖子
預期結果:點擊成功,跳轉到帖子中心
實際結果:點擊成功,跳轉到帖子中心
測試用例7:點擊帖子列表中的帖子
預期結果:點擊成功,跳轉到帖子詳情頁
實際結果:點擊成功,跳轉到帖子帖子詳情頁
測試用例8:點擊帖子列表的右上角的發帖按鈕
預期結果:點擊成功,跳轉到發帖中心
實際結果:點擊成功,跳轉到發帖中心
3.2.4 發帖中心
界面:
測試用例1: 不輸入標題,輸入內容,點擊發布帖子
預期結果:發送失敗,帖子無標題
實際結果:發帖失敗,右下角出現提示
測試用例2: 輸入標題,不輸入內容,點擊發布帖子
預期結果:發送失敗,帖子無標題
實際結果:發帖失敗,右下角出現提示
測試用例3: 輸入標題,輸入內容,點擊發布帖子
預期結果:發送成功
實際結果:發帖成功,頁面跳轉到首頁
3.2.5 帖子詳情頁
界面:
測試用例1: 點擊點贊
預期結果:點贊成功
實際結果:點贊成功、可以多次點贊,點贊數量增加
測試用例2: 點擊用戶名
預期結果:跳轉到發帖中心
實際結果:跳轉成功
測試用例3: 不輸入回復內容,點擊發送回復
預期結果:回復失敗
實際結果:回復失敗
測試用例4: 輸入回復內容,點擊發送回復
預期結果:回復成功
實際結果:回復成功,回復數量增加
測試用例5: 點擊私信按鈕, 輸入回復內容,點擊發送發送
預期結果:發送成功
實際結果:回復發送
3.2.6 個人中心
測試用例1:輸入新的昵稱進行修改
預期結果:修改成功
實際結果:修改成功
測試用例2:輸入新的郵箱進行修改
預期結果:修改成功
實際結果:修改成功
測試用例3:輸入新的手機號碼進行修改
預期結果:修改成功
實際結果:修改成功
測試用例5:不輸入的昵稱、郵箱、手機號碼,直接進行修改
預期結果:修改失敗
實際效果:修改失敗
測試用例6:輸入個人簡介內容,點擊修改
預期結果:修改成功
實際效果:修改成功
3.2.7 私信回復
測試用例1: 輸入回復內容,點擊發送
預期結果:回復成功
實際結果:回復成功
測試用例: 不輸入回復內容,點擊發送
預期結果:回復失敗
實際結果:回復失敗
4.自動化測試
4.1測試工具
系統: windows10
瀏覽器 Chrome 135.0.7049.95(正式版本) (64 位)
語言:python
模塊:selenium4.0
軟件: pyCharm2024.3.5
4.2 自動化腳本
4.2.1 注冊測試
import datetime
import timefrom selenium.webdriver.common.by import Byfrom Common.Utials import Forumclass ForumRegisiter():driver = ""url = ""user = datetime.datetime.now().strftime('%Y-%m-%d-%H%M%S')user1="TestUser"def __init__(self):self.driver = Forum.driverself.url = Forum.urldef go_Register(self):time.sleep(1)Forum.find_element(By.CSS_SELECTOR,"body > div > div > div > div:nth-child(1) > div > div.text-center.text-muted.mt-3 > a").click()def informetionRegister(self,user , nane, password, password2, click_1):Forum.find_element(By.CSS_SELECTOR,"#username").send_keys(user)Forum.find_element(By.CSS_SELECTOR,"#nickname").send_keys(nane)Forum.find_element(By.CSS_SELECTOR,"#password").send_keys(password)Forum.find_element(By.CSS_SELECTOR,"#passwordRepeat").send_keys(password2)if click_1:ele = Forum.find_element(By.CSS_SELECTOR,"#policy")if(ele.get_attribute("class") !="form-check-input is-valid"):ele.click()else:ele = Forum.find_element(By.CSS_SELECTOR, "#policy")if (ele.get_attribute("class") != "form-check-input is-invalid"):ele.click()Forum.imagetSave()#注冊按鈕Forum.find_element(By.CSS_SELECTOR, "#submit").click()self.user1 = user
forumRegiter = ForumRegisiter()
4.2.2登入測試
import timefrom selenium.webdriver.common.by import Byfrom Common.Utials import Forum
from Test.ForumRegisiter import forumRegiterclass ForumLogin:def __init__(self,):self.driver = Forum.driverself.url = Forum.urldef login(self, user =forumRegiter.user1, password ="123456"):Forum.find_element(By.CSS_SELECTOR,"#username").send_keys(user)Forum.find_element(By.CSS_SELECTOR,"#password").send_keys(password)Forum.find_element(By.CSS_SELECTOR,"#submit").click()print("登入執行完成")
foumLogin = ForumLogin()
4.2.3 論壇首頁
import timeimport pyautogui
from selenium.webdriver.common.by import Byfrom Common.Utials import Forum
from Test.ForumRegisiter import forumRegiter
from Test.PostDetailsPase import postDetailsPaseclass ForumFristPase():driver = ""url = ""read = ""likes = ""comment = ""title = ""date = ""def __init__(self):self.driver = Forum.driverself.url = Forum.urldef forumList(self,name="Java"):time.sleep(2)list_1 = Forum.find_elements(By.XPATH,'//span[@class="nav-link-title"]')#//*[@id="topBoardList"]for i in list_1:print(i.text)if(i.text == name):i.click()print(name, "點擊成功")time.sleep(5)return Noneprint("點擊失敗")def clickPost(self, mode = "首頁"):index = 0# 獲取帖子標題鏈接self.title = Forum.find_element(By.XPATH,'//*[@id="artical-items-body"]/div[2]/div/div[2]/div[1]/a').text#獲取帖子的昵稱和發布時間 //*[@id="artical-items-body"]/div[1]/div# 發布的時間self.date = Forum.find_element(By.CSS_SELECTOR, "#artical-items-body > div:nth-child(1) > div > div.col > div.text-muted.mt-2 > div > div.col > ul > li:nth-child(2)").text# 閱讀量self.read = Forum.find_element(By.CSS_SELECTOR, "#artical-items-body > div:nth-child(1) > div > div.col > div.text-muted.mt-2 > div > div.col-auto.d-none.d-md-inline > ul > li:nth-child(1)").text# 點贊量self.likes = Forum.find_element(By.CSS_SELECTOR, "#artical-items-body > div:nth-child(1) > div > div.col > div.text-muted.mt-2 > div > div.col-auto.d-none.d-md-inline > ul > li:nth-child(2)").text# 評論量self.comment = Forum.find_element(By.CSS_SELECTOR, "#artical-items-body > div:nth-child(1) > div > div.col > div.text-muted.mt-2 > div > div.col-auto.d-none.d-md-inline > ul > li:nth-child(3)").textname = Forum.find_element(By.XPATH,'//*[@id="artical-items-body"]/div[1]/div/div[2]/div[2]/div/div[1]/ul/li[1]').textprint("昵稱:", name)print("發布時間:", self.date)print("閱讀量:", self.read)print("點贊量:", self.likes)print("點贊量:", self.comment)# # 進入詳情頁Forum.find_element(By.XPATH,'//*[@id="artical-items-body"]/div[2]/div/div[2]/div[1]/a').click()# #檢查是否符合postDetailsPase.start()postDetailsPase.informationPost(int(self.read),self.likes,self.comment,self.title,self.date)# #私信發送# postDetailsPase.clickPrivate(forumRegiter.user1,"11111")# # 點贊# postDetailsPase.clikeLike()# # 回復postDetailsPase.clikeComment()# #換到對應模塊# self.forumList(mode)## time.sleep(2)return Nonedef inputBox(self, content):Forum.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(content)pyautogui.press('enter')Forum.imagetSave()return None# 帖子發送def postSend(self):Forum.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.forumList("首頁")print("點擊帖子發送")time.sleep(10)Forum.imagetSave()return None# 模式切換def modeSwitch(self):try:Forum.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").click()except:Forum.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").click()Forum.imagetSave()return None#私信箱def privateMailbox(self):Forum.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").click()time.sleep(1)Forum.imagetSave()Forum.find_element(By.CSS_SELECTOR, "#index_message_offcanvasEnd > div.offcanvas-header > button").click()return None#我的帖子def mePost(self):time.sleep(2)Forum.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()Forum.find_element(By.CSS_SELECTOR,"#index_user_profile").click()self.forumList("首頁")Forum.imagetSave()return None#個人中心def personalCent(self):Forum.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()Forum.find_element(By.CSS_SELECTOR, "#index_user_settings").click()Forum.imagetSave()self.forumList("首頁")return None
forumfristPase = ForumFristPase()
4.2.4 發帖中心
import timefrom selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Selectfrom Common.Utials import Forumclass PostSend:driver = ""url = ""def __init__(self):self.driver = Forum.driverself.url = Forum.urlForum.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()print("點擊帖子發送")def contentInput(self, model = 1,title = "111",content = "1111"):select = Select(Forum.find_element(By.CSS_SELECTOR,"#article_post_borad"))select.select_by_index(model)Forum.find_element(By.CSS_SELECTOR,"#article_post_title").send_keys(title)Forum.find_element(By.CSS_SELECTOR,"#edit-article > div.editormd-toolbar > div > ul > li:nth-child(4) > a").click()self.driver.execute_script("arguments[0].click();", Forum.find_element(By.XPATH,'//*[@id="article_post_submit"]'))print("發送帖子")
4.2.5 帖子詳情頁
import timefrom selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Selectfrom Common.Utials import Forum
# from Test.ForumFristPase import forumfristPase
from Test.ForumRegisiter import forumRegiter# 前臺需要進入帖子詳情頁
class PostDetailsPase:driver = ""url = ""def __init__(self):self.driver = Forum.driverself.url = Forum.urldef start(self):time.sleep(2)# 標題self.title = Forum.find_element(By.CSS_SELECTOR, "#details_article_title").text# 發布的時間self.date = Forum.find_element(By.CSS_SELECTOR, "#details_article_createTime").text# 閱讀量self.read = Forum.find_element(By.CSS_SELECTOR, "#details_article_visitCount").text# 點贊量self.likes = Forum.find_element(By.CSS_SELECTOR, "#details_article_likeCount").text# 評論量self.comment = Forum.find_element(By.CSS_SELECTOR, "#details_article_replyCount").text# 進入了帖子詳情頁# 判斷def informationPost(self,read , likes, comment,title,date):#標題if(self.title != title):print("標題有誤")return False# 發布的時間if (self.date != date):print("發布時間有誤")return False#閱讀量if ( int(self.read)-1 != int(read)):print("閱讀量有誤")return False# 點贊量if ( self.likes != likes):print("點贊量有誤")return False# 點贊量if ( self.self.comment != likes):print("點贊量有誤")return Falsereturn True# 點擊私信發送def clickPrivate(self, name, content):#非本人if(Forum.find_element(By.CSS_SELECTOR,"#article_details_author_name").text != name):# 點擊私信Forum.find_element(By.CSS_SELECTOR,"#btn_details_send_message").click()#發送私信Forum.find_element(By.CSS_SELECTOR,"#index_message_receive_content").send_keys(content)Forum.find_element(By.CSS_SELECTOR, "#btn_index_send_message").click()Forum.imagetSave()Forum.find_element(By.CSS_SELECTOR,"#index_message_modal > div > div > div.modal-header > button").click()print("私信發送完畢")#點贊def clikeLike(self):time.sleep(2)Forum.find_element(By.CSS_SELECTOR,"#details_btn_like_count").click()time.sleep(2)if(int(Forum.find_element(By.CSS_SELECTOR, "#details_article_likeCount").text) ==int(self.likes)+1):self.likes = Forum.find_element(By.CSS_SELECTOR, "#details_article_likeCount").textprint("點贊成功")else:print("點贊失敗")#回復加發私信def clikeComment(self):#輸入內容self.driver.execute_script("arguments[0].click();",Forum.find_element(By.CSS_SELECTOR,"#article_details_reply > div.editormd-toolbar > div > ul > li:nth-child(14) > a"))# 發送self.driver.execute_script("arguments[0].click();",Forum.find_element(By.XPATH, '//*[@id="details_btn_article_reply"]'))print("發送運行成功")time.sleep(6)# 私信發送try:name = Forum.find_element(By.XPATH,'//*[@id="details_reply_area"]/div[1]/div[1]/div/h3/a').textprint(name)if(name != forumRegiter.user1):#發私信Forum.find_element(By.CSS_SELECTOR,"#details_reply_area > div > div.col-3.card > div > div > a").click()Forum.find_element(By.CSS_SELECTOR, "#index_message_receive_content").send_keys("11111")Forum.find_element(By.CSS_SELECTOR, "#btn_index_send_message").click()Forum.imagetSave()Forum.find_element(By.CSS_SELECTOR, "#index_message_modal > div > div > div.modal-header > button").click()except:pass# 獲取評論用戶Forum.find_element(By.XPATH, '//div[@id="details_reply_area"]//a[@class="a_reply_user_profile"]').click()time.sleep(2)# forumfristPase.forumList("首頁")
postDetailsPase = PostDetailsPase()
4.2.6 我的帖子
import timefrom selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Selectfrom Common.Utials import Forum
from Test.ForumFristPase import forumfristPase
from Test.ForumRegisiter import forumRegiter
class Mepost():driver = ""url = ""def __init__(self):self.driver = Forum.driverself.url = Forum.urldef post(self):forumfristPase.forumList("首頁")time.sleep(2)Forum.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()Forum.find_element(By.CSS_SELECTOR, "#index_user_profile").click()# 獲取當前的帖子數量time.sleep(2)post_1 = int(Forum.find_element(By.CSS_SELECTOR,"#profile_articleCount").text)#實際的帖子數量lis_1 = Forum.find_elements(By.XPATH, '//*[@id="profile_article_body"]/li')for i in lis_1:post_1-=1if(post_1 < 0):print("帖子數量有誤")return None
3.2.7 私信回復
import timefrom selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Selectfrom Common.Utials import Forumclass ReplyPrivate:driver = ""url = ""def __init__(self):self.driver = Forum.driverself.url = Forum.urldef Reply(self,content = "11111"):time.sleep(1)Forum.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").click()time.sleep(1)Forum.imagetSave()# 獲取所有的私信i= Forum.find_element(By.XPATH,'//div[@id="index_div_message_list"]/div//a[@class="text-body d-block index_message_title"]')print(i.get_attribute("href"))time.sleep(1)self.driver.execute_script("arguments[0].click();", i)time.sleep(1)# 回復self.driver.execute_script("arguments[0].click();",Forum.find_element(By.CSS_SELECTOR, "#btn_index_message_reply"))Forum.find_element(By.CSS_SELECTOR, "#index_message_reply_receive_content").send_keys(content)Forum.find_element(By.CSS_SELECTOR, "#btn_index_send_message_reply").click()try:Forum.find_element(By.CSS_SELECTOR, "#index_message_offcanvasEnd > div.offcanvas-header > button").click()time.sleep(12)except:passForum.imagetSave()
Bug簡述
bug1:
版本 135.0.7049.96(正式版本) (64 位)
環境:Windons10
步驟:進入論壇主頁,點擊模塊
預期結果:模塊信息正常,功能正常切換
實際結果:模塊信息存在缺陷,功能正常切換
Bug2
版本 135.0.7049.96(正式版本) (64 位)
環境:Windons10
步驟:進入論壇主頁,點擊右上角搜索框,輸入內容
預期結果:搜索正常,功能正常切換
實際結果:搜索不成功,功能不正常
Bug3:
版本 135.0.7049.96(正式版本) (64 位)
環境:Windons10
步驟:進入論壇主頁,點擊頭像,點擊個人主頁,更換頭像,
預期結果:更換成功
實際結果:更換失敗
Bug4
版本 135.0.7049.96(正式版本) (64 位)
環境:Windons10
步驟:進入論壇主頁,點擊帖子列表的帖子,跳轉頁面, 點擊點贊按鈕,
預期結果:每個用戶只能點贊一次
實際結果:可以無限點贊
Bug5
版本 135.0.7049.96(正式版本) (64 位)
環境:Windons10
步驟:進入論壇主頁,點擊帖子列表的自己帖子,跳轉頁面, 進帖子刪除或者修改
預期結果:可以刪除或者修改
實際結果:個人帖子無刪除和修改按鈕
測試總結
本次測試覆蓋了注冊、登入、論壇主頁面、個人中心、帖子詳情頁、私信回復等相關模塊功能的測試。從中總結如下:
- 功能測試:部分模塊存在功能未完善或者部分完善的狀態,嚴重影響軟件使用
- 界面測試:測試過程中,部分模塊存在數值不準確,界面顯示
- 易用性測試:測試過程中,存在較大問題,點擊返回頁面,直接跳轉到登入界面,以及注冊沒有注冊成功標識等
結論:基本功能大部分可以使用、用戶體驗感較差,缺失功能的模塊應該增加修復速度。進一步完善。
Gitee
論壇測試腳本