简易个人博客系统测试报告

📅 2026/7/9 10:56:43 👁️ 阅读次数 📝 编程学习
简易个人博客系统测试报告

目录

1项目的测试目的

2手工功能测试执行与结果

2.1设计测试用例

2.2 设计个人博客系统测试用例思维导图

2.3 登录页面测试

2.4 博客列表页面测试

2.5 博客详情页面测试(点击博客列表页的查看全文进入)

2.6 博客编辑页面测试

2.6.1 发布博客测试

2.7 博客退出功能测试

3. 使用 Java Selenium 实现 Web 自动化测试

3.1新建项目

3.2安装Maven 项目 pom.xml 里的依赖配置

3.2.1selenium-java(Selenium 自动化核心库)

3.2.2webdrivermanager(浏览器驱动自动管理工具)

3.2.3commons-io(Apache IO 工具包)

3.3创建common包并在包中创建Selenium 工具类Utils. java

3.3.1全局成员变量

3.3.2构造方法 public Utils(String url)

3.3.3浏览器创建方法 createDriver() 核心初始化

3.3.4截图方法 ScreenShot(String str)(依赖 commons-io)

java

3.3.5关闭浏览器方法 quit()

3.4入口类 RunTests

作用:

3.5创建tests包并在包中创建参照测试用例编写的Java类

3.5.1LoginPage 登录页面(继承 Utils)

3.5.1.1 构造方法

3.5.1.2 checkPageRight ():登录页面元素完整性校验

3.5.1.3LoginSus ():正常登录(正向用例)

3.5.1.4LoginFail ():错误密码登录(反向用例)

3.5.2. ListPage 博客列表页面(继承 Utils)

关键知识点

3.5.3 EditPage 新建博客编辑页面(继承 Utils)

重点细节

3.5.4 DetailPage 博客详情页面(继承 Utils)

3.5.4。1 checkDetailEdit ():详情页编辑更新博客

3.5.4.2 checkDetailDel ():详情页删除博客

整套代码完整业务流程串联

4. 自动化测试对比手工测试:特点与核心优势

4.1 Java Selenium 自动化测试特点

4.2 自动化测试核心优点

5. Java 完整自动化测试源码仓库链接


1项目的测试目的

本报告基于简易个人博客系统,整合手工功能测试与 Java+Selenium Web 自动化测试结果,记录全流程测试执行情况、缺陷统计、自动化脚本运行数据,评估系统整体质量,输出版本上线验收结论,为后续迭代回归提供自动化测试基准。

2手工功能测试执行与结果

2.1设计测试用例

设计测试用例一般从功能测试+界面测试+性能测试+兼容性测试+易用性测试+安全测试几个方面

2.2 设计个人博客系统测试用例思维导图

2.3 登录页面测试

账号数据持久化存储在 MySQL,仅输入匹配数据库的用户名密码,才能成功跳转博客列表页。

  1. 页面 UI 展示:居中登录弹窗,用户名、密码输入框、绿色提交按钮、注册跳转链接,背景图正常渲染无错位。
  2. 正向场景:账号zhangsan,密码123456
    • 预期:点击提交,自动跳转博客列表首页,左侧展示用户昵称、文章统计
    • 实际:页面正常跳转,用户信息、已发布文章列表全部加载完成
  3. 异常场景 1:正确账号,错误密码(zhangsan / 12345)
    • 预期:弹窗提示「用户密码不正确」,停留在登录页
  4. 异常场景 2:错误账号,正确密码(wangwu / 123456)
    • 预期:弹窗提示「用户不存在」
  5. 异常场景 3:错误账号 + 错误密码(wangwu / 12345)
    • 预期:弹窗提示「用户不存在」
  6. 异常场景 4:用户名 / 密码全部为空直接提交
    • 预期:前端校验弹窗「用户名不能为空」,不发起后端请求

2.4 博客列表页面测试

登录成功后自动进入列表页,页面分为左侧用户信息栏、右侧文章列表区、顶部导航栏。

  1. 左侧栏:展示用户头像、昵称、文章总数、分类数量;
  2. 右侧列表:每篇博客展示标题、发布日期、内容摘要、「查看全文」按钮;
  3. 分页控件:底部分页数字、上一页 / 下一页按钮;
  4. 校验点:已登录状态文章数量与数据库一致;未登录直接访问列表 URL 会强制跳转登录弹窗。

2.5 博客详情页面测试(点击博客列表页的查看全文进入)

