目录
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,仅输入匹配数据库的用户名密码,才能成功跳转博客列表页。
- 页面 UI 展示:居中登录弹窗,用户名、密码输入框、绿色提交按钮、注册跳转链接,背景图正常渲染无错位。
- 正向场景:账号
zhangsan,密码123456- 预期:点击提交,自动跳转博客列表首页,左侧展示用户昵称、文章统计
- 实际:页面正常跳转,用户信息、已发布文章列表全部加载完成
- 异常场景 1:正确账号,错误密码(zhangsan / 12345)
- 预期:弹窗提示「用户密码不正确」,停留在登录页
- 预期:弹窗提示「用户密码不正确」,停留在登录页
- 异常场景 2:错误账号,正确密码(wangwu / 123456)
- 预期:弹窗提示「用户不存在」
- 预期:弹窗提示「用户不存在」
- 异常场景 3:错误账号 + 错误密码(wangwu / 12345)
- 预期:弹窗提示「用户不存在」
- 预期:弹窗提示「用户不存在」
- 异常场景 4:用户名 / 密码全部为空直接提交
- 预期:前端校验弹窗「用户名不能为空」,不发起后端请求
- 预期:前端校验弹窗「用户名不能为空」,不发起后端请求
2.4 博客列表页面测试
登录成功后自动进入列表页,页面分为左侧用户信息栏、右侧文章列表区、顶部导航栏。
- 左侧栏:展示用户头像、昵称、文章总数、分类数量;
- 右侧列表:每篇博客展示标题、发布日期、内容摘要、「查看全文」按钮;
- 分页控件:底部分页数字、上一页 / 下一页按钮;
- 校验点:已登录状态文章数量与数据库一致;未登录直接访问列表 URL 会强制跳转登录弹窗。
2.5 博客详情页面测试(点击博客列表页的查看全文进入)
点击列表「查看全文」携带 blogId 参数跳转详情页,权限区分核心:
- 页面元素:左侧用户信息,右侧博客标题、发布时间、完整正文;本人文章底部展示【编辑】【删除】绿色按钮;
- 权限校验:当前登录用户是文章作者:可读、可编辑、可删除;他人发布文章,隐藏编辑、删除按钮,仅只读;
- 删除交互:点击删除弹出确认弹窗,确认后删除当前文章,自动返回列表页,文章总数 - 1。
2.6 博客编辑页面测试
顶部导航栏点击「写博客」进入富文本编辑页,用于新增博客。页面组成:顶部富文本工具栏、标题输入框、正文编辑区、右上角橙色「发布文章」按钮。
2.6.1 发布博客测试
- 约束规则:标题、正文任意一项为空,点击发布触发前端拦截提示,不提交数据;
- 正向流程:填写标题 + 正文,点击发布;
- 预期:自动跳转博客列表页,左侧文章数量 + 1,列表第一条展示最新发布博客;
- 实际:页面正常刷新,新增文章置顶展示,数据库同步新增记录。
2.7 博客退出功能测试
页面右上角导航栏存在「注销」按钮:
- 点击注销,清除浏览器 session 会话;
- 预期效果:强制跳转登录页面,用户名、密码输入框自动清空,无缓存残留;
- 校验:浏览器回退按钮无法重新进入列表、详情、编辑页面,全部拦截至登录弹窗。
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
运行
关键功能:
- 自动管理驱动:不用手动下载 chromedriver,WebDriverManager 自动处理。
- 单例浏览器:只创建一次 Chrome 实例,防止多开浏览器占用资源。
- Chrome 参数
--remote-allow-origins=*:修复 Selenium4 高版本和 Chrome 新版本跨域报错。 - 隐式等待 3 秒:全局查找元素通用等待时长。
3.3.4截图方法ScreenShot(String str)(依赖 commons-io)
java
运行
说明:
- 自动按日期分文件夹存储截图,方便分类管理
- 入参
str是自定义标记(比如传入 "登录失败"、"数据页面",区分截图场景)。 - 文件命名带时分秒,避免同场景截图覆盖。
- 抛出
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
运行
整套代码完整业务流程串联
- 启动 Chrome 浏览器(Utils.createDriver)
- 打开登录页:校验页面元素 → 错误密码登录(弹窗)→ 正确账号登录
- 进入博客列表页:校验文章标题 / 时间 / 内容 → 点击查看全文跳详情,保存详情 URL
- 打开新建博客编辑页:填写动态标题、富文本内容 → 发布博客
- 回到详情页:编辑更新标题、校验修改生效 → 删除博客
- 全部用例执行完毕,关闭浏览器释放驱动
4. 自动化测试对比手工测试:特点与核心优势
4.1 Java Selenium 自动化测试特点
- 适合重复回归场景:版本迭代后核心流程重复校验无需人工重复操作;
- 存在开发、维护成本:页面前端 CSS / 按钮文字修改时,需要同步更新 Java 代码中的元素定位;
- 仅覆盖标准流程:复杂 UI 视觉校验、细微交互体验仍需要手工测试补充;
- 自带日志 + 截图留存:报错自动保存页面截图,快速定位失败场景;
- 依赖环境稳定:测试服务器、浏览器版本变更会影响脚本执行稳定性。
4.2 自动化测试核心优点
- 分层 PO 架构解耦:页面、工具、用例完全分离,代码可读性高,定位缺陷模块简单;
- 全局单例驱动封装:统一管理浏览器实例,避免重复创建驱动消耗内存,提升执行速度;
- 多等待机制兼容页面渲染:全局隐式等待 + 局部显示等待,解决前端异步加载导致的元素找不到问题,比人工盯守页面更稳定;
- 自动截图归档:每条测试步骤留存页面快照,失败场景无需复现即可分析问题;
- 批量一键回归:新版本上线前一键执行全部核心流程用例,短时间完成全流程校验,大幅节省测试人力;
- 标准化断言校验:所有预期结果通过代码断言固化,不存在人工测试主观判断误差。
5. Java 完整自动化测试源码仓库链接
Gitee 开源仓库(https://gitee.com/ma-ziy/java-automated-testing.git)