Appearance
测试文档索引
本目录存放筷字输入法 v4 版本的单元测试文档。每个测试文档对应一个开发计划,与计划同名,由软件验收员负责编写、维护和验证。测试文档在开发计划验收时同步更新。
核心原则
只有软件验收员才能编写和更新单元测试用例:软件开发员负责实现功能代码,软件验收员负责编写测试用例、验证实现是否符合设计、确保测试用例真正通过。这种职责分离确保测试从独立视角检验代码质量,避免开发员「自产自销」导致测试流于形式。
测试用例必须真正通过:每个测试用例的执行结果必须可验证、可复现。如果测试用例无法通过,说明功能实现存在缺陷或测试设计本身存在问题,必须修正后才能标记为通过。纸面上「写完」测试用例不等于完成,运行通过才算数。
测试与开发计划绑定:测试文档对应开发计划而非设计文档。开发计划中的任务除了相应的代码和文档等已编写外,相关的单元测试也必须全部测试通过才能标记为已完成。测试文档在开发计划验收时同步更新。
文档列表
测试文档在对应开发计划创建后由验收员编写,以下为待创建的开发计划及对应的测试文档占位。
| 开发计划 | 测试文档 | 测试范围 | 状态 |
|---|---|---|---|
| (待创建) | (与计划同名) | 键盘状态机、Intent 处理、状态转换(对应设计 100) | 📋待编写 |
| (待创建) | (与计划同名) | ImeEngine API、ImeConfig、ImeOutput、ImeDictProvider(对应设计 160) | 📋待编写 |
| (待创建) | (与计划同名) | InputList 不可变操作、游标、撤销 / 重做(对应设计 200) | 📋待编写 |
| (待创建) | (与计划同名) | Room DAO、ImeDictProvider 实现、字典查询、升级迁移(对应设计 300) | 📋待编写 |
| (待创建) | (与计划同名) | ConfigRepository、ImeConfig 运行时优先、DataStore(对应设计 500) | 📋待编写 |
| (待创建) | (与计划同名) | ClipboardProvider、FavoritesRepository、Feature 裁剪(对应设计 600) | 📋待编写 |
| (待创建) | (与计划同名) | UserDataService、JSON 序列化、替换 / 合并、SAF(对应设计 800) | 📋待编写 |
| (待创建) | (与计划同名) | ImeLog 分级、持久化、崩溃拦截(对应设计 900) | 📋待编写 |
| (待创建) | (与计划同名) | InputActionPlayer、脚本编译、回放(对应设计 930) | 📋待编写 |
测试文档编写规范
测试状态说明
| 状态 | 说明 |
|---|---|
| 📋待编写 | 测试文档尚未创建,测试用例尚未编写 |
| 🔄编写中 | 验收员正在编写测试用例 |
| ✅已通过 | 所有测试用例已编写完成,且在当前代码上全部执行通过 |
| ❌未通过 | 部分测试用例执行失败,需开发员修正代码或验收员修正测试 |
| ⏸️暂停 | 测试编写或执行暂停,需说明原因 |
角色与权限
| 角色 | 可执行的操作 | 不可执行的操作 |
|---|---|---|
| 软件验收员 | 编写和更新测试用例文档、执行测试、记录测试结果、标记测试状态 | 修改功能实现代码 |
| 软件开发员 | 根据测试失败结果修正功能代码 | 修改测试用例文档(只能提交缺陷反馈) |
| 设计师 | 更新测试文档索引、调整测试范围 | 修改测试用例的具体内容和预期结果 |
测试文件组织
单元测试代码与测试文档紧密对应,测试代码按模块和功能组织在源码目录中:
code/
├── ime-engine/src/test/ ← :ime-engine 库单元测试
│ └── org/crazydan/studio/app/ime/kuaizi/engine/
│ ├── api/ ← 引擎公开 API 测试
│ │ ├── ImeEngineTest.kt
│ │ ├── ImeConfigTest.kt
│ │ └── ImeOutputTest.kt
│ ├── domain/ ← 领域逻辑测试
│ │ ├── KeyboardStateMachineTest.kt
│ │ ├── InputListTest.kt
│ │ └── CandidateListPagerTest.kt
│ └── dict/ ← 字典接口测试
│ └── ImeInMemoryDictProviderTest.kt
│
├── ime-ui/src/test/ ← :ime-ui 库单元测试
│ └── org/crazydan/studio/app/ime/kuaizi/ui/
│ └── theme/ ← 主题系统测试
│ └── KeyboardThemeTest.kt
│
└── app/src/test/ ← :app 模块单元测试
└── org/crazydan/studio/app/ime/kuaizi/
├── config/ ← 配置系统测试
│ └── ConfigRepositoryTest.kt
├── clipboard/ ← 剪贴板测试
├── favorite/ ← 收藏测试
├── userdata/ ← 用户数据导入导出测试
└── logging/ ← 日志系统测试注意:截图对比测试(Paparazzi)和 UI 测试工具相关代码不属于单元测试范畴,其组织方式见设计文档 910。