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

博客系统UI自动化测试报告

博客系统UI自动化测试

  • 一,报告概述
    • 1.项目背景
    • 2.测试目的
    • 3.测试环境
  • 二,测试用例
  • 三,手动测试
    • 1.登录页面功能
    • 2.系统首页功能
      • 1)个人信息页面功能
      • 2) 博客列表页面功能
      • 3) 主页页面功能
      • 4)写博客页面功能
      • 5)注销页面功能
  • 四,兼容性测试
  • 五,自动化测试
    • 1.驱动类(Untils.py)
    • 2.登录页面测试类(BlogLoginTest.py)
    • 3.系统首页测试类(BlogListTest.py)
    • 4.博客编辑页面测试类(BlogEditTest.py)
  • 六,BUG描述
  • 七,测试总结

一,报告概述

1.项目背景

博客系统是一款基于Web的在线测评平台,主要用于:创建和集中管理用户的技术博客。该系统面向全体技术人员,提供博客创建,编写,发布,保存的全流程解决方案。

2.测试目的

  • 功能验证:
    ①确保所有核心功能符合需求规格说明书要求
    ②验证用户注册/登录流程的正确性
    ③确认博客创建、编辑、发布的完整流程
    ④检查博客管理功能完整性
    ⑤验证博客管理功能的可用性
  • 用户体验优化
    ①评估界面布局的合理性和易用性
    ②测试导航逻辑是否符合用户习惯
    ③验证错误提示信息的清晰度
    ④检查响应式设计在不同设备上的表现
  • 系统稳定性保障
    ①评估系统在高并发场景下的稳定性
    ②测试长时间运行的性能表现
    ③验证异常情况(网络中断、服务器错误)下的系统行为
    ④检查数据一致性和完整性
  • 安全性加固
    ①防止未授权访问和数据泄露
    ②验证用户认证和授权机制
    ③测试SQL注入、XSS等常见Web攻击防护
    ④检查敏感数据加密存储和传输
  • 兼容性确认
    ①确保主流浏览器兼容性
    ②验证不同操作系统下的运行表现
    ③测试多种设备类型和分辨率的适配情况

3.测试环境

  • 操作系统:Windows 11 / Windows 10
  • 浏览器:Chrome、Edge
  • 测试工具:Selenium、Pycharm

二,测试用例

在这里插入图片描述

三,手动测试

1.登录页面功能

测试场景一:输入正确用户名和密码点击登录
预期结果:登录成功,直接跳转到博客系统首页
在这里插入图片描述

测试场景二:输入错误的用户名和密码点击登录
预期结果:提示错误的用户名和密码
在这里插入图片描述

测试场景三:输入用户名但不输入密码点击登录
预期结果:账号或密码不能为空
在这里插入图片描述

测试场景四:不输入用户名但输入密码点击登录
预期结果:提示账号或密码不能为空
在这里插入图片描述

测试场景四:输入正确的用户名和输入错误的密码
预期结果:密码错误
在这里插入图片描述

测试场景五:输入错误的用户名和输入正确的密码
预期结果:提示用户名不存在

在这里插入图片描述

2.系统首页功能

1)个人信息页面功能

测试场景一:测试昵称是否正确
预期结果:能正确打印昵称
在这里插入图片描述
测试场景二:点击“Github地址“按钮
预期场景:跳转到GitHub个人页面
在这里插入图片描述
测试场景三:测试文章篇数是否正确
预期结果:能正确显示文章篇数
在这里插入图片描述
测试场景四:测试分类是否正确
预期结果:能正确显示文章分类数

在这里插入图片描述

2) 博客列表页面功能

测试场景一:点击”查看全文“按钮
预期场景:进入博客详情页

在这里插入图片描述

3) 主页页面功能

测试场景一:点击”主页“按钮
预期场景:进入博客主页
在这里插入图片描述

4)写博客页面功能

测试场景一:点击“写博客”按钮
预期场景:进入写博客界面
在这里插入图片描述

测试场景二:进入写博客界面后,编写博客,测试标题按钮能否写标题
预期场景:标题按钮可以写标题
在这里插入图片描述

测试场景三:点击“发布文章”按钮
预期场景:博客文章成功发送
在这里插入图片描述

