- Create comprehensive test plan for Phase 5 features (74 test cases) - Test coverage for: - Batch operations (multi-page selection, batch stamp add/delete) - Batch export (selected/all/split modes) - Seal library (save/load/delete with settings) - Performance (virtual scrolling, Web Worker, memory usage) - Compatibility (Chrome/Firefox/Safari, mobile) - Edge cases (empty PDF, 2000 pages, localStorage full) - Test plan includes: step-by-step instructions, expected results, pass/fail columns - Format: Markdown table for easy manual testing Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
233 lines
10 KiB
Markdown
233 lines
10 KiB
Markdown
# PDF Stamper Phase 5 测试计划
|
||
|
||
**测试版本**: v1.5.0
|
||
**测试日期**: 2026-04-03
|
||
**测试范围**: Phase 5 所有新增功能
|
||
|
||
---
|
||
|
||
## 测试环境
|
||
|
||
| 项目 | 要求 |
|
||
|------|------|
|
||
| 浏览器 | Chrome 120+, Firefox 120+, Safari 17+ |
|
||
| 测试文件 | 10页PDF, 100页PDF, 500页PDF |
|
||
| 内存限制 | 最小 4GB 可用内存 |
|
||
| 存储 | localStorage 可用 |
|
||
|
||
---
|
||
|
||
## 1. 批量操作测试 (Batch Operations)
|
||
|
||
### 1.1 多页选择
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| Ctrl+Click 单选 | 按住 Ctrl 点击缩略图 3, 5, 7 | 仅 3, 5, 7 页显示蓝色边框 | [ ] |
|
||
| Shift+Click 范围 | 点击第2页,Shift+点击第6页 | 2-6页全部选中(共5页) | [ ] |
|
||
| 全选按钮 | 点击"全选" | 所有页面被选中 | [ ] |
|
||
| 清除选择 | 点击"清除选择" | 所有页面取消选中 | [ ] |
|
||
| 连续 Shift+Click | 点击第3页 -> Shift+点击第8页 -> Shift+点击第1页 | 1-8页全部选中 | [ ] |
|
||
| 切换选中状态 | Ctrl+Click 第2页(已选中)-> Ctrl+Click 第2页(取消) | 第2页从选中变为未选中 | [ ] |
|
||
|
||
### 1.2 批量添加印章
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| 无选中页添加 | 不选择任何页面,点击"批量添加印章" | 提示"请先选择要添加印章的页面" | [ ] |
|
||
| 无印章添加 | 选中3页,但未选择印章图片,点击"批量添加印章" | 提示"请先选择印章图片" | [ ] |
|
||
| 选中3页添加 | 选中3页,选择印章,点击"批量添加印章" | 在3页中心位置添加印章,显示进度 | [ ] |
|
||
| 全选批量添加 | 全选20页,批量添加印章 | 所有20页都添加印章 | [ ] |
|
||
| 重复添加 | 对同一页连续批量添加2次 | 该页有2个重叠印章 | [ ] |
|
||
|
||
### 1.3 批量删除印章
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| 无选中页删除 | 不选择任何页面,点击"批量删除印章" | 提示"请先选择要删除印章的页面" | [ ] |
|
||
| 选中3页删除 | 选中3页(每页1个印章),点击"批量删除印章" | 3页的所有印章被删除 | [ ] |
|
||
| 全选删除 | 全选20页(每页1个印章),点击"批量删除" | 所有印章被删除 | [ ] |
|
||
| 空页面删除 | 选中没有印章的页面,点击"批量删除" | 不报错,提示"已从X页删除0个印章" | [ ] |
|
||
|
||
### 1.4 UI 视觉反馈
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| 选中边框 | 选择页面 | 蓝色边框(#3b82f6, 2px) | [ ] |
|
||
| 选中背景 | 选择页面 | 半透明蓝色背景 | [ ] |
|
||
| 页面指示器 | 选中3/20页 | 显示"选中 3/20 页" | [ ] |
|
||
| 批量工具栏 | 选中页面后 | 显示批量操作工具栏 | [ ] |
|
||
| 选中页面列表 | 选中 2,4,6页 | 显示"2, 4, 6" | [ ] |
|
||
|
||
---
|
||
|
||
## 2. 批量导出测试 (Batch Export)
|
||
|
||
### 2.1 导出选中页面
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| 无选中导出 | 不选择页面,点击"导出选中页面" | 提示"请先选择要导出的页面" | [ ] |
|
||
| 选中3页导出 | 选中 2,4,6页,点击"导出选中页面" | 生成包含 2,4,6页的 PDF | [ ] |
|
||
| 文件名格式 | 原文件 test.pdf,选中3页 | 文件名: test_选中3页.pdf | [ ] |
|
||
| 含印章导出 | 选中页有印章,导出 | 导出的 PDF 包含印章 | [ ] |
|
||
| 进度显示 | 导出10页 | 显示"正在生成文件..." 进度 0-100% | [ ] |
|
||
|
||
### 2.2 导出全部页面
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| 全部导出 | 点击"导出全部页面" | 生成包含所有页面的 PDF | [ ] |
|
||
| 无选中导出 | 未选中任何页面,点击"导出全部页面" | 仍导出所有页面 | [ ] |
|
||
| 文件名格式 | 原文件 test.pdf | 文件名: test.pdf(不变) | [ ] |
|
||
|
||
### 2.3 分别导出
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| 分别导出10页 | 点击"分别导出"(10页PDF) | 下载10个独立文件 | [ ] |
|
||
| 文件命名 | 原文件 test.pdf | test_page1.pdf, test_page2.pdf, ... | [ ] |
|
||
| 文件大小 | 每页独立文件 | 每个文件大小合理(与单页内容匹配) | [ ] |
|
||
| 含印章导出 | 某页有印章,分别导出 | 该页的独立文件包含印章 | [ ] |
|
||
| 进度显示 | 导出50页 | 显示"导出第 X/50 页" | [ ] |
|
||
|
||
### 2.4 导出提示
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| 有选中页面 | 选中 2,4,6页 | 显示"当前选中: 2, 4, 6 页" | [ ] |
|
||
| 无选中页面 | 不选择任何页面 | 显示"未选择页面,将导出全部页面" | [ ] |
|
||
| 选择变化 | 动态改变选中页面 | 提示自动更新 | [ ] |
|
||
|
||
---
|
||
|
||
## 3. 印章模板库测试 (Seal Library)
|
||
|
||
### 3.1 保存印章
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| 保存新印章 | 选择印章,设置旋转30°、亮度120%,点击"保存到印章库",输入"公章A" | 提示"印章已保存" | [ ] |
|
||
| 保存到满库 | 保存20个印章(上限) | 提示"印章库已满" | [ ] |
|
||
| 重名保存 | 保存同名"公章A" | 提示"将覆盖旧版本",旧印章被替换 | [ ] |
|
||
| 空名称保存 | 保存时不输入名称 | 提示"印章名称不能为空" | [ ] |
|
||
| 取消保存 | 点击"取消" | 不保存任何内容 | [ ] |
|
||
|
||
### 3.2 加载印章
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| 加载印章 | 点击印章库中"公章A"的"使用"按钮 | 印章预览、旋转角度、亮度全部恢复 | [ ] |
|
||
| 加载后添加 | 加载"公章A"(旋转30°),点击"添加普通章" | 添加的印章旋转30° | [ ] |
|
||
| 亮度恢复 | 加载亮度120%的印章 | 预览图亮度为120% | [ ] |
|
||
| 多个印章切换 | 依次加载"公章A"、"公章B" | 最终显示"公章B"的设置 | [ ] |
|
||
|
||
### 3.3 删除印章
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| 删除单个印章 | 点击"公章A"的"×"按钮 | 提示"已删除",印章从列表消失 | [ ] |
|
||
| 删除后加载 | 尝试加载已删除的印章 | 无反应或提示"印章不存在" | [ ] |
|
||
| 清空库 | 点击"清空印章库" | 二次确认对话框 | [ ] |
|
||
| 确认清空 | 确认清空 | 所有印章被删除 | [ ] |
|
||
| 取消清空 | 取消清空 | 印章库保持不变 | [ ] |
|
||
|
||
### 3.4 UI 显示
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| 网格布局 | 保存5个印章 | 2列网格显示,共3行 | [ ] |
|
||
| 印章预览 | 印章旋转30° | 缩略图显示旋转30° | [ ] |
|
||
| 印章名称 | 名称"公章A" | 显示在缩略图下方 | [ ] |
|
||
| 空状态 | 印章库为空 | 显示"暂无保存的印章" | [ ] |
|
||
| 滚动容器 | 保存15个印章 | 容器可滚动(max-height 300px) | [ ] |
|
||
| Hover 效果 | 鼠标悬停在印章上 | 边框变蓝,阴影效果 | [ ] |
|
||
|
||
---
|
||
|
||
## 4. 性能测试 (Performance)
|
||
|
||
### 4.1 虚拟滚动
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| 100页加载 | 加载100页 PDF | 缩略图容器只渲染可见区域(~10页) | [ ] |
|
||
| 500页加载 | 加载500页 PDF | 页面不崩溃,缩略图正常滚动 | [ ] |
|
||
| 滚动渲染 | 快速滚动缩略图容器 | 可见区域外的缩略图自动移除 | [ ] |
|
||
| 内存使用 | 500页PDF,打开 Task Manager | Chrome 内存 < 200MB | [ ] |
|
||
| 初始加载时间 | 加载100页 PDF | < 5秒 | [ ] |
|
||
|
||
### 4.2 Web Worker
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| Worker 消息 | 打开 Console,加载 PDF | 看到 "WORKER_READY" 消息 | [ ] |
|
||
| 非阻塞渲染 | 加载500页 PDF,拖动印章 | 拖动流畅,不卡顿 | [ ] |
|
||
| 并发操作 | 加载 PDF 时添加印章 | 两项操作都不阻塞 | [ ] |
|
||
|
||
### 4.3 综合性能
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| 页面切换 | 100页 PDF,从第1页跳到第100页 | < 200ms | [ ] |
|
||
| 批量操作速度 | 批量添加印章到50页 | 显示进度条,总时间 < 10秒 | [ ] |
|
||
| 导出速度 | 导出50页含印章 PDF | < 15秒 | [ ] |
|
||
|
||
---
|
||
|
||
## 5. 兼容性测试 (Compatibility)
|
||
|
||
### 5.1 浏览器兼容
|
||
|
||
| 测试项 | 浏览器 | 预期结果 | 状态 |
|
||
|--------|--------|----------|------|
|
||
| 批量选择 | Chrome 120+ | 正常工作 | [ ] |
|
||
| 批量选择 | Firefox 120+ | 正常工作 | [ ] |
|
||
| 批量选择 | Safari 17+ | 正常工作 | [ ] |
|
||
| 印章库 LocalStorage | 所有浏览器 | 数据持久化 | [ ] |
|
||
| 虚拟滚动 | 所有浏览器 | 平滑滚动 | [ ] |
|
||
|
||
### 5.2 移动端兼容
|
||
|
||
| 测试项 | 设备 | 预期结果 | 状态 |
|
||
|--------|------|----------|------|
|
||
| 批量选择 | iPad (Safari) | 触摸选择页面 | [ ] |
|
||
| 批量添加 | iPad (Safari) | 正常工作 | [ ] |
|
||
| 印章库 | iPad (Safari) | 滚动正常 | [ ] |
|
||
|
||
---
|
||
|
||
## 6. 边界测试 (Edge Cases)
|
||
|
||
| 测试项 | 操作步骤 | 预期结果 | 状态 |
|
||
|--------|----------|----------|------|
|
||
| 空 PDF (0页) | 加载 0页 PDF | 提示错误或无操作 | [ ] |
|
||
| 单页 PDF | 全选1页PDF | 只选中第1页 | [ ] |
|
||
| 超大文件 | 加载 2000页 PDF | 不崩溃,虚拟滚动正常工作 | [ ] |
|
||
| localStorage 满 | 保存20个大印章(>5MB) | 提示"存储空间不足" | [ ] |
|
||
| 中断操作 | 批量添加时关闭页面 | 无数据损坏 | [ ] |
|
||
| 无印章选择批量删除 | 选中页没有印章 | 提示"已删除0个印章" | [ ] |
|
||
|
||
---
|
||
|
||
## 测试结果汇总
|
||
|
||
| 模块 | 总测试数 | 通过 | 失败 | 备注 |
|
||
|------|---------|------|------|------|
|
||
| 批量操作 | 15 | [ ] | [ ] | |
|
||
| 批量导出 | 15 | [ ] | [ ] | |
|
||
| 印章模板库 | 20 | [ ] | [ ] | |
|
||
| 性能测试 | 10 | [ ] | [ ] | |
|
||
| 兼容性测试 | 8 | [ ] | [ ] | |
|
||
| 边界测试 | 6 | [ ] | [ ] | |
|
||
| **总计** | **74** | [ ] | [ ] | |
|
||
|
||
---
|
||
|
||
**测试人员**: ____________
|
||
**测试日期**: ____________
|
||
**整体结果**: [ ] 通过 [ ] 不通过
|
||
|
||
**备注**:
|
||
______________________________
|
||
______________________________
|