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

4.8 KiB
Raw Blame History

测试策略

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 仓库各版本分支取得对应样例:

3.8
4.0
4.1
4.2
4.3

每份资源由 manifest 记录:

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. 语义回归

转换前后生成规范摘要并比较:

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 在断网环境可用。
  • 不含开发日志、绝对源码路径、测试缓存或调试密钥。