5)注销页面功能

测试场景一:点击“注销”按钮
预期场景:下次登录时,无此注销的用户
在这里插入图片描述

在这里插入图片描述

四,兼容性测试

测试场景一:在Chrome浏览器下进入博客系统
预期结果:无异常且一切布局显示功能等与其一致
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

测试场景二:在Edge浏览器下进入博客系统
预期结果:无异常且一切布局显示功能等与其一致
在这里插入图片描述
1
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

测试场景三:在IE浏览器下进入博客系统
预期结果:无异常且一切布局显示结果等与其一致
在这里插入图片描述
1
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

五,自动化测试

在这里插入图片描述

1.驱动类(Untils.py)

#创建浏览器对象,请求url访问对应的页面
import datetime
import os
import sysfrom selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Optionsclass Driver:#创建驱动对象driver = ""def __init__(self):chrome_options = Options()# 禁用密码保存提示chrome_options.add_experimental_option("prefs", {"credentials_enable_service": False,"profile.password_manager_enabled": False})self.driver = webdriver.Chrome(service = Service(ChromeDriverManager().install()),options=webdriver.ChromeOptions())def getScreenShot(self):#创建屏幕截图#根据每天的日期进行分类,当天运行的自动化图片放在当天的文件夹下#图片名称优化:被执行的方法名+2025-09-20-152364.png#生成文件夹的名称dirname = datetime.datetime.now().strftime("%Y-%m-%d")#判断dirname文件夹是否已经存在,若不存在则创建文件夹if not os.path.exists("../images/"+dirname):os.makedirs("../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()

2.登录页面测试类(BlogLoginTest.py)

#测试博客登录页面
import timefrom selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECfrom common.Untils import BlogDriver
class BlogLoginTest:url = ""driver = ""def __init__(self):self.url = "http://8.137.19.140:9090/blog_login.html"self.driver = BlogDriver.driverself.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("zhangsan")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()BlogDriver.getScreenShot()WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "body > div.container > div.left > div > h3")))#验证,能够找到博客首页用户的昵称,表示登录成功self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.left > div > h3")############################################################################################################异常登录的测试用例def LoginFailTest2(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("zhangsa")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("12345")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()#添加屏幕截图BlogDriver.getScreenShot()# 出现弹窗alert = WebDriverWait(self.driver, 10).until(EC.alert_is_present())alert = self.driver.switch_to.alertalert.accept()###############################################################################################输入用户名但不输入密码点击登录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("zhangsa")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()alert = WebDriverWait(self.driver, 10).until(EC.alert_is_present())# 出现弹窗alert = self.driver.switch_to.alertalert.accept()##################################################################################################不输入用户名但输入密码点击登录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("123456")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()alert = WebDriverWait(self.driver, 10).until(EC.alert_is_present())# 出现弹窗alert = self.driver.switch_to.alertalert.accept()######################################################################################################输入正确的用户名和输入错误的密码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("12345")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()alert = WebDriverWait(self.driver, 10).until(EC.alert_is_present())# 出现弹窗alert = self.driver.switch_to.alertalert.accept()################################################################################################ 输入错误的用户名和输入正确的密码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("zhangsa")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()alert = WebDriverWait(self.driver, 20).until(EC.alert_is_present())# 出现弹窗alert = self.driver.switch_to.alertalert.accept()#####################################################################################################Login = BlogLoginTest()
Login.LoginSucTest()
Login.LoginFailTest2()

3.系统首页测试类(BlogListTest.py)

#博客首页测试用例
import time
import unittestfrom selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWaitfrom common.Untils import BlogDriverclass BlogListTest:url = ""driver = ""def __init__(self):self.url = "http://8.137.19.140:9090/blog_list.html"self.driver = BlogDriver.driverself.driver.get(self.url)
####################################################################################################################测试首页(登录情况下)#测试博客列表def ListByLogin(self):#测试博客标题是否存在self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > div.title")#测试博客内容是否存在self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > div.desc")#测试按钮是否存在self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > a")#测试"阅读全文"是否可以被点击进入跳转页面self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > a").click()BlogDriver.getScreenShot()self.driver.back()
##################################################################################################################################测试个人信息列表#测试昵称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(4) > span:nth-child(1)")#测试分类self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > div:nth-child(4) > span:nth-child(2)")#测试点击“GitHup"进入跳转页面self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > a").click()BlogDriver.getScreenShot()####################################################################################################################################未登录状态下def ListByLoginFail(self):self.driver.get(self.url)time.sleep(3)

