Files
SpineParticlesWeb/DateToSpine/docs/07-测试策略.md
T
2026-09-07 21:29:15 +08:00

196 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 测试策略
## 1. 测试目标
测试需要证明四件事:
1. 每个目标版本使用正确 Runtime 和 Editor。
2. 预览结果在语义和视觉上正确。
3. 生成 `.spine` 后运行时主体数据没有意外丢失。
4. 断网、损坏输入和批量失败情况下行为安全。
## 2. 测试层级
### 2.1 单元测试
不启动 Spine Editor
- 版本字符串解析
- Spine JSON schema 识别
- SKEL 头部有界探测
- Atlas parser
- 自动配对评分
- 路径规范化和逃逸防护
- 输出重名策略
- 恢复状态机
- 报告序列化
- Editor 命令参数生成
### 2.2 组件测试
- 每个 Runtime 插件独立加载相应版本资源。
- Texture Provider 解码 PNG、JPG、WebP。
- 统一 draw list 校验。
- 官方解包结果的尺寸、Alpha 与 golden image 对比。
- Editor Locator 使用模拟注册信息和目录结构。
### 2.3 Editor 集成测试
需要本地已激活的 Spine Editor
- `--version` 探测
- JSON 导入
- SKEL 导入
- Atlas 官方解包
- 临时工程导出规范化 JSON
- 最终 `.spine` 可重新读取
- 取消、超时和错误码映射
### 2.4 端到端测试
从目录扫描开始,经过预览、确认、解包、导入、验证和发布。检查输入目录完全未改变。
## 3. 版本矩阵
每个版本至少覆盖:
| 版本 | JSON | SKEL | 预览 | 官方解包 | 工程生成 | 语义回读 |
|---|---:|---:|---:|---:|---:|---:|
| 3.8.20+ | 必测 | 必测 | 必测 | 必测 | 必测 | 必测 |
| 4.0.x | 必测 | 必测 | 必测 | 必测 | 必测 | 必测 |
| 4.1.x | 必测 | 必测 | 必测 | 必测 | 必测 | 必测 |
| 4.2.x | 必测 | 必测 | 必测 | 必测 | 必测 | 必测 |
| 4.3.x | 必测 | 必测 | 必测 | 必测 | 必测 | 必测 |
## 4. 功能样本矩阵
- Region
- Unweighted/Weighted/Linked Mesh
- IK、Transform、Path constraints
- Clipping
- Deform
- Draw order
- Events
- 多动画、多 Skin
- Two Color Tint
- Normal/Additive/Multiply/Screen
- 单页、多页 Atlas
- PMA、Straight Alpha
- PNG、JPG/JPEG、WebP
- Atlas scale
- Polygon packing
不要求一个样本覆盖所有功能,采用可追踪的样本能力清单。
## 5. 官方测试资源
开发阶段从官方 `EsotericSoftware/spine-runtimes` 仓库各版本分支取得对应样例:
```text
3.8
4.0
4.1
4.2
4.3
```
每份资源由 manifest 记录:
```text
case id
source repository
branch
commit hash
relative paths
data version
features
expected animations/skins/counts
license reference
sha256
```
规则:
- 不用 4.3 资源测试旧 Runtime。
- 测试基于固定 commit,不追随浮动分支。
- 官方资源只放在开发测试缓存或 CI 临时空间。
- `tests/fixtures/external/` 不进入发行打包输入。
- 发行产物检查中把官方资源文件名和哈希作为禁止项。
- 未经许可确认,不把官方资源提交到对外发布制品。
## 6. 自有与生成测试数据
除官方样例外,创建可自由分发的最小数据用于:
- 安装后冒烟测试
- 损坏输入测试
- Unicode 路径测试
- 极限尺寸测试
- 输出命名冲突测试
生成数据的来源、生成脚本和许可必须清晰。若生成 `.spine`/导出数据需要 Spine Editor,构建产物仍按许可审查。
## 7. 视觉回归
在固定 viewport、背景、时间点、Skin 和动画下截图:
- 与批准的 golden image 比较。
- 对 JPG/WebP 使用合理像素误差。
- 对 Alpha 边缘增加专门区域检测。
- 单独测试 PMA 黑边、Straight Alpha 白边问题。
- GPU 差异造成的小量误差采用阈值,不使用完全逐字节相等。
## 8. 语义回归
转换前后生成规范摘要并比较:
```text
bones
slots
skins
attachments by type
constraints by type
animations and duration
events
deform timelines
draw-order timelines
```
Nonessential 数据单独报告,不与运行时语义失败混合。
## 9. 异常与安全测试
- 截断 SKEL
- 超长字符串和伪造数组长度
- 深层/异常 JSON
- Atlas 路径逃逸
- 重复 region 和页面
- 缺失或损坏图片
- 巨大图片和解压炸弹式输入
- Editor 路径失效
- Editor 未激活
- 子进程卡住、崩溃、返回非零
- 用户在各阶段取消
- 输出目录无权限或空间不足
## 10. 离线测试
在 macOS 和 Windows 上分别执行:
1. 准备并验证对应 Editor 版本。
2. 禁用网络接口或在隔离环境阻断网络。
3. 启动 DateToSpine。
4. 完成扫描、预览、官方解包、生成和回读。
5. 记录任何网络连接尝试。
6. 确认不存在 CDN、在线字体、在线 Shader、更新或遥测依赖。
## 11. 发行物检查
对最终 `.app/.dmg/.exe/installer` 解包检查:
- 不含官方测试素材。
- 不含 Spine Editor。
- 包含 Runtime License 和 Third-Party Notices。
- 包含所需 Qt 图片插件,WebP 在断网环境可用。
- 不含开发日志、绝对源码路径、测试缓存或调试密钥。