点击列表「查看全文」携带 blogId 参数跳转详情页,权限区分核心:

  1. 页面元素:左侧用户信息,右侧博客标题、发布时间、完整正文;本人文章底部展示【编辑】【删除】绿色按钮;
  2. 权限校验:当前登录用户是文章作者:可读、可编辑、可删除;他人发布文章,隐藏编辑、删除按钮,仅只读;
  3. 删除交互:点击删除弹出确认弹窗,确认后删除当前文章,自动返回列表页,文章总数 - 1。

2.6 博客编辑页面测试

顶部导航栏点击「写博客」进入富文本编辑页,用于新增博客。页面组成:顶部富文本工具栏、标题输入框、正文编辑区、右上角橙色「发布文章」按钮。

2.6.1 发布博客测试

  1. 约束规则:标题、正文任意一项为空,点击发布触发前端拦截提示,不提交数据;
  2. 正向流程:填写标题 + 正文,点击发布;
    • 预期:自动跳转博客列表页,左侧文章数量 + 1,列表第一条展示最新发布博客;
    • 实际:页面正常刷新,新增文章置顶展示,数据库同步新增记录。

2.7 博客退出功能测试

页面右上角导航栏存在「注销」按钮:

  1. 点击注销,清除浏览器 session 会话;
  2. 预期效果:强制跳转登录页面,用户名、密码输入框自动清空,无缓存残留;
  3. 校验:浏览器回退按钮无法重新进入列表、详情、编辑页面,全部拦截至登录弹窗。

3. 使用 Java Selenium 实现 Web 自动化测试

搭建自动化环境

Java+selenium + webdrivermanager(驱动管理) + 浏览器

编写自动化代码

common/-Utils. java
创建驱动对象、等待、屏幕截图....

tests/-LoginPage. java- ListPage. java- DetailPage. java- EditPage. java
登录页面的所有用例 列表页面的所有用例 详情页面的所有用例 发布博客页面的所有用例

image 存放屏幕截图

3.1新建项目

首先点击文件-再点击新建-再点击项目

打开后在新建项目中编写好合适的项目名和自己想要创建的路径

构建系统选择Maven

之后点击创建就可以了

3.2安装Maven 项目 pom.xml 里的依赖配置

创建好后就到了这个界面之后需要安装Maven 项目 pom.xml 里的依赖配置

3.2.1selenium-java(Selenium 自动化核心库)

作用:Java 实现的 Web 自动化测试框架,用来操控浏览器(Chrome/Firefox/Edge 等),模拟点击、输入、页面跳转、抓取网页数据,做 UI 自动化、爬虫、功能测试。

版本 4.0.0 是 Selenium 新版,底层架构和 3.x 有较大改动。

3.2.2webdrivermanager(浏览器驱动自动管理工具)

作用:解决 Selenium 传统痛点 —— 不用手动下载、配置chromedriver/geckodriver浏览器驱动。代码里一行代码就能自动识别本地浏览器版本,自动下载对应驱动、配置系统环境路径。

搭配 selenium-java 使用,大幅简化自动化初始化代码。

3.2.3commons-io(Apache IO 工具包)

作用:Apache 提供的文件 / IO 操作工具类,封装大量简化文件读写、文件夹复制删除、流处理、文件遍历的工具方法。

本项目用于屏幕截图

3.2.4进行项目同步

鼠标右键 点击Maven再点击同步项目,之后可以在右侧检查依赖项是否添加

3.3创建common包并在包中创建Selenium 工具类Utils. java

创建包并添加合适名称common

在包中创建Java类并添加合适名称Utils

Selenium 工具类Utils

代码:

3.3.1全局成员变量

java

运行

  • static WebDriver driver:静态全局驱动,所有地方共用同一个浏览器窗口,单例思想。
  • WebDriverWait:Selenium 显式等待,精准等待元素出现,比全局隐式等待更稳定。

3.3.2构造方法public Utils(String url)

java

运行

作用:实例化Utils工具类时,自动启动浏览器并打开指定网页,同时创建等待器。

3.3.3浏览器创建方法createDriver()核心初始化

java

运行

关键功能:

  1. 自动管理驱动:不用手动下载 chromedriver,WebDriverManager 自动处理。
  2. 单例浏览器:只创建一次 Chrome 实例,防止多开浏览器占用资源。
  3. Chrome 参数--remote-allow-origins=*:修复 Selenium4 高版本和 Chrome 新版本跨域报错。
  4. 隐式等待 3 秒:全局查找元素通用等待时长。

3.3.4截图方法ScreenShot(String str)(依赖 commons-io)

java

运行

