论坛系统测试报告
文章目录
- 目录
- 1. 项目背景
- 2. 项目简介
- 3. 测试工具
- 4. 测试用例
- 5. 功能测试
- 6. 性能测试
- 7. 弱网测试
- 8. 自动化测试
- 9. bug简述
- 10. 测试结论
目录
- 项目背景
- 项目简介
- 测试工具
- 测试用例
- 功能测试
- 性能测试
- 弱网测试
- 自动化测试
- bug简述
- 测试结论
1. 项目背景
通过论坛系统,我们可以将自己的问题或者学习经验分享到上面,和他人讨论分享,从而共同进步。
2. 项目简介
论坛系统共分为以下几个页面:登录页面、注册页面、论坛首页、我的/他人文章详情页、帖子发布页、我的/他人帖子页面、个人中心页面。
登录页面:通过输入正确的账号和密码进行登录。
注册页面:按要求输入用户名、昵称、密码进行注册。
论坛首页:查看用户昵称、头像;查看首页发布的贴子并且可以跳转到帖子详情页;选择不同分类查看当前分类下的帖子;查看站内信,可以回复他人给自己发的私信;切换白天和夜间模式;搜索;可以点击发布按钮并跳转到帖子发布页面
我的文章详情页:查看作者/回复者头像昵称;点赞帖子;发布回复帖子
他人文章详情页:查看作者/回复者头像昵称;点赞帖子;发布回复帖子;给帖子作者发私信
帖子发布页:选择板块、输入标题和内容并点击发布按钮
我的帖子页面:可以查看头像、昵称、发帖数、邮箱、注册日期、发布的帖子并可以点击跳转到详情页、个人介绍
他人帖子页面:可以查看头像、昵称、发帖数、邮箱、注册日期、发布的帖子并可以点击跳转到详情页、个人介绍;可以给当前用户发私信
个人中心页面:可以修改头像、昵称、邮箱地址、电话号码、密码、个人简介
3. 测试工具
在进行性能测试时,我们会用到jmeter工具;在进行弱网测试时,我们会用到fiddler工具;在进行自动化测试时,我们会用到PyCharm以及selenium库来编写自动化脚本。
4. 测试用例
5. 功能测试
这里会展示部分功能测试的截图:
- 正常登录
- 异常登录
正常注册:
异常注册:
- 论坛首页登录状态
bug1:部分分类名称未显示
bug2:帖子数量显示不正确
bug3:在搜索框搜索后不会跳出搜索的内容
- 论坛首页未登录状态
- 我的帖子详情页面
- 他人帖子详情页面
- 正常发布帖子
bug4:帖子发布时间显示不正确
- 异常发布帖子
- 我的帖子页面
bug5:显示的发帖数和实际发帖数不一致
bug6:注册日期错误
- 他人帖子页面
- 个人中心页面
bug7:修改密码时和原来的密码相同也能修改成功
bug8:让密码取消掩码显示不成功
6. 性能测试
总结: 在较高的并发下,回复帖子接口、帖子详情页接口、论坛首页接口、点赞接口出现错误;且大部分接口响应时间较长。
7. 弱网测试
总结: 在弱网环境下,页面加载变慢,但不会错误展示;建议页面在加载缓慢时加上默认提示来使用户体验更加良好。
8. 自动化测试
# common/Utils.pyimport datetime
import os.path
import sysfrom selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManagerclass 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.pyimport timefrom selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWaitfrom common.Utils import ForumDriverclass ForumLogin:driver = ""url = ""def __init__(self):self.driver = ForumDriver.driverself.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.pyimport datetime
import timefrom selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWaitfrom common.Utils import ForumDriverclass ForumRegister:driver = ""url = ""def __init__(self):self.driver = ForumDriver.driverself.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").textassert 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").textassert text2 == "用户名不能为空"text3 = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(5) > div > div").textassert text3 == "请检查确认密码"ForumDriver.getScreenShot()
# tests/ForumHomepage.pyimport timefrom selenium.webdriver.common.by import Byfrom common.Utils import ForumDriverclass ForumHomepage:driver = ""url = ""def __init__(self):self.driver = ForumDriver.driverself.url = "http://127.0.0.1:9580/index.html"self.driver.get(self.url)def ForumHomepageByNotLogin(self):title = self.driver.titleassert 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").textassert 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.pyimport timefrom selenium.webdriver.common.by import Byfrom common.Utils import ForumDriverclass OthersForumDetail:driver = ""url = ""def __init__(self):self.driver = ForumDriver.driverself.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").textassert 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.pyimport timefrom selenium.webdriver.common.by import Byfrom common.Utils import ForumDriverclass MyForum:driver = ""url = ""def __init__(self):self.driver = ForumDriver.driverself.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").textassert 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.pyimport timefrom selenium.webdriver.common.by import Byfrom common.Utils import ForumDriverclass ForumEdit:driver = ""url = ""def __init__(self):self.driver = ForumDriver.driverself.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").textassert 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").textassert title == "自动化测试"ForumDriver.getScreenShot()
# tests/ForumPersonalCenter.pyimport datetime
import timefrom selenium.webdriver.common.by import Byfrom common.Utils import ForumDriverclass ForumPersonalCenter:driver = ""url = ""def __init__(self):self.driver = ForumDriver.driverself.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.pyfrom common.Utils import ForumDriver
from tests import ForumLogin, ForumRegister, ForumHomepage, OthersForumDetail, MyForum, ForumEdit, ForumPersonalCenterif __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:部分分类名称未显示
bug2:帖子数量显示不正确
bug3:在搜索框搜索后不会跳出搜索的内容
bug4:帖子发布时间显示不正确
bug5:显示的发帖数和实际发帖数不一致
bug6:注册日期错误
bug7:个人中心页面修改密码时和原来的密码相同也能修改成功
bug8:个人中心页面让密码取消掩码显示不成功
10. 测试结论
通过对论坛系统的测试,测试出论坛系统在功能方面还存在8个bug需要修改;性能方面在20个线程同时不断向系统各接口发生请求时,部分接口会出现异常;在弱网环境下,页面加载变慢,但不会错误展示,建议页面在加载缓慢时加上默认提示来使用户体验更加良好;界面较为美观;布局清晰,用户易上手;可以兼容不同浏览器和不同版本;在输入密码时有掩码行为,可以很好的保护用户隐私。