博客系统自动化测试报告

发布于:2025-06-24 ⋅ 阅读:(22) ⋅ 点赞:(0)

1. 项目背景

本项目为一套基于Web的博客系统,主要功能包括用户登录、文章首页浏览、详情查看、编辑与发布等。为了保障系统的稳定性与用户体验,开展全面的自动化功能测试,确保核心模块在常规及异常场景下均能稳定运行。

2. 测试范围

功能测试范围:

用户登录(成功/失败)

首页功能(登录状态与未登录状态)

博客详情页(查看、编辑、删除)

博客编辑页(发布文章、文章校验)

3. 需求分析

功能测试需求:

支持正确登录系统并跳转至首页

对异常登录信息进行提示(如弹窗、警告)

首页加载文章摘要及交互功能(查看全文、写博客)

博客详情页完整展示标题、时间、正文

博客编辑页支持内容输入、清空、发布及验证展示内容

4. 测试设计

4.1 功能测试设计

为确保博客系统核心模块在各种使用场景下均能正常运行,设计以下功能测试用例:

登录模块测试用例
用例编号 用例名称 输入数据 预期结果
TC01 成功登录 用户名:zhangsan,密码:123456 登录成功,进入首页,显示用户昵称
TC02 用户名错误 用户名:zhang,密码:123456 弹窗提示“用户名或密码错误”
TC03 密码错误 用户名:zhangsan,密码:123 弹窗提示“用户名或密码错误”
TC04 空密码 用户名:zhangsan,密码为空 弹窗提示“密码不能为空”或相似提示
TC05 空用户名 用户名为空,密码:123456 弹窗提示“用户名不能为空”或相似提示
TC06 用户名密码均为空 用户名为空,密码为空 弹窗提示“用户名和密码不能为空”

首页模块测试用例
用例编号 用例名称 测试条件 预期结果
TC07 登录后首页展示 已登录 页面展示文章标题、头像、写博客按钮等
TC08 登录后点击“查看全文” 已登录 跳转到博客详情页
TC09 登录后点击“写博客” 已登录 跳转到写博客页面,展示标题输入框
TC10 未登录访问首页 未登录状态 可以查看部分内容,无法进入详情和编辑页
TC11 点击注销 已登录 退出登录,返回登录页面

详情页模块测试用例
用例编号 用例名称 测试步骤 预期结果
TC12 查看博客详情 点击首页中的“查看全文” 正确展示文章标题、时间、正文等
TC13 点击编辑按钮 进入详情页后点击“编辑” 跳转到编辑页面,显示标题输入框
TC14 点击删除按钮 点击“删除”按钮 弹窗提示是否确认,点击取消则不删除

编辑页模块测试用例
用例编号 用例名称 测试输入 预期结果
TC15 发布新博客文章 标题:文章标题,内容:文章内容 回到首页,文章展示在首页列表顶部
TC16 清空内容后再输入 使用 CodeMirror 清空并重新输入 正确提交并显示新内容
TC17 标题或内容为空 空标题或空内容 提交失败,提示内容不能为空

4.2 自动化测试用例设计

技术框架与方法

基于 Python 的 Selenium WebDriver 框架。

所有用例以类与方法的方式组织,按模块拆分(Login、List、Detail、Edit)。

全局显式等待机制:WebDriverWait + expected_conditions,确保页面元素加载完成。

自定义截图工具 getScreeShot() 用于失败记录和回溯分析。

自动化用例结构设计(示例)

python

# 登录成功用例 
 def LoginSucTest(self): 
 self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#username"))).send_keys("zhangsan") 
 self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#password"))).send_keys("123456") 
 self.wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#submit"))).click() 
 self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "body > div.container > div.left > div > h3"))) 
 BlogDriver.getScreeShot()
# 编辑文章用例,操作 CodeMirror 输入内容
 editor = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#editor > div.CodeMirror")))
 self.driver.execute_script("arguments[0].CodeMirror.setValue('文章内容');", editor)
自动化模块覆盖
模块 自动化脚本类 覆盖方法
登录模块 BlogLogin LoginSucTestLoginFailTest
首页模块 BlogList BlogListLoginBlogListUnlogin
详情页模块 BlogDetail BlogDetail 方法内含多步验证
编辑页模块 BlogEdit BlogEdit 方法实现文章创建与断言

5. 自动化测试核心点总结

全流程操作自动化,覆盖登录、首页、详情、编辑页。

异常用例测试如空密码、错误密码均考虑。

动态元素(如弹窗、跳转页)通过显式等待精准控制。

使用 CodeMirror 编辑器需借助 JavaScript 脚本进行内容操作,是一项技术难点

6. Bug 管理

6.1 Bug 管理目的

Bug管理旨在系统化地记录、跟踪和分析测试过程中发现的问题,确保每一个缺陷都能被识别、评估、优先处理,并在开发修复后重新验证,保障产品质量。


6.2 Bug 记录方式

  • 所有Bug均通过测试执行过程中发现,并结合截图功能 BlogDriver.getScreeShot() 进行留档。

  • 每个Bug包含以下字段:

    • Bug编号

    • 模块

    • 描述

    • 严重程度(致命 / 高 / 中 / 低)

    • 重现步骤

    • 实际结果

    • 预期结果

    • 当前状态(未修复 / 已修复 / 待验证)

    • 截图路径(用于复查)


6.3 Bug 管理表(详细样例)

编号 模块 描述 严重程度 状态 重现步骤 实际结果 预期结果 截图路径
B01 登录模块 密码为空时点击登录无提示 已修复 1. 输入用户名;2. 留空密码;3. 点击登录 页面无反应,无弹窗提示 应弹窗提示“密码不能为空” ../images/LoginFailTest-2025-06_20-113015.png
B02 编辑模块 内容编辑器无法用 send_keys 输入 已解决 1. 登录;2. 点击“写博客”;3. 尝试输入内容 无法输入内容,send_keys 无效 可正常输入内容 ../images/BlogEdit-2025-06_20-113200.png
B03 编辑模块 截图保存路径首次运行时不存在,导致截图失败 未修复 执行截图函数 getScreeShot(),首次运行截图 程序报错:找不到路径 自动创建路径并保存截图 截图失败日志.txt(无截图)
B04 详情模块 删除文章按钮点击后未进行确认框验证逻辑测试遗漏 待验证 1. 登录;2. 进入详情页;3. 点击删除按钮 弹窗提示删除,未覆盖确认“确定”逻辑 应测试删除流程包括“确定”及实际删除行为 ../images/BlogDetail-2025-06_20-113100.png


6.4 Bug 分析与处理建议

问题分类 出现频次 原因分析 建议
表单验证类 前端未对表单输入做空值校验 补充前端输入校验与后端验证逻辑
编辑器操作类 CodeMirror 编辑器使用方式特殊,不能用传统输入方法 使用 JavaScript 注入方式操作 setValue()
弹窗未捕获 弹窗验证覆盖不全,如删除按钮未完全执行“确认”路径 增加“确定”路径用例并完善异常处理逻辑
工具类异常 截图路径未提前创建,首次运行报错 增加路径检测与自动创建逻辑

项目源码链接:https://gitee.com/Sunflowerer/test-project-code


网站公告

今日签到

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