说明:

  1. 自动按日期分文件夹存储截图,方便分类管理
  2. 入参str是自定义标记(比如传入 "登录失败"、"数据页面",区分截图场景)。
  3. 文件命名带时分秒,避免同场景截图覆盖。
  4. 抛出IOException,调用时需要捕获或向上抛出异常。

3.3.5关闭浏览器方法quit()

java

运行

  • driver.quit():关闭所有窗口 + 结束 chromedriver 进程;
  • 如果用driver.close()只会关当前标签页,驱动后台残留。

3.4入口类 RunTests

创建并添加名称

代码:

作用:

自动化测试执行入口,严格按照业务流程串行跑完整业务链路:登录 → 查看博客列表 → 新建发布博客 → 详情页编辑 → 详情页删除 → 关闭浏览器抛出IOException是因为截图方法需要文件 IO 异常处理,InterruptedException兼容页面等待休眠。

3.5创建tests包并在包中创建参照测试用例编写的Java类

3.5.1LoginPage 登录页面(继承 Utils)

3.5.1.1 构造方法

java

运行

调用父类Utils构造器:自动启动浏览器、打开登录页面、初始化等待器。

3.5.1.2 checkPageRight ():登录页面元素完整性校验

java

运行

  • 原理:findElement找不到元素会直接抛异常,以此校验页面元素正常加载;
  • 截图自动用方法名命名,方便区分哪一步的页面快照。
3.5.1.3LoginSus ():正常登录(正向用例)

java

运行

3.5.1.4LoginFail ():错误密码登录(反向用例)

java

运行

测试场景:密码错误时弹出提示框,自动化捕获并关闭弹窗。


3.5.2. ListPage 博客列表页面(继承 Utils)

核心方法checkBlogList():校验列表文章信息 + 跳转详情页

java

运行

关键知识点

  • assert断言:自动化测试判断结果是否正确,断言失败程序直接终止;
  • 跳转后保存详情页 URL,DetailPage可以直接复用这个地址,不用重新拼接。

3.5.3 EditPage 新建博客编辑页面(继承 Utils)

方法editSuc():测试新建博客发布成功完整流程

java

运行

重点细节

文本编辑器(CodeMirror)是特殊 DOM,直接sendKeys不生效,必须用Actions模拟鼠标点击激活输入框再输入内容。


3.5.4 DetailPage 博客详情页面(继承 Utils)

3.5.4。1 checkDetailEdit ():详情页编辑更新博客

java

运行

3.5.4.2 checkDetailDel ():详情页删除博客

java

运行


整套代码完整业务流程串联

  1. 启动 Chrome 浏览器(Utils.createDriver)
  2. 打开登录页:校验页面元素 → 错误密码登录(弹窗)→ 正确账号登录
  3. 进入博客列表页:校验文章标题 / 时间 / 内容 → 点击查看全文跳详情,保存详情 URL
  4. 打开新建博客编辑页:填写动态标题、富文本内容 → 发布博客
  5. 回到详情页:编辑更新标题、校验修改生效 → 删除博客
  6. 全部用例执行完毕,关闭浏览器释放驱动

4. 自动化测试对比手工测试:特点与核心优势

4.1 Java Selenium 自动化测试特点

  1. 适合重复回归场景:版本迭代后核心流程重复校验无需人工重复操作;
  2. 存在开发、维护成本:页面前端 CSS / 按钮文字修改时,需要同步更新 Java 代码中的元素定位;
  3. 仅覆盖标准流程:复杂 UI 视觉校验、细微交互体验仍需要手工测试补充;
  4. 自带日志 + 截图留存:报错自动保存页面截图,快速定位失败场景;
  5. 依赖环境稳定:测试服务器、浏览器版本变更会影响脚本执行稳定性。

4.2 自动化测试核心优点

  1. 分层 PO 架构解耦:页面、工具、用例完全分离,代码可读性高,定位缺陷模块简单;
  2. 全局单例驱动封装:统一管理浏览器实例,避免重复创建驱动消耗内存,提升执行速度;
  3. 多等待机制兼容页面渲染:全局隐式等待 + 局部显示等待,解决前端异步加载导致的元素找不到问题,比人工盯守页面更稳定;
  4. 自动截图归档:每条测试步骤留存页面快照,失败场景无需复现即可分析问题;
  5. 批量一键回归:新版本上线前一键执行全部核心流程用例,短时间完成全流程校验,大幅节省测试人力;
  6. 标准化断言校验:所有预期结果通过代码断言固化,不存在人工测试主观判断误差。

5. Java 完整自动化测试源码仓库链接

Gitee 开源仓库(https://gitee.com/ma-ziy/java-automated-testing.git)