4.博客编辑页面测试类(BlogEditTest.py)

import timefrom selenium.webdriver.common.by import Byfrom common.Untils import BlogDriver#博客编辑页面
class BlogEditTest:url = ""driver = ""def __init__(self):self.driver = BlogDriver.driverself.url = "http://8.137.19.140:9090/blog_edit.html"self.driver.get(self.url)#测试博客的编辑页面def EditBlogSuc(self):self.driver.get(self.url)self.driver.implicitly_wait(10)#找到编辑区域(编辑区域不可以操作,可以通过点击菜单栏)self.driver.find_element(By.CSS_SELECTOR,"#editor > div.CodeMirror.cm-s-default.CodeMirror-wrap > div.CodeMirror-scroll")#测试发布博客self.driver.find_element(By.CSS_SELECTOR,"#title").send_keys("hh")self.driver.find_element(By.CSS_SELECTOR,"#submit").click()time.sleep(3)#屏幕截图BlogDriver.getScreenShot()

六,BUG描述

1.博客系统无注册功能,不符合测试说明书
在这里插入图片描述

2.“登录”写成“登陆”
在这里插入图片描述

3.用户未登录状态下可以进入博客主页

在这里插入图片描述

4.文章篇数对不上(实际文章篇数超过两篇,却未更新)

在这里插入图片描述

七,测试总结

1.本次项目测试发现了4个bug,有3个严重级别的Bug,有1个一般级别的bug。
在这里插入图片描述
2.遗留问题
1)编辑博客页插入makedown插件,目前无法测试。
2)低优先级Bug,由于还未上报,推迟到下一版主进行修复。

……(性能测试目前不测)

http://www.dtcms.com/a/393252.html

相关文章:

  • 大语言模型 LLM 通过 Excel 知识库 增强日志分析,根因分析能力的技术方案(6):vLLM 为什么能够成为企业级推理事实上的标准?
  • Redis最佳实践——秒杀系统设计详解
  • 数字孪生能做什么?
  • 每天学习一个统计检验方法--协方差分析 (ANCOVA)(以噩梦障碍中的心跳诱发电位研究为例)
  • 2025年CSP-J初赛真题及答案解析
  • OpenHarmony电量与LED灯颜色定制开发
  • OpenHarmony 显示Display驱动全栈解析:DisplayLayer + Gralloc + Gfx 三位一体,打造高性能图形底座
  • 诊断中的一些复位跳转
  • Python爬虫实战:临近双节,构建携程网最新特价机票数据采集与推荐系统
  • 容器主机名设置在云服务器多容器环境的配置流程
  • UE5 socket通信
  • 如何用kimi写一个最小pdf查看软件
  • DTS和PTS
  • 【开题答辩实录分享】以《“平安行”驾校信息管理系统的设计与实现》为例进行答辩实录分享
  • Modbus RTU/TCP转EtherNet/IP网关配置:西门子PLC控制伦茨变频器
  • GEO完全指南:AI时代内容优化的新范式
  • 02-安装DRF框架
  • 浅谈矩阵在机器学习线性回归算法中的数学推导
  • Linux 系统编程中的Redis
  • 【OpenGL】绘制彩色立方体
  • 21.继承与混入
  • Python 开发!ImprovePdf 用算法提升PDF清晰度,免费开源工具
  • P1879 [USACO06NOV] Corn Fields G-提高+/省选-
  • 二分答案:跳石头
  • 注解学习,简单测试框架
  • python 自定义装饰器 + 框架
  • 【星闪】Hi2821 | KEYSCAN矩阵按键扫描
  • ​​[硬件电路-282]:PWM信号通用解读、应用场景及在步进电机中的应用详解
  • 给链表装上“后视镜”:深入理解双向链表的自由与高效
  • Off-Grid Direction of Arrival Estimation Using Sparse Bayesian Inference (II)