Files
keyboard/docs/testing-checklist.md
2026-03-02 09:19:06 +08:00

363 lines
9.0 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. 在 Xcode 中添加新文件
按照 `xcode-file-addition-guide.md` 的指引,将以下文件添加到工程:
- [ ] `Shared/Resource/kb_input_profiles.json`
- [ ] `Shared/KBInputProfileManager.h`
- [ ] `Shared/KBInputProfileManager.m`
- [ ] `CustomKeyboard/Manager/KBKeyboardLayoutResolver.h`
- [ ] `CustomKeyboard/Manager/KBKeyboardLayoutResolver.m`
### 2. 编译验证
- [ ] 主 App 编译通过(无错误)
- [ ] 扩展编译通过(无错误)
---
## 功能测试
### 测试 1: 主 App 语言选择界面
#### 1.1 进入语言选择页
- [ ] 打开主 App
- [ ] 进入"个人资料"页面
- [ ] 看到 "Input Language" 行
- [ ] 点击进入语言选择页
#### 1.2 单布局语言测试(英语、葡萄牙语、印尼语)
**测试步骤**:
1. 选择"English"
2. 检查底部是否显示 `Confirm` 按钮
3. 点击语言行,确认不会立即触发切换
4. 点击 `Confirm` 按钮
**预期结果**:
- [ ] 底部显示 `Confirm` 按钮
- [ ] 点击语言行仅更新选中态(显示 ✓)
- [ ] 点击 `Confirm` 后才触发切换
- [ ] 显示切换成功提示
- [ ] 返回个人资料页,"Input Language" 显示 "English"
**重复测试**:
- [ ] 葡萄牙语Português
- [ ] 印尼语Bahasa Indonesia
#### 1.3 多布局语言测试(西班牙语)
**测试步骤**:
1. 选择"Español"
2. 检查底部 `Confirm` 按钮是否隐藏
3. 确认自动进入 "Choose Layout" 页面
4. 看到三个布局选项QWERTY / AZERTY / QWERTZ
5. 选择 "AZERTY"
6. 点击 `Confirm` 按钮
**预期结果**:
- [ ] 语言页底部 `Confirm` 按钮隐藏
- [ ] 自动进入布局选择页
- [ ] 布局页显示三个选项
- [ ] 布局页底部显示 `Confirm` 按钮
- [ ] 点击布局行仅更新选中态
- [ ] 点击 `Confirm` 后才触发切换
- [ ] 返回个人资料页,显示 "Español · AZERTY"
**重复测试其他布局**:
- [ ] QWERTY
- [ ] QWERTZ
#### 1.4 繁体中文多布局测试
**测试步骤**:
1. 选择"繁體中文(台灣)"
2. 进入布局选择页
3. 看到三个布局选项:
- 拼音(繁體)
- 注音全鍵盤
- 注音標準
4. 分别测试每个布局
**预期结果**:
- [ ] 拼音(繁體)选择成功
- [ ] 注音全鍵盤选择成功
- [ ] 注音標準选择成功
- [ ] 每次切换后返回个人资料页显示正确
---
### 测试 2: App Group 数据写入验证
使用以下代码在主 App 中验证数据写入:
```objc
NSUserDefaults *appGroup = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.loveKey.nyx"];
NSString *profileId = [appGroup stringForKey:@"AppGroup_SelectedKeyboardProfileId"];
NSString *languageCode = [appGroup stringForKey:@"AppGroup_SelectedKeyboardLanguageCode"];
NSString *layoutVariant = [appGroup stringForKey:@"AppGroup_SelectedKeyboardLayoutVariant"];
NSLog(@"ProfileId: %@", profileId);
NSLog(@"LanguageCode: %@", languageCode);
NSLog(@"LayoutVariant: %@", layoutVariant);
```
**验证项**:
- [ ] 切换到英语后profileId = "en_US_qwerty"
- [ ] 切换到西班牙语 AZERTY 后profileId = "es_ES_azerty"
- [ ] 切换到繁体拼音后profileId = "zh_Hant_TW_pinyin"
- [ ] 切换到注音全键盘后profileId = "zh_Hant_TW_bopomofo_full"
- [ ] languageCode 和 layoutVariant 也正确写入
---
### 测试 3: 扩展侧布局切换
#### 3.1 英语 QWERTY 布局
**测试步骤**:
1. 在主 App 中切换到"English"
2. 打开任意应用(如备忘录)
3. 调出键盘
**预期结果**:
- [ ] 键盘第一行显示: `q w e r t y u i o p`
- [ ] 键盘第二行显示: `a s d f g h j k l`
- [ ] 键盘第三行显示: `z x c v b n m`
#### 3.2 西班牙语 AZERTY 布局
**测试步骤**:
1. 在主 App 中切换到"Español · AZERTY"
2. 打开任意应用
3. 调出键盘
**预期结果**:
- [ ] 键盘第一行显示: `a z e r t y u i o p`
- [ ] 键盘第二行显示: `q s d f g h j k l m`
- [ ] 键盘第三行显示: `w x c v b n`
#### 3.3 西班牙语 QWERTZ 布局
**测试步骤**:
1. 在主 App 中切换到"Español · QWERTZ"
2. 打开任意应用
3. 调出键盘
**预期结果**:
- [ ] 键盘第一行显示: `q w e r t z u i o p`
- [ ] 键盘第二行显示: `a s d f g h j k l`
- [ ] 键盘第三行显示: `y x c v b n m`
#### 3.4 繁体拼音布局
**测试步骤**:
1. 在主 App 中切换到"繁體中文(台灣)· 拼音(繁體)"
2. 打开任意应用
3. 调出键盘
**预期结果**:
- [ ] 键盘布局为 QWERTY与英语相同
- [ ] 输入字母时显示联想栏
- [ ] 联想词为繁体中文(如:你好、謝謝)
#### 3.5 繁体注音全键盘布局
**测试步骤**:
1. 在主 App 中切换到"繁體中文(台灣)· 注音全鍵盤"
2. 打开任意应用
3. 调出键盘
**预期结果**:
- [ ] 键盘显示注音符号
- [ ] 第一行包含: ㄅ ㄉ ˇ ˋˊ ˙ ㄚ ㄞ ㄢ
- [ ] 第二行包含: ㄆ ㄊ ㄍ ㄐ ㄔ ㄗ ㄧ ㄛ ㄟ ㄣ
- [ ] 第三行包含: ㄇ ㄋ ㄎ ㄑ ㄕ ㄘ ㄨ
- [ ] 输入注音时显示联想栏
- [ ] 联想词为繁体中文
#### 3.6 繁体注音标准布局
**测试步骤**:
1. 在主 App 中切换到"繁體中文(台灣)· 注音標準"
2. 打开任意应用
3. 调出键盘
**预期结果**:
- [ ] 键盘显示注音符号(标准排列)
- [ ] 第一行包含: ㄅ ㄆ ㄇ ㄈ ㄉ ㄊ ㄋ ㄌ ㄍ ㄎ
- [ ] 第二行包含: ㄏ ㄐ ㄑ ㄒ ㄓ ㄔ ㄕ ㄖ ㄗ
- [ ] 第三行包含: ㄘ ㄙ ㄧ ㄨ ㄩ ㄚ ㄛ
- [ ] 输入注音时显示联想栏
- [ ] 联想词为繁体中文
---
### 测试 4: 联想引擎切换
#### 4.1 拉丁字母联想(英语、西班牙语、葡萄牙语、印尼语)
**测试步骤**:
1. 切换到英语
2. 在键盘上输入 "app"
**预期结果**:
- [ ] 联想栏显示英文单词app, apple, apply, application
- [ ] 选择联想词后正确插入
#### 4.2 繁体拼音联想
**测试步骤**:
1. 切换到"繁體中文(台灣)· 拼音(繁體)"
2. 在键盘上输入拼音
**预期结果**:
- [ ] 联想栏显示繁体中文词汇
- [ ] 选择联想词后正确插入繁体字
#### 4.3 注音联想
**测试步骤**:
1. 切换到"繁體中文(台灣)· 注音全鍵盤"
2. 在键盘上输入注音符号
**预期结果**:
- [ ] 联想栏显示繁体中文词汇
- [ ] 选择联想词后正确插入繁体字
---
### 测试 5: 皮肤下发
#### 5.1 繁体中文皮肤
**测试步骤**:
1. 切换到"繁體中文(台灣)"
2. 检查键盘皮肤
**预期结果**:
- [ ] 皮肤请求已发布(检查日志)
- [ ] 使用 `normal_hei_them.zip` 皮肤
#### 5.2 其他语言皮肤
**测试步骤**:
1. 切换到英语/西班牙语/葡萄牙语/印尼语
2. 检查键盘皮肤
**预期结果**:
- [ ] 皮肤请求已发布
- [ ] 使用 `normal_them.zip` 皮肤
---
### 测试 6: 异常情况处理
#### 6.1 空 profileId
**测试步骤**:
1. 清空 App Group 中的 profileId
2. 打开键盘
**预期结果**:
- [ ] 键盘不崩溃
- [ ] 回退到默认布局(英语 QWERTY
#### 6.2 无效 profileId
**测试步骤**:
1. 在 App Group 中写入无效的 profileId如 "invalid_profile"
2. 打开键盘
**预期结果**:
- [ ] 键盘不崩溃
- [ ] 回退到默认布局(英语 QWERTY
#### 6.3 布局 JSON 缺失
**测试步骤**:
1. 在配置中引用一个不存在的 layoutJsonId
2. 打开键盘
**预期结果**:
- [ ] 键盘不崩溃
- [ ] 回退到默认布局letters
---
### 测试 7: 切换流畅性
#### 7.1 快速切换语言
**测试步骤**:
1. 快速连续切换多个语言
2. 每次切换后立即打开键盘
**预期结果**:
- [ ] 每次切换都能正确应用
- [ ] 键盘布局正确
- [ ] 无崩溃或卡顿
#### 7.2 跨应用切换
**测试步骤**:
1. 在主 App 中切换语言
2. 打开备忘录,调出键盘
3. 返回主 App再次切换语言
4. 返回备忘录,调出键盘
**预期结果**:
- [ ] 键盘布局正确更新
- [ ] 联想引擎正确切换
---
## 性能测试
### 1. 启动性能
- [ ] 键盘首次加载时间 < 1 秒
- [ ] 切换布局时无明显延迟
### 2. 内存占用
- [ ] 键盘内存占用正常(< 50MB
- [ ] 切换布局后无内存泄漏
### 3. 日志检查
查看控制台日志,确认:
- [ ] 布局切换日志正确输出
- [ ] 联想引擎切换日志正确输出
- [ ] 无异常错误日志
---
## 回归测试
### 1. 原有功能不受影响
- [ ] 数字面板正常工作
- [ ] 符号面板正常工作
- [ ] Emoji 面板正常工作
- [ ] 聊天功能正常工作
- [ ] 设置页面正常工作
### 2. 原有语言功能
- [ ] 简体中文输入正常
- [ ] 英语输入正常
---
## 测试结果汇总
### 通过的测试
- [ ] 主 App 语言选择界面
- [ ] App Group 数据写入
- [ ] 扩展侧布局切换
- [ ] 联想引擎切换
- [ ] 皮肤下发
- [ ] 异常情况处理
- [ ] 切换流畅性
- [ ] 性能测试
- [ ] 回归测试
### 发现的问题
记录测试过程中发现的问题:
1.
2.
3.
### 待优化项
记录需要优化的地方:
1.
2.
3.
---
## 测试完成签名
- 测试人员: _______________
- 测试日期: _______________
- 测试结果: ☐ 通过 ☐ 部分通过 ☐ 未通过