博客系统测试报告
文章目录
- 目录
- 1. 项目背景
- 2. 项目简介
- 3. 测试工具
- 4. 测试用例
- 5. 功能测试
- 6. 性能测试
- 7. 弱网测试
- 8. 自动化测试
- 9. bug简述
- 10. 测试结论
目录
- 项目背景
- 项目简介
- 测试工具
- 测试用例
- 功能测试
- 性能测试
- 弱网测试
- 自动化测试
- bug简述
- 测试结论
1. 项目背景
为了将平时自己写的笔记、知识点进行记录和保存,从而编写了一个个人博客系统,这样就可以将个人笔记保存在网上,便于随时进行查看和复习。
2. 项目简介
博客系统共分为四个页面:博客登录页、博客列表页、博客详情页、博客编辑页。
在博客登录页,可以通过输入正确的账号和密码进行登录。
在博客列表页,我们可以查看用户信息和发布的博客。
在博客详情页,我们可以查看博客标题、博客发布时间、博客内容、编辑按钮、删除按钮。
在博客编辑页,我们可以通过填写标题和内容并点击发布按钮来发布博客。
3. 测试工具
在进行性能测试时,我们会用到jmeter工具;在进行弱网测试时,我们会用到fiddler工具;在进行自动化测试时,我们会用到PyCharm以及selenium库来编写自动化脚本。
4. 测试用例
5. 功能测试
6. 性能测试
7. 弱网测试
在弱网情况下,博客列表页加载会变慢,先加载出用户信息,再加载出博客列表,但页面并不会出现错误。
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(2) 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) BlogDriver = Driver()
# tests/BlogLogin.py 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 BlogDriver class BlogLogin: url = "" driver = "" def __init__(self): self.url = "http://8.137.19.140:9090/blog_login.html" self.driver = BlogDriver.driver 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("lisi") 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("博客列表页")) BlogDriver.getScreenShot() self.driver.back() 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("lisi") 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.alert_is_present()) self.driver.switch_to.alert.accept() BlogDriver.getScreenShot() 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("li") 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.alert_is_present()) self.driver.switch_to.alert.accept() BlogDriver.getScreenShot() 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("li") 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.alert_is_present()) self.driver.switch_to.alert.accept() BlogDriver.getScreenShot()
# tests/BlogList.py 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 BlogDriver class BlogList: url = "" driver = "" def __init__(self): self.url = "http://8.137.19.140:9090/blog_list.html" self.driver = BlogDriver.driver self.driver.get(self.url) def ListTestByLogin(self): # 检查头像是否存在 self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > img") # 检查昵称是否存在 self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > h3") # 检查文章数量是否存在 self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.left > div > div:nth-child(5) > span:nth-child(1)") # 检查分类数量是否存在 self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.left > div > div:nth-child(5) > span:nth-child(2)") # 检查博客标题是否存在 self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div > div.title") # 检查博客发布时间是否存在 self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div > div.date") # 检查博客内容是否存在 self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div > div.desc") # 检查查看全文按钮是否存在 self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div > a") BlogDriver.getScreenShot() def ListTestByNotLogin(self): WebDriverWait(self.driver,3).until(EC.title_is("博客登陆页")) BlogDriver.getScreenShot()
# tests/BlogDetail.py from common.Utils import BlogDriver class BlogDetail: url = "" driver = "" def __init__(self): self.url = "http://8.137.19.140:9090/blog_detail.html?blogId=46533" self.driver = BlogDriver.driver self.driver.get(self.url) def DetailTestByLogin(self): # 检查博客标题是否存在 self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div > div.title") # 检查博客发表时间是否存在 self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div > div.date") # 检查博客内容是否存在 self.driver.find_element(By.CSS_SELECTOR,"#h2-u5728u8FD9u91CCu5199u4E0Bu4E00u7BC7u535Au5BA2") # 检查博客编辑按钮是否存在 self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div > div.operating > button:nth-child(1)") # 检查博客删除按钮是否存在 self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div > div.operating > button:nth-child(2)") BlogDriver.getScreenShot() def DetailTestByNotLogin(self): WebDriverWait(self.driver,3).until(EC.title_is("博客登陆页")) BlogDriver.getScreenShot()
# tests/BlogEdit.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 BlogDriver class BlogEdit: url = "" driver = "" def __init__(self): self.url = "http://8.137.19.140:9090/blog_edit.html" self.driver = BlogDriver.driver self.driver.get(self.url) def EditSucTestByLogin(self): self.driver.get("http://8.137.19.140:9090/blog_list.html") # 计算博客数量 elementsbegin = self.driver.find_elements(By.CSS_SELECTOR,"body > div.container > div.right > div") countbegin = len(elementsbegin) # 返回博客编辑页 self.driver.back() # 清空标题 self.driver.find_element(By.CSS_SELECTOR,"#title").clear() # 填写标题 self.driver.find_element(By.CSS_SELECTOR,"#title").send_keys("自动化测试"+datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S")) # 清空内容 self.driver.find_element(By.CSS_SELECTOR,"#editor > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click() # 填写内容 self.driver.find_element(By.CSS_SELECTOR,"#editor > div.editormd-toolbar > div > ul > li:nth-child(20) > a > i").click() # 点击发布按钮 self.driver.find_element(By.CSS_SELECTOR,"#submit").click() # 计算博客数量 elementsend = self.driver.find_elements(By.CSS_SELECTOR, "body > div.container > div.right > div") countend = len(elementsend) assert countbegin == countend - 1 BlogDriver.getScreenShot() # 返回博客编辑页 self.driver.back() def EditFailTestByLogin(self): # 不写标题 # 清空标题 self.driver.find_element(By.CSS_SELECTOR, "#title").clear() # 清空内容 self.driver.find_element(By.CSS_SELECTOR,"#editor > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click() # 填写内容 self.driver.find_element(By.CSS_SELECTOR,"#editor > div.editormd-toolbar > div > ul > li:nth-child(20) > a > i").click() # 点击发布按钮 self.driver.find_element(By.CSS_SELECTOR, "#submit").click() # 出现弹窗,点击确定关闭弹窗 WebDriverWait(self.driver,3).until(EC.alert_is_present()) self.driver.switch_to.alert.accept() # 屏幕截图 BlogDriver.getScreenShot() # 不写内容 # 清空内容 self.driver.find_element(By.CSS_SELECTOR,"#editor > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click() # 清空标题 self.driver.find_element(By.CSS_SELECTOR, "#title").clear() # 填写标题 self.driver.find_element(By.CSS_SELECTOR, "#title").send_keys("自动化测试" + datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S")) # 点击发布按钮 time.sleep(0.5) self.driver.find_element(By.CSS_SELECTOR, "#submit").click() # 出现弹窗,点击确定关闭弹窗 WebDriverWait(self.driver, 3).until(EC.alert_is_present()) self.driver.switch_to.alert.accept() # 屏幕截图 BlogDriver.getScreenShot() # 不点击发布按钮 # 清空标题 self.driver.find_element(By.CSS_SELECTOR, "#title").clear() # 填写标题 self.driver.find_element(By.CSS_SELECTOR, "#title").send_keys("自动化测试" + datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S")) # 清空内容 self.driver.find_element(By.CSS_SELECTOR,"#editor > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click() # 填写内容 self.driver.find_element(By.CSS_SELECTOR,"#editor > div.editormd-toolbar > div > ul > li:nth-child(20) > a > i").click() # 检查是否还在当前页面 title = self.driver.title assert title == "博客编辑页" # 屏幕截图 BlogDriver.getScreenShot() def EditTestByNotLogin(self): # 清空标题 self.driver.find_element(By.CSS_SELECTOR, "#title").clear() # 填写标题 self.driver.find_element(By.CSS_SELECTOR, "#title").send_keys("自动化测试" + datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S")) # 清空内容 self.driver.find_element(By.CSS_SELECTOR,"#editor > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click() # 填写内容 self.driver.find_element(By.CSS_SELECTOR,"#editor > div.editormd-toolbar > div > ul > li:nth-child(20) > a > i").click() # 点击发布按钮 self.driver.find_element(By.CSS_SELECTOR, "#submit").click() # 检查是否返回博客登陆页 WebDriverWait(self.driver,3).until(EC.title_is("博客登陆页"))
# tests/RunTest.py from common.Utils import BlogDriver from tests import BlogLogin, BlogList, BlogDetail, BlogEdit if __name__ == "__main__": # 未登录状态 BlogLogin.BlogLogin().LoginFailTest() BlogList.BlogList().ListTestByNotLogin() BlogDetail.BlogDetail().DetailTestByNotLogin() BlogEdit.BlogEdit().EditTestByNotLogin() # 登录状态 BlogLogin.BlogLogin().LoginSucTest() BlogList.BlogList().ListTestByLogin() BlogDetail.BlogDetail().DetailTestByLogin() BlogEdit.BlogEdit().EditFailTestByLogin() BlogEdit.BlogEdit().EditSucTestByLogin() BlogDriver.driver.quit()
9. bug简述
在功能测试时发现博客列表页的文章数量显示是一个固定值,不会随着博客数量的变化而变化。
10. 测试结论
通过对博客系统进行测试,可以得出博客系统功能方面存在一个bug;在性能方面也可以达到标准,在并发较多时不会出现异常,可靠性较好,响应时间在正常范围内,吞吐量可以达标;在弱网状态下,页面也不会发生错误;界面美观;用户使用简单易上手;可以兼容不同浏览器;在输入密码时有掩码行为,可以很好的保护用户隐私。
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。